Arduino + HC-05 + Nepixel Ring !! Hilfe !!

Hallo an euch alle :slight_smile:

mein Name ist Martin aus Leonberg.
Ich habe folgendes Problem : Ich versuche seit 1 Woche den Nano + Bluetooth HC 05 + Neopixel Ring zum Laufen zu bekommen… :confused:

Also der Neopixel (12) geht mit dem Nano perfekt, da klappt alles. Nun möchte ich den Ring per HC 05 und Handy steuern… und das klappt nicht.

Der HC 05 ist RX - TX und TX -RX an Port 0 und 1 angeschlossen. Das koppeln mit dem Handy klappt auch… auch wenn ich dann die Farben auf der App ändern möchte BLINKT das RX auf dem Arduino…
aber nix passiert.

Hier mal den Code den ich benutze, um Hilfe wäre ich echt dankbar, bin mit meinem Latein am Ende :frowning:

LG MARTIN

/*
Connect Bluetooth RX,TX to Arduino RX,TX
Requires NeoPixel Library
https://github.com/adafruit/Adafruit_NeoPixel
If you want to view via Serial Monitor and have your Arduino connect to BT module 
simultaneously use Software Serial to open a second port.
include <SoftwareSerial.h>
SoftwareSerial mySerial(3, 4); // RX, TX
*/



#include <Adafruit_NeoPixel.h>
#include <SoftwareSerial.h>
SoftwareSerial mySerial(0, 1); // RX, TX

int red,green,blue;
Adafruit_NeoPixel strip = Adafruit_NeoPixel(12, 6, NEO_GRB + NEO_KHZ800);

void setup() {
 strip.begin();
 strip.show(); // Initialize all pixels to 'off'

 // initialize serial:
 Serial.begin(9600);
 // mySerial.begin(9600);
}

void loop() {
 // if there's any serial available, read it:
 while (Serial.available() > 0) {

   // look for the next valid integer in the incoming serial stream:
   int red = Serial.parseInt(); 
   // do it again:
   int green = Serial.parseInt(); 
   // do it again:
   int blue = Serial.parseInt(); 

   // look for the newline. That's the end of your
   // sentence:
   // if (mySerial.read() == '\n') {
   if (Serial.read() == '\n') {
     // sends confirmation
     Serial.println("received");
     // constrain the values to 0 - 255
     red = constrain(red, 0, 255);
     green = constrain(green, 0, 255);
     blue = constrain(blue, 0, 255);
     // fill strip
     colorSet(strip.Color(red, green, blue), 0); 
     
     // send some data back
     mySerial.println("received:"+String(red)+","+String(green)+","+String(blue));
    
  }
}
}

// Fill strip with a color
void colorSet(uint32_t c, uint8_t wait) {
 for(uint16_t i=0; i<strip.numPixels(); i++) {
     strip.setPixelColor(i, c);
 }
  strip.show();
  delay(wait);
}

Achso der Ring ist auf Pin 6 .... ich sende mal noch Paar Fotos gleich.

Das hier habe ich auch probiert... hat auch nicht geklappt :frowning:

Ich weis das man über die Arduino Software den Seriell Monitor benutzen kann... geht das irgendiwe das man dort sieht was der HC 05 sendet? also was für Daten er schickt?

psyconotics:
Ich habe folgendes Problem ...

Fasse den Code am besten in „Code-Tags“, damit er besser lesbar wird.

Wenn Du das tust, sieht Dein Code wie das hier aus.

Was mir beim schnellen Querlesen aufgefallen ist: Du verwendest die Pins 0 und 1 für SoftSerial. Vielleicht gibt es Probleme, weil die Pins 0 und 1 auch für die „ganz normale“ serielle Kommunikation benutzt werden. Probiere mal andere Pins.

Gruß

Gregor

Hi gregorss ,

habe es in CODE gepackt :slight_smile: danke für die Info.

Ja das dachte ich auch.... weil SoftwareSerial ja Software Ports sind... der Nano aber Hardware Pins hat... die 0 und 1...

