[teilweise gelöst] HC-05 über AT Commands parametrieren

OP #3734334
Lesenswert?
• ▲
▼
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
Gast #3735035
Lesenswert?
• ▲
▼
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.
OP #3735285
Lesenswert?
• ▲
▼
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

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.