- Vereiste materialen
- Schakelschema
- Eerste configuratie van de HC05-modules
- Arduino naar Arduino Bluetooth-communicatietesten
HC-05 Bluetooth-modules zijn de beste Bluetooth-modules voor elk Arduino-project! Het is gemakkelijk aan te sluiten en te coderen in de Arduino IDE. Bij de meeste projecten maken we meestal verbinding met HC05 met een Arduino en gebruiken we deze om draadloos te communiceren met een ander slim apparaat, zoals een mobiele telefoon. Dit is vrij eenvoudig en we hebben er veel interessante projecten mee gebouwd, zoals Bluetooth-gestuurde robot, Bluetooth-spraakbesturing, Bluetooth-domotica, enz. Heb je echter ooit twee HC-05's met elkaar moeten verbinden? Het is niet zo eenvoudig om een HC05 met een smartphone te verbinden, er zijn enkele extra stappen bij betrokken. Deze tutorial zal je door dit proces leiden. Laten we er meteen in springen!
Vereiste materialen
- 2x Arduino (elk model zal het doen; ik gebruik een Arduino Uno R3 en een Arduino Nano)
- 2x HC05 Bluetooth-modules
- Breadboard
- Doorverbindingsdraden
- 2x 1kΩ weerstand
- 2x 2.2kΩ weerstand
Schakelschema
Dit is het basisschema. Sluit 2 van deze circuits aan, één voor master en één voor de slave. Voor de verbindingen: alles wat we hier doen, is de HC05 verbinden met de Arduino. De ontvanger (Rx) -pin van de HC05 werkt in het bereik van 0V tot 3,3V en de Arduino werkt in het bereik van 0V tot 5V. We zullen dus weerstanden (R1 en R2) gebruiken om een spanningsdeler te maken om de 5V-uitvoer van de Arduino te verlagen tot 3,3V, om de HC05-module niet te beschadigen.
Ik gebruik 1kΩ voor R1 en 2.2KΩ voor R2, maar je kunt elke weerstandswaarde gebruiken zolang de R2 ongeveer het dubbele is van de waarde van R1 (R2 ≈ 2R1). Herhaal op dezelfde manier het circuit voor zowel master als slave, het Arduino Master Bluetooth-circuit en het Arduino Slave Bluetooth- circuit worden hieronder weergegeven.
Eerste configuratie van de HC05-modules
Dit is de extra stap die nodig is om twee HC05-modules met elkaar te verbinden. We moeten enkele instellingen in de HC05 Bluetooth-module wijzigen, om dit te doen, moeten we naar de AT-opdrachtmodus van de HC05-module gaan en er opdrachten naar sturen via de seriële monitor van de Arduino IDE. Om dit te doen, moeten we een Arduino-code schrijven om opdrachten via de seriële monitor naar de HC05 te sturen.
De code om de HC05-module te configureren staat onderaan deze pagina, de uitleg van de code is als volgt
Voeg de SoftwareSerial-bibliotheek toe aan deze code.
# include < SoftwareSerial.h>
Definieer de pincodes voor verzenden (Tx) en ontvangen (Rx). Ik gebruik pin 2 voor Tx en pin 3 voor Rx.
#define tx 2 #define rx 3
Geef de Bluetooth-verbinding een naam (hier gebruik ik configBt), en vertel de SoftwareSerial-bibliotheek welke pin Tx is en welke pin Rx is. De syntaxis is bluetoothName (Rx, Tx);
SoftwareSerial configBt (rx, tx); // RX, TX
Om de Bluetooth-module te configureren, moet de Arduino er opdrachten naar sturen met een baudrate van 38400 baud. Evenzo stellen we de baudrate van de Bluetooth-verbinding in op 38400 baud. Stel de Transmit (Tx) in op de output-pin en Ontvang (Rx) op de input-pin
void setup () { Serial.begin (38400); configBt.begin (38400); pinMode (tx, OUTPUT); pinMode (rx, INPUT); }
Binnen de forever loop hebben we het belangrijkste deel van de code. Het idee hier is om alles wat in het tekstvak in de seriële monitor wordt getypt naar de HC05 te sturen via de Tx-pin van de Arduino. Geef vervolgens weer wat er door de HC05 wordt uitgevoerd in de seriële monitor.
void loop () {if (configBt.available ()) // als de HC05 iets verzendt… { Serial.print (configBt.readString ()); // print in seriële monitor} if (Serial.available ()) // als seriële monitor iets uitvoert… {configBt.write (Serial.read ()); // schrijf naar de Tx-pin van Arduino}}
Upload deze code eerst naar de Arduino die is aangesloten op de master HC05-module. Na het uploaden van de code, sluit je de Arduino-voedingskabel aan. Houd de knop op de HC05 ingedrukt. Sluit nu de Arduino-voedingskabel aan terwijl u de knop op de HC05 nog steeds ingedrukt houdt. Oké, nu kun je de knop op de HC05 loslaten. Dit is hoe je naar de AT-modus van de HC05 gaat. Om te controleren of u dit goed heeft gedaan, moet u ervoor zorgen dat het rode lampje op de HC05 ongeveer elke seconde knippert (langzaam knipperend!). Normaal gesproken, voordat de HC05 is verbonden met een Bluetooth-apparaat, knippert het rode lampje met een zeer hoge frequentie (snel knipperend!).
Open vervolgens de seriële monitor (de seriële monitorknop bevindt zich rechtsboven in de Arduino IDE). In de rechter benedenhoek van het Serial monitor-venster, als u dat nog niet gedaan heeft, zorg er dan voor dat u de regeleinde-instelling op “Zowel NL als CL” en de baudrate op 38400 zet. Typ nu AT in de seriële monitor, als alles goed gaat, krijg je een "OK" van de HC05 die wordt weergegeven in het seriële monitorvenster. Gefeliciteerd! U bent met succes aangemeld bij de AT-opdrachtmodus van de HC05-module.
Voer nu de volgende opdrachten in de onderstaande tabel in om de hoofdmodule HC05 te configureren :
COMMAND (voer dit in de seriële monitor in en druk op enter) |
RESPONSE (antwoord van HC05, weergegeven in de seriële monitor) |
Functie (wat doet deze opdracht?) |
BIJ |
OK |
Test |
AT + CMODE? |
OK |
Controleer de CMODE of de verbindingsmodus ----------------------------- CMODE: 0 is de slaaf 1 is meester |
BIJ + CMODE = 1 |
OK |
Stel de CMODE in op 1 terwijl we de master HC05 configureren |
AT + ADDR? |
+ ADDR: FCA8: 9A: 58D5 OK * Dit is het adres van mijn meester HC05. Uw adres zal anders zijn! |
Retourneert het adres van de HC05, noteer dit, want we hebben het later nodig! |
Verbind vervolgens uw computer met uw andere HC05, de slaaf:
COMMAND (voer dit in de seriële monitor in en druk op enter) |
RESPONSE (antwoord van HC05, weergegeven in de seriële monitor) |
Functie (wat doet deze opdracht?) |
BIJ |
OK |
Test |
AT + CMODE? |
OK |
Controleer de CMODE of de verbindingsmodus ----------------------------- CMODE: 0 is een slaaf 1 is meester |
AT + CMODE = 0 |
OK |
Stel de CMODE in op 0 terwijl we de slaaf HC05 configureren |
BIJ + BIND = FCA8,9A, 58D5 * Vervang de ":" in het hoofd-HC05-adres door "," * Hier gebruik ik het adres van de master HC05 dat ik uit de vorige tabel heb genoteerd. U dient het adres van uw master HC05 te gebruiken! |
OK |
Het adres instellen van de master HC05 waarmee deze slave HC05 automatisch verbinding zal maken bij het opstarten |
BIJ + BINDEN? |
+ BINDEN: FCA8: 9A: 58D5 OK * Dit is het adres van mijn meester HC05. Uw adres zal anders zijn! |
Controleer het bindende adres van uw slaaf. Als het overeenkomt met het adres van uw master HC05, bent u klaar om te gaan! |
Arduino naar Arduino Bluetooth-communicatietesten
Schakel eerst zowel de master- als de slave-HC05-modules in. Kijk na het inschakelen en een paar seconden naar het rode lampje op de HC05-modules.
Knipperende snelheid van het rode licht |
Wat het betekent |
Knipperen met een zeer hoge frequentie (snel knipperen!) |
Niet goed! Het betekent dat uw HC05-modules niet met elkaar zijn verbonden! Tijd om problemen op te lossen! |
Knippert met een lage frequentie (langzaam knipperend!) |
Leuk! Je hebt het gedaan! Maar we moeten nog een keer controleren om er zeker van te zijn dat deze installatie werkt! Ga verder! |
Zodra uw rode lampjes met een lage frequentie knipperen (langzaam knipperend!), Kunt u er zeker van zijn dat uw beide HC05's met elkaar zijn verbonden, maar we hebben niet getest of gegevens heen en weer kunnen worden verzonden tussen de master en slave. Dat is tenslotte het belangrijkste doel hier.
Upload onderstaande code naar een van de Arduino's, dit is de code om zender (Tx) te testen, wederom de volledige code van zowel zender als ontvanger vind je onderaan deze pagina.
In navolging van de vorige code voegen we de SoftwareSerial-bibliotheek toe aan deze code en definiëren we de pincodes voor verzenden (Tx) en ontvangen (Rx). Vervolgens geven we de Bluetooth-verbinding een naam en geven we de Tx- en Rx-pincodes door aan de bibliotheek.
# include < SoftwareSerial.h> #define tx 2 #define rx 3 SoftwareSerial bt (rx, tx); // RX, TX
In de setup-functie stellen we de baudrate voor de Arduino seriële monitor en de Bluetooth opnieuw in. Zie je hier het verschil met de vorige code? We gebruiken een baudrate van 9600 baud. Dit is de standaard ingestelde baudrate voor communicatie van de HC05 Bluetooth-module bij communicatie met andere Bluetooth-apparaten. Merk dus op dat 38400 baud is voor het configureren van de HC05 met AT-commando's en 9600 baud de standaard baudrate van de HC05-module is. Ten slotte configureren we, net als voorheen, de Tx-pin als uitvoer en Rx-pin als een invoer.
leegte setup () { Serial.begin (9600); bt.begin (9600); pinMode (tx, OUTPUT); pinMode (rx, INPUT); }
Binnen de forever loop is alles wat we doen het verzenden van een willekeurige waarde van "123" via de HC05.
leegte loop () {bt.write (123); }
Upload deze code naar de andere Arduino, dit is de code om de ontvangst (Rx) te testen:
Precies hetzelfde als de vorige codes, configureren we de SoftwareSerial-bibliotheek.
# include < SoftwareSerial.h> #define tx 2 #define rx 3 SoftwareSerial bt (rx, tx); // RX, TX
De code in de setup-functie is exact hetzelfde als de code om de verzending te testen (Tx).
leegte setup () { Serial.begin (9600); bt.begin (9600); pinMode (tx, OUTPUT); pinMode (rx, INPUT); }
In de eeuwige lus hoeven we alleen maar te ontvangen wat we verzenden van de verzendende Arduino. Als de ontvangstbuffer wat gegevens van de HC05 heeft ontvangen, geef dan wat er is ontvangen op de seriële monitor weer.
void loop () {if (bt.available ()> 0) { Serial.println (bt.read ()); }}
Nadat je de respectievelijke codes naar elke Arduino hebt geüpload, open je de seriële monitor naar de ontvangende Arduino. Zorg ervoor dat u de baudrate 9600 kiest en de lijn die eindigt als Newline in de seriële monitor. Als alles goed werkt, zou u 123 moeten zien.
Let op: Als je zowel de verzendende als de ontvangende Arduino's op dezelfde laptop hebt aangesloten, zorg er dan voor dat je de juiste COM-poort kiest onder TOOLS> PORT. Je zou verbonden moeten zijn met de ontvangende Arduino COM-poort.
Het is een feit dat u zich geen zorgen hoeft te maken.Als alles goed gaat, verwissel dan de HC05-modules om ervoor te zorgen dat de communicatie in beide richtingen kan plaatsvinden en WIJ ZIJN KLAAR!