Kann ich das irgenwie umgehen die SoftwareSerial zu nutzen und NUR die Hardware Pins nutzen????

aber wenn ich die Pins auf 7 und 8 ändere passiert das selbe :frowning: die RX leuchtet wenn ich die App berühre aber nix passiert.

LG Martin

Schön, dass Du das mit den Code-Tags gemacht hast. Beim Lesen macht das ganz schön was aus.

psyconotics:
Ja das dachte ich auch.... weil SoftwareSerial ja Software Ports sind... der Nano aber Hardware Pins hat... die 0 und 1...
Kann ich das irgenwie umgehen die SoftwareSerial zu nutzen und NUR die Hardware Pins nutzen????

Was Deine weiter gehenden Fragen angeht: Bis auf den Nano kenne ich keine der Komponenten, die Du verwendest. Ich fürchte, Du musst auf jemanden warten, der mehr Ahnung hat als ich (davon gibts viele :-). Falls mir noch etwas einfällt, bekommst Du auf jeden Fall Bescheid.

Gruß

Gregor

Hier noch ein Bild :

Ach was mir auch noch aufgefallen ist..... Wenn der Hc 05 an Pin 0 und 1 Angeschlossen ist, kann ich nichts auf den Nano Laden... dann kommen immer Fehler von Timeout... wenn ich dann Pin 0 und 1 entferne geht das Upload wieder.... soll das so sein?

psyconotics:
Ach was mir auch noch aufgefallen ist..... Wenn der Hc 05 an Pin 0 und 1 Angeschlossen ist, kann ich nichts auf den Nano Laden... dann kommen immer Fehler von Timeout... wenn ich dann Pin 0 und 1 entferne geht das Upload wieder.... soll das so sein?

Da dürfte eben das stören, was ich oben geschrieben habe. Wegen solcher Sachen gucke ich, dass ich die Pins 0 und 1 für nichts Anderes verwende.

Uh ... shit ... was ist das wieder spät ... böses Ührchen ...

Gute Nacht

Gregor

So habe das jetzt mal auf Pin 7 und 8…

#include <Adafruit_NeoPixel.h>
#include <SoftwareSerial.h>
SoftwareSerial mySerial(8, 7); // RX, TX

int red,green,blue;
Adafruit_NeoPixel strip = Adafruit_NeoPixel(12, 6, NEO_GRB + NEO_KHZ800);

void setup() {
  strip.begin();
  strip.show(); // Initialize all pixels to 'off'

  // initialize serial:
  Serial.begin(9600);
  // mySerial.begin(9600);
}

void loop() {
  // if there's any serial available, read it:
  while (Serial.available() > 0) {

    // look for the next valid integer in the incoming serial stream:
    int red = Serial.parseInt(); 
    // do it again:
    int green = Serial.parseInt(); 
    // do it again:
    int blue = Serial.parseInt(); 

    // look for the newline. That's the end of your
    // sentence:
    // if (mySerial.read() == '\n') {
    if (Serial.read() == '\n') {
      // sends confirmation
      Serial.println("received");
      // constrain the values to 0 - 255
      red = constrain(red, 0, 255);
      green = constrain(green, 0, 255);
      blue = constrain(blue, 0, 255);
      // fill strip
      colorSet(strip.Color(red, green, blue), 0); 
      
      // send some data back
      mySerial.println("received:"+String(red)+","+String(green)+","+String(blue));
     
   }
}
}

// Fill strip with a color
void colorSet(uint32_t c, uint8_t wait) {
  for(uint16_t i=0; i<strip.numPixels(); i++) {
      strip.setPixelColor(i, c);
  }
   strip.show();
   delay(wait);
}

Wenn ich jetzt aber die APP berühre blinkt nichts mehr auf dem Nano… kein RX und keine TX LED

Aber ich kann wieder auf den NANO Uploaden ohne das BT Modul trennen zu müssen

Du kannst dich nicht entscheiden ob du jetzt Serial oder SoftwareSerial (mySerial) verwenden willst

