Hallo,
ich habe mir bei ebay einige günstige Bluetooth HC-06 Module gekauft. Die Kommunikation zwischen PC und Arduino über Bluetooth klappt einwandfrei.
Nun wollte ich einige AT Commands absetzen. Hier mache ich offensichtlich etwas falsch. Generell bekomme ich vom BT Modul keine Antwort.
Ich habe probiert die AT Kommands über ein Terminal Programm zu senden. Als dies nicht funktionierte, probierte ich es direkt vom Arduino mit
Serial.println("AT");
oder
Serial.println("AT\n")
Klappte so auch nicht.
Weiß jemand wie das geht?
Viele Grüße
Thorsten
PS: Kann ich die Lib "SoftwareSerial" an den Pins 2+3 mit dem Uno verwenden?
Aktuell miss ich zum Sketch Uploaden immer den TX PIN ziehen:(
eclere:
PS: Kann ich die Lib "SoftwareSerial" an den Pins 2+3 mit dem Uno verwenden?
Klar kannst Du.
Aber wenn Du irgendwelche Kommandos senden möchtest, dann sollte am Ende auch ein Carriage Return Code mitgesendet werden und nicht nur ein New Line Code, etwa:
Serial.println("AT\r\n");
Der Decoder dürfte am Ende eher auf das CR als Abschluss des Kommandos warten als auf irgendein anderes Zeichen.
leider klappt das nicht. Vom Modul kommt kein "OK" zurück.
Aus den Netz habe ich folgende Funktion eingebaut:
void sendBlueToothCommand(char command[])
{
char a;
mySerial.print(command); //For debugging, Comment this line if not required
delay(3000);
while(mySerial.available()) //For debugging, Comment this line if not required
{ //For debugging, Comment this line if not required
mySerial.print(char(mySerial.read())); //For debugging, Comment this line if not required
} //For debugging, Comment this line if not required
}
Der Aufruf:
sendBlueToothCommand("AT\r\n");
mySerial ist meine Bluetooth Verbindung, welcher ich in einem extra Terminal Fenster überwache. AT kommt an, aber zurück kommt nichts.
Nachtrag:
Ich stelle gerade fest dass es wohl völlig egal ist welche Bautrate ich angebe. Mit jeder bis 115200 kann ich mich fehlerfrei verbinden.
Ist doch komisch!?
mySerial ist meine Bluetooth Verbindung, welcher ich in einem extra Terminal Fenster überwache. AT kommt an, aber zurück kommt nichts.
Woher weisst Du, dass es ankommt? Mit der Überwachung weisst Du im besten Fall, dass es geschickt wird.
Ich stelle gerade fest dass es wohl völlig egal ist welche Bautrate ich angebe. Mit jeder bis 115200 kann ich mich fehlerfrei verbinden.
Ist doch komisch!?
Was heisst hier "verbinden"? Du stellst einfach eine Baudrate ein und der Arduino sendet mit dieser Geschwindigkeit, ob die Gegenstelle das auch empfangen kann oder will, steht ganz wo anders geschrieben.
Zudem: Da Du wahrscheinlich SoftwareSerial für die Verbindung verwendest, sind alle Baudraten über 38400 reines Wunschdenken, in vielen Fällen ist alles über 9600 schon nicht mehr möglich. Bluetooth-Module steure ich prinzipiell nur mit der Hardware-Serial-Schnittstelle an, um genau solche Probleme zu vermeiden.
Ist Dein Modul überhaupt im CMD-Modus? Bei einigen wird das über einen Schalter, bei anderen über ein Signal namens "KEY" gesteuert.
Was das Verbinden angeht, so nahm ich an, dass auf beiden Seiten die gleichen Verbindungseinstellungen erfolgen müssen. Ich wüsste sonst nicht warum man das Modul überhaupt auf eine Baudrate einstellen sollte, wenn das Modul eh antwortet.
Das mit der Geschwindigkeit den Moduls habe ich mir schon gedacht. Ich verbinde mich mit 9600 Baud und an Pin24 ist die LED angeschlossen. Diese leuchtet durchgehend, sobal ich mich per Terminal verbinde. Daher gehe ich davon aus dass die Verbindung prinzipell erfolgreich steht.
Ich verbinde mich mit 9600 Baud und an Pin24 ist die LED angeschlossen.
Pin 24 wovon? Vom Arduino? Hast Du einen Mega2560? Falls ja, wieso nimmst Du nicht eine der Hardware-Schnittstellen?
Was das Verbinden angeht, so nahm ich an, dass auf beiden Seiten die gleichen Verbindungseinstellungen erfolgen müssen.
Richtig, aber senden kannst Du mit was immer Du willst. Wenn Du möchtest, dass die Gegenstelle das empfangen kann, dann müssen die Parameter übereinstimmen (Datenbits, Parität, Stoppbits, Baudrate, etc.)
Obwohl die Dokumentation sagt, dass die Standard-Geschwindigkeit 9600 Baud sei, war es bei meinen Modulen jeweils 38400 Baud. Ich würde also mal das Modul an die Hardware-Schnittstelle anschliessen und mit 38400 Baud kommunizieren.
Die HC Module reagieren auf die AT Befehle nur wenn sie nicht via Bluetooth gebunden (paired) sind. Das heisst die LED auf dem Board muss schnell blinken.
Gruß
Der Dani
Soweit funktioniert es auch, wenn ich "ATD0211;" programmiere wählt es auch die nummer, kein Problem. Aber bei "AT+CKPD=12" tut sich einfach gar nichts, ich muss das Handy soweit bekommen das es eine 2 Stellige Pin zur bestätigung eingibt.
Wer hat einen guten Rat ?