Hallo zusammen, Ich sitze gerade an meinem ersten Arduino Projekt und stosse gerade auf ein paar Probleme. Ich habe ein Arduino Leonardo mit einem HC-05 BT Modul. Es funktioniert soweit alles super bis auf das parametrieren über AT Commands. Ich komme ohne Probleme in den AT Command Mode und wenn ich den Serial Monitor benutze, funktionieren auch alle AT Kommandos ohne Probleme. Im Code sende ich dabei einfach alles vom Serial Monitor zum BT Device (Serial -> Serial1). Dabei nutze ich sowohl CR als auch NL bei den Serial Monitor Optionen. Funktionierende Beispieleingabe: AT+NAME=Testmodul Sende ich jetzt einen Commando String direkt aus einer Funktion, hat dieser keine Auswirkung und ich weiß nicht warum?! Nicht funktionierender Beispielcode: Serial1.write("AT+NAME=Testmodul\r\n"); Wo liegt da mein Fehler? Im Endeffekt ist das die gleiche Eingabe wie über den Serial Monitor, Commando Mode liegt vor, gleiche Randbedingungen... :( Danke und Gruß, mathies
Du darfst die Kommandos nicht mit Zeilenumbruch terminieren! Diese HC Module benutzen einen Timeout (von ca 500ms), um das Ende des Befehls zu erkennen. Und wenn dann der Befehl unerwartete Zeichen (\r\n) enthält, wird er ignoriert. Die Antworten haben übrigens auch keine Zeilenvorschübe. Sehr merkwürdig finde ich das.
Hi, laut Bedienungsanleitung benötigt der HC-05 den Zeilenumbruch und Zeilenvorschub. Zitat: HC-03 and HC-05’s command should end up with “\r\n”. It means when you finish programming, you should add terminator (“ENTER” or “0x0d 0x0a”) to the program. It’s different from HC-04 and HC-06 (They don’t need terminator). Wie gesagt, über den Serial Monitor funktioniert es ja einwandfrei. Ich habe es jetzt teilweise hinbekommen. Irgendwie scheint was im Sendepuffer zu hängen, denn für das erste Kommando bekomme ich das ASCII Zeichen 254 zurück. Schicke ich das Kommando nochmal, bekomme ich ein OK und es hat funktioniert. Somit sieht die Funktion jetzt in etwa so aus:
1 | Serial1.write("AT+NAME=Testmodul\r\n"); |
2 | |
3 | // read out response --> ASCII sign 254
|
4 | |
5 | Serial1.write("AT+NAME=Testmodul\r\n"); |
6 | |
7 | // read out response --> OK
|
Grüße, mathies
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.