Liebe User, ich habe folgendes Prolem: Ich möchte zwei HM-10 Bluetooth Module kommunizieren lassen. Ich weiß schon die ganzen AT Kommandos. Nur halt nicht wie ich den Arduino Code schreibe. Ich hatte folgende Idee aber sie funktioniert nur nicht. Mein Code #include <SoftwareSerial.h> SoftwareSerial BTSerial(2,3); void setup(){ pinMode(9,OUTPUT); digitalWrite(9,HIGH); Serial.begin(9600); Serial.println("AT+MODE2"); Serial.println("AT+IMME1"); Serial.println("AT+NOTI1"); Serial.println("AT+PIO11"); Serial.println("AT+PWRM1"); Serial.println("AT+ROLE0"); Serial.println("AT+START"); BTSerial.begin(38400); } void loop(){ if(BTSerial.available()) Serial.write(BTSerial.read()); if(Serial.available()) BTSerial.write(Serial.read()); } Pin 2 und Pin 3 sind die TX und RX Pins des Arduino UNO Die Befehle werden nur ans Terminal gesendet. Aber nicht vom Modul ausgeführt. Ich bitte um Hilfe. Danke im Voraus.
Ich möchte die Frage ergänzen: Wir haben auf beiden Seiten einen HM-10 Soft Bluetooth Modul mit jeweils einem Arduino µC und möchten, dass sie automatisch miteinander kommunizieren nachdem wir sie mit Strom versorgen (benötigen wir für unser Diplomprojekt). Wenn wir die AT-Commands wie oben im Code angeführt durchführen, nimmt der Serial Monitor die AT-Commands als Text und erkennt nicht das wir Befehle einschicken (--> haben wir beschlossen, weil wir nach den AT-Commands keine Rückmeldung bekommen). Bitte um Hilfe. Danke im Voraus!
Valentin Huber schrieb: > Serial.println("AT+MODE2"); Ihr printet die AT Kommandos auf die Serielle Console. Und wie sollen sie zu eurem Bluetooth Modul kommen ? Indem ein Mensch sie an der Konsole abtippt ? Ihr müsstet schon BTserial.println() verwenden, natürlich nachdem ihr BTSerial initializiert habt. Was passiert denn, wenn man "von Hand" Kommandos in das Seriell Window eintippt ? ZigZeg
Wenn man von Hand die AT-Commands im Serial Monitor eintippt, funktioniert alles einwandfrei. Wir können alle Voreinstellungen eintippen und sogar untereinander verbinden. Der oben angeführte Code vom Valentin ist für den Slave gedacht. Beim Master werden 2-3 Commands anders eingetippt wie z.B. AT+MODE1 = Master.
Cihan Bayrak schrieb: > Wenn man von Hand die AT-Commands im Serial Monitor eintippt, > funktioniert alles einwandfrei. Na dann ist doch alles Paletti. Wenn ihr jetzt noch die Kommandos zum BT Modul schickt statt sie einfach nur in der seriellen Konsole auszugeben sollte es klappen:
1 | #include <SoftwareSerial.h> |
2 | |
3 | SoftwareSerial BTSerial(2,3); |
4 | |
5 | void setup(){ |
6 | pinMode(9,OUTPUT); |
7 | digitalWrite(9,HIGH); |
8 | Serial.begin(9600); |
9 | BTSerial.begin(38400); |
10 | BTSerial.println("AT+MODE2"); |
11 | BTSerial.println("AT+IMME1"); |
12 | BTSerial.println("AT+NOTI1"); |
13 | BTSerial.println("AT+PIO11"); |
14 | BTSerial.println("AT+PWRM1"); |
15 | BTSerial.println("AT+ROLE0"); |
16 | BTSerial.println("AT+START"); |
17 | }
|
18 | |
19 | void loop(){ |
20 | if(BTSerial.available()) |
21 | Serial.write(BTSerial.read()); |
22 | |
23 | if(Serial.available()) |
24 | BTSerial.write(Serial.read()); |
25 | }
|
ZigZeg
Vielen Dank für die schnellen Antworten. Wir werden heute den Code umschreiben und ausprobieren. Feedback folgt. CiQan.
Funktioniert leider nicht. Wie wichtig ist die Baud Rate (von Serial und Bluetooth)? Sollte man da auf besonderes achten? CiQan.
Vergessen wir daweil mal das connecten. Ich kann daweil "händisch" über den Serial Monitor mit den AT-Befehlen untereinander eine Verbindung herstellen. Wie funktioniert das wenn ich vom Master aus über Tx und Rx die Pins vom Slave abfragen möchte. Wir möchten nämlich den Slave kabellos steuern (d.h. wir wollen am Master eine Tasterabfrage erstellen, wodurch dann am Slave eine LED leuchten soll). Wir kommen nicht mehr weiter und wissen auch nicht wo wir weiter machen sollen. Vielen Dank im Voraus CiQan.
Cihan Bayrak schrieb: > Wie wichtig ist die Baud Rate Wenn sie falsch ist kommt keine Uebertragung zustande. Oft werden Zufalls/Schrott-Zeichen uebertragen. Aber das es manuell funktioniert kann das eigentlich nicht das Problem sein. Vielleicht ist das Problem das die AT Kommandos "zu frueh" geschickt werden, d.h. das Bluetooth module ist noch in der Reset Phase. Ihr koenntet versuchen ein Delay einzubauen, bevor ihr die Kommandos schickt. Ist natuerlich spekulation. Man koennte auch versuchen ein Oszilloskop oder, falls nicht vorhanden, ein paar LEDs an die Tx/Rx Leitungen vom Bluetooth (mit) anzuklemmen um ein bischen mehr Einblick (Debugging Moeglichkeit) zu haben. Cihan Bayrak schrieb: > Wie funktioniert das wenn ich vom Master aus über Tx und Rx > die Pins vom Slave abfragen möchte. Ihr muesst euch ein Protokoll ausdenken, mit dem die Kommunikation ablaufen soll. Kann ja am Anfang ganz einfach sein, z.B. eine '0' schicken, wenn keine Taste gedrueckt, eine '1' schicken, wenn die Taste gedrueckt ist. Die andere Seite liest das ein, und macht entsprechend die LED an. Wenn die Initializierung nicht automatisch erfolgt muss man dann z.B. zwei Phasen haben: In der ersten kann man interaktiv Befehle eingeben. Wenn das Kommando "AT+START" erkannt wird schaltet man in die zweite Phase, in der dann das Protokoll wie oben beschrieben verwirklicht wird.
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.