- Nødvendige materialer
- Kredsløbsdiagram
- Indledende konfiguration af HC05-modulerne
- Arduino til Arduino Bluetooth-kommunikationstest
HC-05 Bluetooth-moduler er go-to Bluetooth-modulerne til ethvert Arduino-projekt! Det er let at tilslutte og kode i Arduino IDE. I de fleste projekter opretter vi normalt forbindelse til HC05 til en Arduino og bruger den til at kommunikere trådløst med en anden smart enhed som en mobiltelefon. Dette er ret simpelt, og vi har bygget mange interessante projekter med det som Bluetooth-styret robot, Bluetooth-stemmestyring, Bluetooth-hjemmeautomatisering osv. Har du dog nogensinde haft brug for at forbinde to HC-05'er sammen? Det er ikke så ligetil at forbinde en HC05 til en smartphone, der er nogle yderligere trin involveret. Denne vejledning vil guide dig gennem denne proces. Lad os hoppe lige ind!
Nødvendige materialer
- 2x Arduino (Enhver model gør det; jeg bruger en Arduino Uno R3 og en Arduino Nano)
- 2x HC05 Bluetooth-moduler
- Brødbræt
- Jumper Wires
- 2x 1kΩ modstand
- 2x 2,2 kΩ modstand
Kredsløbsdiagram
Dette er det grundlæggende kredsløbsdiagram. Træk 2 af disse kredsløb sammen, en til mester og en til slaven. For forbindelserne er alt, hvad vi laver her, at forbinde HC05 til Arduino. Modtagerstikket (Rx) på HC05 fungerer i området 0V til 3,3V, og Arduino fungerer i området 0V til 5V. Så vi bruger modstande (R1 og R2) til at oprette en spændingsdeler for at reducere 5V-udgangen fra Arduino til 3.3V for ikke at beskadige HC05-modulet.
Jeg bruger 1kΩ til R1 og 2.2KΩ til R2, men du kan bruge enhver modstandsværdi, så længe R2 er cirka dobbelt så stor som R1 (R2 ≈ 2R1). Gentag ligeledes kredsløbet for både master og slave, Arduino Master Bluetooth Circuit og Arduino Slave Bluetooth Circuit er vist nedenfor.
Indledende konfiguration af HC05-modulerne
Dette er det ekstra trin, der kræves for at forbinde to HC05-moduler sammen. Vi er nødt til at ændre nogle indstillinger inde i HC05 Bluetooth-modulet. For at gøre dette skal vi gå ind i HC05-modulets AT Command Mode og sende kommandoer til det gennem Arduino IDEs serielle skærm. For at gøre dette skal vi skrive en Arduino-kode for at sende kommandoer gennem den serielle skærm til HC05.
Den kode for at konfigurere HC05 modulet kan findes nederst på denne side, forklaring af koden er som følger
Føj SoftwareSerial-biblioteket til denne kode.
#include < SoftwareSerial.h>
Definer sende- (Tx) og Modtag (Rx) pin-numre. Jeg bruger pin 2 til Tx og pin 3 til Rx.
#definer tx 2 #definer rx 3
Giv Bluetooth-forbindelsen et navn (her bruger jeg configBt), og fortæl derefter SoftwareSerial-biblioteket, hvilken pin der er Tx, og hvilken pin der er Rx. Syntaksen er bluetoothName (Rx, Tx);
SoftwareSerial configBt (rx, tx); // RX, TX
For at konfigurere Bluetooth-modulet skal Arduino sende kommandoer til det med en baudhastighed på 38400 baud. På samme måde indstiller vi også baudhastigheden for Bluetooth-forbindelsen til 38400 baud. Indstil transmissionen (Tx) til udgangsstiften og modtag (Rx) til indgangsstiften
ugyldig opsætning () { Seriel.begin (38400); configBt.begin (38400); pinMode (tx, OUTPUT); pinMode (rx, INPUT); }
Inde i den evige sløjfe har vi hovedkoden af koden. Ideen her er at sende hvad der er skrevet i tekstboksen i den serielle skærm til HC05 gennem Arduinos Tx-pin. Vis derefter det, der udsendes af HC05 i den serielle skærm.
ugyldig loop () {if (configBt.available ()) // hvis HC05 sender noget… { Serial.print (configBt.readString ()); // udskriv i seriel skærm} hvis (Serial.available ()) // hvis seriel monitor udsender noget… {configBt.write (Serial.read ()); // skriv til Arduinos Tx-pin}}
Upload først denne kode til Arduino, der er tilsluttet master HC05-modulet. Når du har uploadet koden, skal du tilslutte Arduino-strømkablet. Tryk og hold på knappen på HC05. Tilslut nu Arduino-strømkablet, mens du stadig holder knappen på HC05. Okay, nu kan du slippe knappen på HC05. Sådan går du ind i AT-tilstand på HC05. For at kontrollere, om du har gjort dette rigtigt, skal du sørge for at det røde lys på HC05 blinker ca. hvert sekund (langsomt blinkende!). Normalt før HC05 er tilsluttet en Bluetooth-enhed, blinker det røde lys med en meget høj frekvens (hurtigt blinkende!).
Åbn derefter den serielle skærm (den serielle skærmknap er øverst til højre på Arduino IDE). Hvis du ikke allerede har gjort det i nederste højre hjørne af det serielle skærmvindue, skal du sørge for at indstille linjeafslutningsindstillingen til "Både NL og CL" og baudrate til 38400. Indtast nu AT i den serielle skærm, hvis alt går godt, får du et “OK” fra HC05, der vises i det serielle skærmvindue. Tillykke! Du er med succes logget ind på HC05-modulets AT-kommandotilstand.
Indtast nu følgende kommandoer i nedenstående tabel for at konfigurere master HC05-modulet:
COMMAND (indtast dette i den serielle skærm og tryk på enter) |
SVAR (svar fra HC05, vises i den serielle skærm) |
Funktion (Hvad gør denne kommando?) |
PÅ |
Okay |
Prøve |
PÅ + CMODE? |
Okay |
Kontroller CMODE eller forbindelsestilstand ----------------------------- CMODE: 0 er slave 1 er mester |
AT + CMODE = 1 |
Okay |
Indstil CMODE til 1, da vi konfigurerer master HC05 |
AT + ADDR? |
+ ADDR: FCA8: 9A: 58D5 Okay * Dette er adressen på min master HC05. Din adresse vil være anderledes! |
Returnerer adressen på HC05, noter dette, da vi har brug for det senere! |
Tilslut derefter din computer til din anden HC05, slaven:
COMMAND (indtast dette i den serielle skærm og tryk på enter) |
SVAR (svar fra HC05, vises i den serielle skærm) |
Funktion (Hvad gør denne kommando?) |
PÅ |
Okay |
Prøve |
PÅ + CMODE? |
Okay |
Kontroller CMODE eller forbindelsestilstand ----------------------------- CMODE: 0 er en slave 1 er mester |
AT + CMODE = 0 |
Okay |
Indstil CMODE til 0, da vi konfigurerer slave HC05 |
AT + BIND = FCA8,9A, 58D5 * Udskift “:” i master HC05-adressen med “,” * Her bruger jeg adressen på master HC05, som jeg noterede fra den foregående tabel. Du skal bruge adressen på din master HC05! |
Okay |
Indstilling af adressen på master HC05, som denne slave HC05 automatisk opretter forbindelse til ved opstart |
PÅ + BIND? |
+ BIND: FCA8: 9A: 58D5 Okay * Dette er adressen på min master HC05. Din adresse vil være anderledes! |
Tjek bindingsadressen til din slave. Hvis det matcher adressen på din master HC05, er du klar til at gå! |
Arduino til Arduino Bluetooth-kommunikationstest
Først skal du tænde både master- og slave-HC05-modulerne. Efter tændingen og et par sekunder er gået, se på det røde lys på HC05-modulerne.
Blinkende hastighed for det røde lys |
Hvad det betyder |
Blinker meget højt (blinker hurtigt!) |
Ikke godt! Det betyder, at dine HC05-moduler ikke forbinder hinanden! Tid til fejlfinding! |
Blinker med lav frekvens (blinker langsomt!) |
Pæn! Du har gjort det! Men vi skal stadig foretage en kontrol mere for bare at være super sikre på, at denne opsætning fungerer! Kom videre! |
Når dine røde lys blinker lavt (langsomt blinkende!), Kan du være sikker på at begge dine HC05'er er forbundet med hinanden, men vi har ikke testet, om data kan sendes frem og tilbage mellem master og slave. Det er trods alt hovedformålet her.
Upload nedenstående kode til en af Arduinos, dette er koden til testsender (Tx), igen kan den komplette kode til både sender og modtager findes nederst på denne side.
Efter den forrige kode føjer vi SoftwareSerial-biblioteket til denne kode og definerer send (Tx) og Modtag (Rx) pin-numre. Derefter navngiver vi Bluetooth-forbindelsen og sender Tx- og Rx-pin-numrene til biblioteket.
#include < SoftwareSerial.h> #define tx 2 #define rx 3 SoftwareSerial bt (rx, tx); // RX, TX
I opsætningsfunktionen indstiller vi baudhastigheden for Arduino seriel skærm og Bluetooth igen. Ser du forskellen her sammenlignet med den forrige kode? Vi bruger en baudrate på 9600 baud. Dette er den forudindstillede standardkommunikationsbaudrate for HC05 Bluetooth-modulet, når du kommunikerer med andre Bluetooth-enheder. Så bemærk, at 38400 baud er til konfiguration af HC05 med AT-kommandoer, og 9600 baud er standard baudrate for HC05-modulet. Endelig, ligesom før vi konfigurerer Tx-stiften som output og Rx-stiften som en input.
ugyldig opsætning () { Seriel.begin (9600); bt.begin (9600); pinMode (tx, OUTPUT); pinMode (rx, INPUT); }
Inde i den evige sløjfe er alt, hvad vi laver, at transmittere en tilfældig værdi på “123” gennem HC05.
ugyldig sløjfe () {bt.write (123); }
Upload denne kode til den anden Arduino, dette er koden til testmodtagelse (Rx):
Præcis det samme som de tidligere koder konfigurerer vi SoftwareSerial-biblioteket.
#include < SoftwareSerial.h> #define tx 2 #define rx 3 SoftwareSerial bt (rx, tx); // RX, TX
Koden i opsætningsfunktionen er nøjagtig den samme som koden, der skal sendes (Tx).
ugyldig opsætning () { Seriel.begin (9600); bt.begin (9600); pinMode (tx, OUTPUT); pinMode (rx, INPUT); }
I den evige løkke er vi bare nødt til at modtage det, vi sender fra den transmitterende Arduino. Hvis modtagebufferen har modtaget nogle data fra HC05, skal du vise det, der modtages i den serielle skærm.
ugyldig sløjfe () {if (bt.available ()> 0) { Serial.println (bt.read ()); }}
Når du har uploadet de respektive koder til hver Arduino, skal du åbne den serielle skærm til den modtagende Arduino. Sørg for at vælge baudhastigheden som 9600 og linjen, der slutter som Newline i den serielle skærm. Hvis alt fungerer fint, skal du se 123.
Bemærk: Hvis du har tilsluttet både den transmitterende og modtagende Arduinos til den samme bærbare computer, skal du sørge for at vælge den rigtige COM-port under VÆRKTØJ> PORT. Du skal være forbundet til den modtagende Arduinos COM-port.
Hvis alt går godt, skal du bytte HC05-modulerne for at sikre, at kommunikation kan ske i begge retninger, og VI ER FERDIG!