- Materiale necesare
- Diagrama circuitului
- Configurarea inițială a modulelor HC05
- Testarea comunicării Bluetooth Arduino la Arduino
Modulele Bluetooth HC-05 sunt modulele Bluetooth pentru orice proiect Arduino! Este ușor să conectați și să codați în ID-ul Arduino. În majoritatea proiectelor, ne conectăm de obicei la HC05 la un Arduino și îl folosim pentru a comunica fără fir cu un alt dispozitiv inteligent, cum ar fi un telefon mobil. Acest lucru este destul de simplu și am construit multe proiecte interesante cu acesta, cum ar fi un robot controlat prin Bluetooth, un control vocal prin Bluetooth, automatizarea prin acasă Bluetooth etc. Cu toate acestea, ați avut vreodată nevoie să conectați două HC-05 împreună? Nu este la fel de simplu conectarea unui HC05 la un smartphone, sunt implicați câțiva pași suplimentari. Acest tutorial vă va ghida prin acest proces. Să sărim direct înăuntru!
Materiale necesare
- 2x Arduino (Orice model va funcționa; folosesc un Arduino Uno R3 și un Arduino Nano)
- 2 module HC05 Bluetooth
- Breadboard
- Sârme jumper
- Rezistor 2x 1kΩ
- 2x rezistor de 2,2 kΩ
Diagrama circuitului
Aceasta este schema circuitului de bază. Conectați 2 dintre aceste circuite, unul pentru comandant și unul pentru sclav. Pentru conexiuni, tot ce facem aici este conectarea HC05 la Arduino. Pinul receptorului (Rx) al HC05 funcționează în intervalul 0V - 3,3V, iar Arduino funcționează în intervalul 0V - 5V. Deci, vom folosi rezistențe (R1 și R2) pentru a crea un divizor de tensiune pentru a reduce ieșirea de 5V a Arduino la 3,3V, astfel încât să nu deteriorăm modulul HC05.
Folosesc 1kΩ pentru R1 și 2.2KΩ pentru R2, dar puteți utiliza orice valoare a rezistenței, atâta timp cât R2 este aproximativ dublu față de valoarea lui R1 (R2 ≈ 2R1). În mod similar, repetați circuitul atât pentru master, cât și pentru slave, Arduino Master Bluetooth Circuit și Arduino Slave Bluetooth Circuit sunt prezentate mai jos.
Configurarea inițială a modulelor HC05
Acesta este pasul suplimentar necesar pentru conectarea a două module HC05 împreună. Trebuie să schimbăm unele setări în modulul Bluetooth HC05, pentru a face acest lucru, trebuie să intrăm în modul de comandă AT al modulului HC05 și să îi trimitem comenzi prin monitorul serial al Arduino IDE. Pentru a face acest lucru, trebuie să scriem un cod Arduino pentru a trimite comenzi prin intermediul monitorului serial către HC05.
Codul pentru a configura modulul HC05 pot fi găsite în partea de jos a acestei pagini, explicația codului este după cum urmează
Adăugați biblioteca SoftwareSerial la acest cod.
#include < SoftwareSerial.h>
Definiți numerele pinului de transmisie (Tx) și Receive (Rx). Folosesc pinul 2 pentru Tx și pinul 3 pentru Rx.
#define tx 2 #define rx 3
Dați conexiunii Bluetooth un anumit nume (aici folosesc configBt), apoi spuneți bibliotecii SoftwareSerial care pin este Tx și care pin este Rx. Sintaxa este bluetoothName (Rx, Tx);
SoftwareSerial configBt (rx, tx); // RX, TX
Pentru a configura modulul Bluetooth, Arduino trebuie să îi trimită comenzi la o rată de baud de 38400 baud. În mod similar, am setat și rata de transmisie a conexiunii Bluetooth la 38400 baud. Setați Transmit (Tx) la pinul de ieșire și Receive (Rx) la pinul de intrare
void setup () { Serial.begin (38400); configBt.begin (38400); pinMode (tx, OUTPUT); pinMode (rx, INPUT); }
În bucla pentru totdeauna, avem partea principală a codului. Ideea aici este să trimiteți tot ce este tastat în caseta de text de pe monitorul serial către HC05 prin pinul Arduino's Tx. Apoi, afișați tot ce este emis de HC05 pe monitorul serial.
void loop () {if (configBt.available ()) // dacă HC05 trimite ceva… { Serial.print (configBt.readString ()); // tipărește în monitorul serial} if (Serial.available ()) // dacă monitorul serial produce ceva… {configBt.write (Serial.read ()); // scrie pe pinul Arduino's}}
Încărcați mai întâi acest cod în Arduino conectat la modulul master HC05. După încărcarea codului, conectați cablul de alimentare Arduino. Țineți apăsat butonul de pe HC05. Acum conectați cablul de alimentare Arduino în timp ce țineți încă butonul de pe HC05. Bine, acum puteți elibera butonul de pe HC05. Acesta este modul în care treceți în modul AT al HC05. Pentru a verifica dacă ați făcut acest lucru corect, asigurați-vă că lumina roșie de pe HC05 clipește aproximativ la fiecare secundă (clipește lent!). În mod normal, înainte ca HC05 să fie conectat la orice dispozitiv Bluetooth, lumina roșie clipește la o frecvență foarte ridicată (clipește rapid!).
Apoi, deschideți monitorul serial (butonul monitorului serial se află în partea dreaptă sus a ID-ului Arduino). În colțul din dreapta jos al ferestrei monitorului serial, dacă nu ați făcut deja acest lucru, asigurați-vă că setați setarea de terminare a liniei la „Atât NL, cât și CL” și rata de transmisie la 38400. Acum, tastați AT în monitorul serial, dacă totul merge bine, veți primi un „OK” din HC05 afișat în fereastra monitorului serial. Felicitări! V-ați conectat cu succes la modul de comandă AT al modulului HC05.
Acum, introduceți următoarele comenzi în tabelul de mai jos pentru a configura modulul master HC05:
COMANDĂ (introduceți acest lucru în monitorul serial și apăsați Enter) |
RĂSPUNS (răspuns de la HC05, afișat pe monitorul serial) |
Funcție (Ce face această comandă?) |
LA |
O.K |
Test |
AT + CMODE? |
O.K |
Verificați CMODE sau modul de conexiune ----------------------------- CMOD: 0 este sclavul 1 este stăpân |
AT + CMOD = 1 |
O.K |
Setați CMODE la 1 pe măsură ce configurăm masterul HC05 |
AT + ADDR? |
+ ADDR: FCA8: 9A: 58D5 O.K * Aceasta este adresa maestrului meu HC05. Adresa dvs. va fi diferită! |
Returnează adresa HC05, notați-o, deoarece vom avea nevoie de ea mai târziu! |
Apoi conectați computerul la celălalt HC05, sclavul:
COMANDĂ (introduceți acest lucru în monitorul serial și apăsați Enter) |
RĂSPUNS (răspuns de la HC05, afișat pe monitorul serial) |
Funcție (Ce face această comandă?) |
LA |
O.K |
Test |
AT + CMODE? |
O.K |
Verificați CMODE sau modul de conexiune ----------------------------- CMOD: 0 este un sclav 1 este stăpân |
AT + CMOD = 0 |
O.K |
Setați CMODE la 0 pe măsură ce configurăm sclavul HC05 |
AT + BIND = FCA8,9A, 58D5 * Înlocuiți „:” din adresa masteră HC05 cu „,” * Aici folosesc adresa masterului HC05 pe care am notat-o din tabelul anterior. Ar trebui să utilizați adresa masterului dvs. HC05! |
O.K |
Setarea adresei masterului HC05 la care acest slave HC05 se va conecta automat la pornire |
AT + BIND? |
+ BIND: FCA8: 9A: 58D5 O.K * Aceasta este adresa maestrului meu HC05. Adresa dvs. va fi diferită! |
Verifică adresa de legare a sclavului tău. Dacă se potrivește cu adresa masterului dvs. HC05, sunteți bine să mergeți! |
Testarea comunicării Bluetooth Arduino la Arduino
În primul rând, alimentați modulele HC05 master și slave. După pornire și câteva secunde au trecut uitați-vă la lumina roșie de pe modulele HC05.
Viteza intermitentă a luminii roșii |
Ce înseamnă |
Clipește la o frecvență foarte ridicată (clipește rapid!) |
Nu e bine! Înseamnă că modulele dvs. HC05 nu se conectează între ele! E timpul să depanăm! |
Clipește la o frecvență joasă (clipește lent!) |
Grozav! Ați făcut-o! Dar trebuie să mai facem încă o verificare doar pentru a fi foarte siguri că această configurare funcționează! Mergi mai departe! |
Odată ce luminile roșii clipesc la o frecvență joasă (clipesc lent!), Puteți fi siguri că ambele HC05 sunt conectate între ele, dar nu am testat dacă datele pot fi trimise înainte și înapoi între master și slave. La urma urmei, acesta este scopul principal aici.
Încărcați codul de mai jos într-unul dintre Arduinos, acesta este codul pentru testarea transmițătorului (Tx), din nou, codul complet atât pentru emițător, cât și pentru receptor poate fi găsit în partea de jos a acestei pagini.
În urma codului anterior, adăugăm biblioteca SoftwareSerial la acest cod și definim numerele pinului de transmisie (Tx) și Receive (Rx). Apoi numim conexiunea Bluetooth și trecem numerele de pin Tx și Rx la bibliotecă.
#include < SoftwareSerial.h> #define tx 2 #define rx 3 SoftwareSerial bt (rx, tx); // RX, TX
În funcția de configurare, setăm din nou rata de transmisie pentru monitorul serial Arduino și Bluetooth. Vedeți diferența aici față de codul anterior? Folosim o rată de baud de 9600 baud. Aceasta este rata de transmisie implicită prestabilită a modulului Bluetooth HC05 atunci când comunicați cu alte dispozitive Bluetooth. Deci, rețineți că 38400 baud este pentru configurarea HC05 cu comenzi AT și 9600 baud este rata de baud implicită a modulului HC05. În cele din urmă, la fel ca înainte, configurăm pinul Tx ca ieșire și pinul Rx ca intrare.
void setup () { Serial.begin (9600); bt.inceput (9600); pinMode (tx, OUTPUT); pinMode (rx, INPUT); }
În interiorul buclei pentru totdeauna, tot ceea ce facem este să transmitem o valoare aleatorie de „123” prin HC05.
bucla void () {bt.write (123); }
Încărcați acest cod pe celălalt Arduino, acesta este codul pentru testarea primirii (Rx):
Exact la fel ca și codurile anterioare, configurăm biblioteca SoftwareSerial.
#include < SoftwareSerial.h> #define tx 2 #define rx 3 SoftwareSerial bt (rx, tx); // RX, TX
Codul din funcția de configurare este exact același cu codul de testare a transmisiei (Tx).
void setup () { Serial.begin (9600); bt.inceput (9600); pinMode (tx, OUTPUT); pinMode (rx, INPUT); }
În bucla pentru totdeauna, trebuie doar să primim ceea ce trimitem de la Arduino care transmite. Dacă bufferul de recepție a primit unele date de la HC05, atunci afișați orice este primit pe monitorul serial.
bucla void () {if (bt.available ()> 0) { Serial.println (bt.read ()); }}
După ce ați încărcat codurile respective pe fiecare Arduino, deschideți monitorul serial pe Arduino-ul de primire. Asigurați-vă că alegeți rata de transmisie ca 9600 și linia care se termină ca Newline în monitorul serial. Dacă totul funcționează bine, ar trebui să vedeți 123.
Notă: Dacă ați conectat atât Arduino-ul de transmisie, cât și cel de recepționare la același laptop, asigurați-vă că alegeți portul COM potrivit sub TOOLS> PORT Ar trebui să fiți conectat la portul COM al receptorului Arduino.
(…)Dacă totul merge bine, schimbați modulele HC05 pentru a vă asigura că comunicarea se poate întâmpla în ambele direcții și SUNTEM GATA!