ich habe es jetzt auf SERIAL 0,1 umgestellt… wenn ich die APP berühre blinkt RX wieder… aber denn dennoch passiert nix… der Ring leibt aus…

#include <Adafruit_NeoPixel.h>


int red,green,blue;
Adafruit_NeoPixel strip = Adafruit_NeoPixel(12, 6, NEO_GRB + NEO_KHZ800);

void setup() {
  strip.begin();
  strip.show(); // Initialize all pixels to 'off'

  // initialize serial:
  Serial.begin(9600);
  // mySerial.begin(9600);
}

void loop() {
  // if there's any serial available, read it:
  while (Serial.available() > 0) {

    // look for the next valid integer in the incoming serial stream:
    int red = Serial.parseInt(); 
    // do it again:
    int green = Serial.parseInt(); 
    // do it again:
    int blue = Serial.parseInt(); 

    // look for the newline. That's the end of your
    // sentence:
    // if (mySerial.read() == '\n') {
    if (Serial.read() == '\n') {
      // sends confirmation
      Serial.println("received");
      // constrain the values to 0 - 255
      red = constrain(red, 0, 255);
      green = constrain(green, 0, 255);
      blue = constrain(blue, 0, 255);
      // fill strip
      colorSet(strip.Color(red, green, blue), 0); 
      
      // send some data back
      Serial.println("received:"+String(red)+","+String(green)+","+String(blue));
     
   }
}
}

// Fill strip with a color
void colorSet(uint32_t c, uint8_t wait) {
  for(uint16_t i=0; i<strip.numPixels(); i++) {
      strip.setPixelColor(i, c);
  }
   strip.show();
   delay(wait);
}

:confused: :confused: :confused:

Ach ich versuche es mit diesen 2 APP :

https://play.google.com/store/apps/details?id=com.funkboxing.led_controller

ruhig bleiben.
Ich vermute, dass der Fehler in der Art der Übertragung mit dem Bluetooth Teil liegt.
Bist du dir sicher, dass du sämtliche Übertragungs Parameter richtig eingestellt hast?
Also baud rate stop Bits und so weiter?
Als nächstes kommt die Frage, ob die App LF und CR richtig überträgt.
Du solltest es erstmal ohne Bluetooth Modul und mit dem seriellen Monitor der Arduino IDE versuchen.

Stefan

Warum ignorierst du, dass der HC05 Modul eine 3.3V Schnittstelle hat?

HC533v.png

Warum setzt du nicht mindestens einen Spannungsteiler mit Widerständen für die Nano Tx Leitung ein?

Und bitte nicht die Antwort von Serenifly ignorieren. Du kommentierst das myserial.begun aus und verwendest oben im Code nur die Hardware-Serial...

Also, wenn ich mir das erste Bild in Post#1 anschaue, dann versucht der TO die 12 Neo-Pixel mit Strom vom Nano zu betreiben.
Dort würde ich mal zuerst ansetzen und eine geeignete Stromquelle für die Neo-Pixel verwenden.
Danach kann man die anderen Probleme angehen.

Whandall:
Warum ignorierst du, dass der HC05 Modul eine 3.3V Schnittstelle hat?

HC533v.png

Warum setzt du nicht mindestens einen Spannungsteiler mit Widerständen für die Nano Tx Leitung ein?

Hi, ich ignoriere das nicht… den wo ich habe geht von 3.3 bis 7 V daher ist der an der 5V.

LG Martin

sth77:
Und bitte nicht die Antwort von Serenifly ignorieren. Du kommentierst das myserial.begun aus und verwendest oben im Code nur die Hardware-Serial…

Hi,

eben… ich habe sowohl Soft wie Hard probiert… beides gleiches Ergebniss… das RX blinkt aber nix passiert.

Hat sich erledigt, habe die Lösung selbst gefunden. Lag an den 3kOhm Wiedersänden.
Thread kann geschlossen werden.

Danke

psyconotics:
Hat sich erledigt, habe die Lösung selbst gefunden. Lag an den 3kOhm Wiedersänden.

An welchen 3K Widerständen?

Wo sind die auf deinen Bildern versteckt?