- Erforderliche Materialien
- Schaltplan
- Erstkonfiguration der HC05-Module
- Testen der Bluetooth-Kommunikation von Arduino zu Arduino
HC-05 Bluetooth-Module sind die bevorzugten Bluetooth-Module für jedes Arduino-Projekt! Es ist einfach, die Arduino IDE anzuschließen und zu codieren. In den meisten Projekten stellen wir normalerweise eine Verbindung zu HC05 zu einem Arduino her und verwenden es, um drahtlos mit einem anderen intelligenten Gerät wie einem Mobiltelefon zu kommunizieren. Dies ist ziemlich einfach und wir haben viele interessante Projekte damit erstellt, wie Bluetooth-gesteuerter Roboter, Bluetooth-Sprachsteuerung, Bluetooth-Heimautomation usw. Mussten Sie jedoch jemals zwei HC-05 miteinander verbinden? Es ist nicht so einfach, einen HC05 an ein Smartphone anzuschließen, es sind einige zusätzliche Schritte erforderlich. Dieses Tutorial führt Sie durch diesen Prozess. Lass uns gleich einsteigen!
Erforderliche Materialien
- 2x Arduino (Jedes Modell reicht aus; ich verwende einen Arduino Uno R3 und einen Arduino Nano)
- 2x HC05 Bluetooth-Module
- Steckbrett
- Überbrückungsdrähte
- 2x 1kΩ Widerstand
- 2x 2,2 kΩ Widerstand
Schaltplan
Dies ist das grundlegende Schaltbild. Verdrahten Sie zwei dieser Stromkreise, einen für den Master und einen für den Slave. Für die Verbindungen verbinden wir hier lediglich den HC05 mit dem Arduino. Der Receiver (Rx) -Pin des HC05 arbeitet im Bereich von 0 V bis 3,3 V und der Arduino im Bereich von 0 V bis 5 V. Wir werden also Widerstände (R1 und R2) verwenden, um einen Spannungsteiler zu erstellen, der den 5-V-Ausgang des Arduino auf 3,3 V reduziert, um das HC05-Modul nicht zu beschädigen.
Ich verwende 1 kΩ für R1 und 2,2 kΩ für R2, aber Sie können einen beliebigen Widerstandswert verwenden, solange R2 ungefähr doppelt so groß ist wie R1 (R2 ≈ 2R1). Wiederholen Sie in ähnlicher Weise die Schaltung für Master und Slave. Die Arduino Master Bluetooth-Schaltung und die Arduino Slave Bluetooth- Schaltung werden unten gezeigt.
Erstkonfiguration der HC05-Module
Dies ist der zusätzliche Schritt, der erforderlich ist, um zwei HC05-Module miteinander zu verbinden. Wir müssen einige Einstellungen innerhalb des HC05 Bluetooth - Modul ändern, dies zu tun, müssen wir das die HC05 Modul geht in AT - Befehlsmodus und Befehle, um es durch den seriellen Monitor Arduino IDE zu senden. Dazu müssen wir einen Arduino-Code schreiben, um Befehle über den seriellen Monitor an den HC05 zu senden.
Der Code zum Konfigurieren des HC05-Moduls befindet sich unten auf dieser Seite. Die Erläuterung des Codes lautet wie folgt
Fügen Sie diesem Code die SoftwareSerial-Bibliothek hinzu.
#include < SoftwareSerial.h>
Definieren Sie die Sende- (Tx) und Empfangs- (Rx) Pin-Nummern. Ich benutze Pin 2 für Tx und Pin 3 für Rx.
#define tx 2 #define rx 3
Geben Sie der Bluetooth-Verbindung einen Namen (hier verwende ich configBt) und teilen Sie der SoftwareSerial-Bibliothek mit, welcher Pin Tx und welcher Pin Rx ist. Die Syntax lautet bluetoothName (Rx, Tx).
SoftwareSerial configBt (rx, tx); // RX, TX
Um das Bluetooth-Modul zu konfigurieren, muss der Arduino Befehle mit einer Baudrate von 38400 Baud an ihn senden. In ähnlicher Weise stellen wir auch die Baudrate der Bluetooth-Verbindung auf 38400 Baud ein. Stellen Sie das Senden (Tx) auf den Ausgangspin und das Empfangen (Rx) auf den Eingangspin
void setup () { Serial.begin (38400); configBt.begin (38400); pinMode (tx, OUTPUT); pinMode (rx, INPUT); }}
Innerhalb der Forever-Schleife haben wir den Hauptteil des Codes. Die Idee hier ist, alles, was in das Textfeld des seriellen Monitors eingegeben wurde, über den Tx-Pin des Arduino an den HC05 zu senden. Zeigen Sie dann auf dem seriellen Monitor an, was auch immer vom HC05 ausgegeben wird.
void loop () {if (configBt.available ()) // wenn der HC05 etwas sendet… { Serial.print (configBt.readString ()); // im seriellen Monitor drucken} if (Serial.available ()) // wenn der serielle Monitor etwas ausgibt… {configBt.write (Serial.read ()); // schreibe auf Arduinos Tx Pin}}
Laden Sie diesen Code zuerst in das Arduino hoch, das mit dem Master-HC05-Modul verbunden ist. Stecken Sie nach dem Hochladen des Codes das Arduino-Netzkabel aus. Halten Sie die Taste am HC05 gedrückt. Stecken Sie nun das Arduino-Netzkabel ein, während Sie die Taste am HC05 gedrückt halten. Okay, jetzt können Sie die Taste am HC05 loslassen. So wechseln Sie in den AT-Modus des HC05. Um zu überprüfen, ob Sie dies richtig gemacht haben, stellen Sie sicher, dass das rote Licht am HC05 ungefähr alle eine Sekunde blinkt (langsames Blinken!). Normalerweise blinkt das rote Licht, bevor der HC05 mit einem Bluetooth-Gerät verbunden wird, mit einer sehr hohen Frequenz (schnelles Blinken!).
Öffnen Sie als Nächstes den seriellen Monitor (die Schaltfläche für den seriellen Monitor befindet sich oben rechts in der Arduino IDE). Stellen Sie in der unteren rechten Ecke des Fensters für den seriellen Monitor sicher, dass Sie die Einstellung für das Zeilenende auf „NL und CL“ und die Baudrate auf 38400 eingestellt haben. Geben Sie nun AT in den seriellen Monitor ein. Wenn alles gut geht, erhalten Sie vom HC05, das im Fenster des seriellen Monitors angezeigt wird, ein „OK“. Herzliche Glückwünsche! Sie haben sich erfolgreich im AT-Befehlsmodus des HC05-Moduls angemeldet.
Geben Sie nun die folgenden Befehle in die folgende Tabelle ein, um das Master-HC05-Modul zu konfigurieren :
BEFEHL (geben Sie dies in den seriellen Monitor ein und drücken Sie die Eingabetaste) |
ANTWORT (Antwort von HC05, angezeigt auf dem seriellen Monitor) |
Funktion (Was macht dieser Befehl?) |
BEIM |
in Ordnung |
Prüfung |
AT + CMODE? |
in Ordnung |
Überprüfen Sie den CMODE- oder Verbindungsmodus ----------------------------- CMODE: 0 ist der Slave 1 ist Meister |
AT + CMODE = 1 |
in Ordnung |
Setzen Sie den CMODE auf 1, während wir den Master HC05 konfigurieren |
AT + ADDR? |
+ ADDR: FCA8: 9A: 58D5 in Ordnung * Dies ist die Adresse meines Masters HC05. Ihre Adresse wird anders sein! |
Gibt die Adresse des HC05 zurück, notieren Sie diese, da wir sie später benötigen werden! |
Verbinden Sie als Nächstes Ihren Computer mit Ihrem anderen HC05, dem Slave:
BEFEHL (geben Sie dies in den seriellen Monitor ein und drücken Sie die Eingabetaste) |
ANTWORT (Antwort von HC05, angezeigt auf dem seriellen Monitor) |
Funktion (Was macht dieser Befehl?) |
BEIM |
in Ordnung |
Prüfung |
AT + CMODE? |
in Ordnung |
Überprüfen Sie den CMODE- oder Verbindungsmodus ----------------------------- CMODE: 0 ist ein Slave 1 ist Meister |
AT + CMODE = 0 |
in Ordnung |
Setzen Sie den CMODE auf 0, während wir den Slave HC05 konfigurieren |
AT + BIND = FCA8,9A, 58D5 * Ersetzen Sie das ":" in der Master-HC05-Adresse durch "," * Hier verwende ich die Adresse des Master-HC05, die ich aus der vorherigen Tabelle notiert habe. Sie sollten die Adresse Ihres Masters HC05 verwenden! |
in Ordnung |
Festlegen der Adresse des Master-HC05, zu dem dieser Slave-HC05 beim Booten automatisch eine Verbindung herstellt |
AT + BIND? |
+ BIND: FCA8: 9A: 58D5 in Ordnung * Dies ist die Adresse meines Masters HC05. Ihre Adresse wird anders sein! |
Überprüfen Sie die Bindungsadresse Ihres Slaves. Wenn es mit der Adresse Ihres Masters HC05 übereinstimmt, können Sie loslegen! |
Testen der Bluetooth-Kommunikation von Arduino zu Arduino
Versorgen Sie zunächst das Master- und das Slave-HC05-Modul mit Strom. Schauen Sie nach dem Einschalten und einigen Sekunden auf das rote Licht der HC05-Module.
Blinkgeschwindigkeit des roten Lichts |
Was es bedeutet |
Blinken mit sehr hoher Frequenz (schnelles Blinken!) |
Nicht gut! Dies bedeutet, dass Ihre HC05-Module nicht miteinander verbunden sind! Zeit zur Fehlerbehebung! |
Mit niedriger Frequenz blinken (langsames Blinken!) |
Nett! Du hast es getan! Aber wir müssen noch eine weitere Überprüfung durchführen, um sicherzugehen, dass dieses Setup funktioniert! Mach weiter! |
Sobald Ihre roten Lichter bei einer niedrigen Frequenz blinken (langsames Blinken!), Können Sie sicher sein, dass beide Ihre HC05s miteinander verbunden sind, aber wir haben nicht getestet, ob die Daten hin und her zwischen dem Master und Slave gesendet werden können. Immerhin ist das hier der Hauptzweck.
Laden Sie den folgenden Code auf eines der Arduinos hoch. Dies ist der Code zum Testen des Senders (Tx). Der vollständige Code für Sender und Empfänger finden Sie am Ende dieser Seite.
Nach dem vorherigen Code fügen wir diesem Code die SoftwareSerial-Bibliothek hinzu und definieren die Sende- (Tx) und Empfangs- (Rx) PIN-Nummern. Dann benennen wir die Bluetooth-Verbindung und übergeben die Tx- und Rx-PIN-Nummern an die Bibliothek.
#include < SoftwareSerial.h> #define tx 2 #define rx 3 SoftwareSerial bt (rx, tx); // RX, TX
In der Setup-Funktion stellen wir die Baudrate für den seriellen Arduino-Monitor und Bluetooth erneut ein. Sehen Sie hier den Unterschied zum vorherigen Code? Wir verwenden eine Baudrate von 9600 Baud. Dies ist die voreingestellte voreingestellte Kommunikationsbaudrate des HC05-Bluetooth-Moduls bei der Kommunikation mit anderen Bluetooth-Geräten. Beachten Sie also, dass 38400 Baud für die Konfiguration des HC05 mit AT-Befehlen vorgesehen ist und 9600 Baud die Standardbaudrate des HC05-Moduls ist. Zuletzt konfigurieren wir wie zuvor den Tx-Pin als Ausgang und den Rx-Pin als Eingang.
void setup () { Serial.begin (9600); bt.begin (9600); pinMode (tx, OUTPUT); pinMode (rx, INPUT); }}
Innerhalb der Forever-Schleife senden wir lediglich einen zufälligen Wert von „123“ über den HC05.
void loop () {bt.write (123); }}
Laden Sie diesen Code auf das andere Arduino hoch. Dies ist der Code zum Testen des Empfangs (Rx):
Genau wie bei den vorherigen Codes konfigurieren wir die SoftwareSerial-Bibliothek.
#include < SoftwareSerial.h> #define tx 2 #define rx 3 SoftwareSerial bt (rx, tx); // RX, TX
Der Code in der Setup-Funktion entspricht genau dem Code zum Testen der Übertragung (Tx).
void setup () { Serial.begin (9600); bt.begin (9600); pinMode (tx, OUTPUT); pinMode (rx, INPUT); }}
In der Forever-Schleife müssen wir nur das empfangen, was wir vom sendenden Arduino senden. Wenn der Empfangspuffer einige Daten vom HC05 empfangen hat, zeigen Sie alles an, was auf dem seriellen Monitor empfangen wird.
void loop () {if (bt.available ()> 0) { Serial.println (bt.read ()); }}
Nachdem Sie die entsprechenden Codes auf jedes Arduino hochgeladen haben, öffnen Sie den seriellen Monitor für das empfangende Arduino. Stellen Sie sicher, dass Sie im seriellen Monitor die Baudrate als 9600 und die Leitung als Newline wählen. Wenn alles gut funktioniert, sollten Sie 123 sehen.
Hinweis: Wenn Sie sowohl das sendende als auch das empfangende Arduino an denselben Laptop angeschlossen haben, stellen Sie sicher, dass Sie unter TOOLS> PORT den richtigen COM-Anschluss auswählen. Sie sollten mit dem COM-Port des empfangenden Arduino verbunden sein.
.Wenn alles gut geht, tauschen Sie die HC05-Module aus, um sicherzustellen, dass die Kommunikation in beide Richtungen erfolgen kann und WIR SIND FERTIG!