- Potrebni materiali
- Shema vezja
- Začetna konfiguracija modulov HC05
- Testiranje komunikacije Bluetooth med Arduino in Arduino
Moduli Bluetooth HC-05 so moduli Bluetooth za vsak projekt Arduino! V Arduino IDE je enostavno povezati in kodirati. V večini projektov se na HC05 običajno povežemo z Arduinom in z njim brezžično komuniciramo z drugo pametno napravo, kot je mobilni telefon. To je dokaj preprosto in z njim smo zgradili številne zanimive projekte, kot so robot z nadzorom Bluetooth, glasovni nadzor Bluetooth, domača avtomatizacija itd. Ali ste že kdaj morali povezati dva HC-05? Povezava HC05 s pametnim telefonom ni tako enostavna, vključenih je nekaj dodatnih korakov. Ta vadnica vas bo vodila skozi ta postopek. Skočimo naravnost!
Potrebni materiali
- 2x Arduino (zadostuje kateri koli model; uporabljam Arduino Uno R3 in Arduino Nano)
- 2x modula Bluetooth HC05
- Breadboard
- Jumper žice
- 2x upor 1kΩ
- 2x upor 2.2kΩ
Shema vezja
To je osnovni diagram vezja. Povežite 2 od teh vezij, eno za glavno in drugo za pomožno enoto. Kar se tiče povezav, tukaj počnemo le povezovanje HC05 z Arduinom. Zatič sprejemnika (Rx) na HC05 deluje na območju od 0V do 3,3V, Arduino pa na območju od 0V do 5V. Torej bomo uporabili upore (R1 in R2) za ustvarjanje napetostnega delilnika za zmanjšanje 5V izhoda Arduina na 3,3V, da ne poškodujemo modula HC05.
Uporabljam 1kΩ za R1 in 2.2KΩ za R2, vendar lahko uporabite katero koli vrednost upora, če je R2 približno dvojna vrednost R1 (R2 ≈ 2R1). Podobno ponovite vezje za glavno in pomožno enoto, spodaj sta prikazana Arduino Master Bluetooth Circuit in Arduino Slave Bluetooth Circuit.
Začetna konfiguracija modulov HC05
To je dodaten korak za povezavo dveh modulov HC05. Spremeniti moramo nekatere nastavitve znotraj modula Bluetooth HC05 Bluetooth, za to pa moramo preiti v ukazni način AT modula HC05 in mu poslati ukaze prek serijskega monitorja Arduino IDE. Za to moramo napisati kodo Arduino za pošiljanje ukazov prek serijskega monitorja na HC05.
Kodo za konfiguracijo HC05 modul lahko najdete na dnu te strani, razlaga kode je, kot sledi
V to kodo dodajte knjižnico SoftwareSerial.
#include < SoftwareSerial.h>
Določite številski številki oddajnika (Tx) in prejema (Rx). Uporabljam pin 2 za Tx in pin 3 za Rx.
#define tx 2 #define rx 3
Povezavi Bluetooth dajte neko ime (tukaj uporabljam configBt), nato povejte knjižnici SoftwareSerial, kateri pin je Tx in kateri PIN. Sintaksa je ime Bluetooth (Rx, Tx);
SoftwareSerial configBt (rx, tx); // RX, TX
Za konfiguracijo modula Bluetooth mu mora Arduino poslati ukaze s hitrostjo prenosa 38400 baudov. Podobno nastavimo tudi hitrost prenosa povezave Bluetooth na 38400 baudov. Nastavite Transmit (Tx) na izhodni zatič in Receive (Rx) na vhodni zatič
void setup () { Serial.begin (38400); configBt.begin (38400); pinMode (tx, IZHOD); pinMode (rx, INPUT); }
Znotraj zanke forever imamo glavni del kode. Ideja tukaj je poslati vse, kar je vtipkano v besedilno polje na serijskem monitorju, na HC05 prek Arduinovega Tx zatiča. Nato na serijskem monitorju prikažite vse, kar odda HC05.
void loop () {if (configBt.available ()) // če HC05 nekaj pošilja… { Serial.print (configBt.readString ()); // tiskanje v serijski monitor}, če (Serial.available ()) // če serijski monitor nekaj oddaja… {configBt.write (Serial.read ()); // piši na Tx pin Arduino}}
Najprej naložite to kodo v Arduino, priključen na glavni modul HC05. Po nalaganju kode priključite napajalni kabel Arduino. Pritisnite in držite gumb na HC05. Zdaj priključite napajalni kabel Arduino, medtem ko še vedno držite gumb na HC05. V redu, zdaj lahko spustite gumb na HC05. Tako preidete v način AT HC05. Če želite preveriti, ali ste to storili pravilno, preverite, ali rdeča lučka na HC05 utripa približno vsako sekundo (počasi utripa!). Običajno, preden je HC05 povezan s katero koli napravo Bluetooth, rdeča lučka utripa na zelo visoki frekvenci (hitro utripa!).
Nato odprite serijski monitor (gumb serijskega monitorja je zgoraj desno v Arduino IDE). Če v spodnjem desnem kotu okna serijskega monitorja tega še niste storili, nastavite nastavitev konca vrstice na »NL in CL« in hitrost prenosa na 38400. Zdaj vnesite AT v serijski monitor, če bo vse v redu, boste na zaslonu HC05, ki je prikazan v oknu serijskega monitorja, dobili »OK«. Čestitamo! Uspešno ste se prijavili v ukazni način AT modula HC05.
Zdaj v spodnjo tabelo vnesite naslednje ukaze za konfiguracijo glavnega modula HC05:
UKAZ (vnesite to v serijski monitor in pritisnite enter) |
ODGOVOR (odgovor HC05, prikazan na serijskem monitorju) |
Funkcija (Kaj počne ta ukaz?) |
AT |
v redu |
Preizkus |
AT + CMODE? |
v redu |
Preverite CMODE ali način povezave ----------------------------- CMODE: 0 je podrejeni 1 je mojster |
AT + CMODE = 1 |
v redu |
Ko konfiguriramo glavni HC05, nastavite CMODE na 1 |
AT + ADDR? |
+ ADDR: FCA8: 9A: 58D5 v redu * To je naslov mojega mojstra HC05. Vaš naslov bo drugačen! |
Vrne naslov HC05, zapišite si to, saj ga bomo potrebovali kasneje! |
Nato računalnik povežite z drugim podrejenim HC05 :
UKAZ (vnesite to v serijski monitor in pritisnite enter) |
ODGOVOR (odgovor HC05, prikazan na serijskem monitorju) |
Funkcija (Kaj počne ta ukaz?) |
AT |
v redu |
Preizkus |
AT + CMODE? |
v redu |
Preverite CMODE ali način povezave ----------------------------- CMODE: 0 je suženj 1 je mojster |
AT + CMODE = 0 |
v redu |
Nastavite CMODE na 0, ko konfiguriramo podrejeni HC05 |
AT + VEZA = FCA8,9A, 58D5 * Zamenjajte “:” v glavnem naslovu HC05 z “,” * Tu uporabljam naslov glavne HC05, ki sem jo zapisal iz prejšnje tabele. Uporabite naslov glavnega vodiča HC05! |
v redu |
Nastavitev naslova glavne HC05, s katero se bo ta pomožni HC05 samodejno povezal ob zagonu |
V + VEZI? |
+ VEZA: FCA8: 9A: 58D5 v redu * To je naslov mojega mojstra HC05. Vaš naslov bo drugačen! |
Preverite naslov vezave svojega sužnja. Če se ujema z naslovom vašega glavnega HC05, ste pripravljeni! |
Testiranje komunikacije Bluetooth med Arduino in Arduino
Najprej napajajte glavni in pomožni modul HC05. Po vklopu in nekaj sekundah si oglejte rdečo luč na modulih HC05.
Utripajoča hitrost rdeče luči |
Kaj pomeni |
Utripa na zelo visoki frekvenci (hitro utripa!) |
Slabo! To pomeni, da se vaši moduli HC05 ne povezujejo med seboj! Čas je za odpravljanje težav! |
Utripa pri nizki frekvenci (počasi utripa!) |
Lepo! Uspelo vam je! Toda še vedno moramo opraviti še en pregled, da smo prepričani, da ta nastavitev deluje! Pojdi naprej! |
Ko rdeče lučke utripajo na nizki frekvenci (počasi utripa!), Ste lahko prepričani, da sta oba HC05 povezana med seboj, vendar nismo preizkusili, ali je mogoče podatke pošiljati naprej in nazaj med glavno in pomožno enoto. Navsezadnje je to glavni namen tukaj.
Naložite spodnjo kodo na enega od Arduinosa, to je koda za testiranje oddajnika (Tx), spet popolno kodo za oddajnik in sprejemnik najdete na dnu te strani.
Po prejšnji kodi tej kodi dodamo knjižnico SoftwareSerial in določimo številki pinov za prenos (Tx) in Receive (Rx). Nato poimenujemo povezavo Bluetooth in knjižnici posredujemo številki Tx in Rx.
#include < SoftwareSerial.h> #define tx 2 #define rx 3 SoftwareSerial bt (rx, tx); // RX, TX
V nastavitveni funkciji znova nastavljamo hitrost prenosa za serijski monitor Arduino in Bluetooth. Ali tukaj vidite razliko v primerjavi s prejšnjo kodo? Uporabljamo hitrost prenosa 9600 baudov. To je privzeta vnaprej nastavljena hitrost prenosa podatkov modula Bluetooth HC05 pri komunikaciji z drugimi napravami Bluetooth. Torej, upoštevajte, da je 38400 baudov za konfiguriranje HC05 z ukazi AT, 9600 baudov pa je privzeta hitrost prenosa modula HC05. Nazadnje, tako kot prej nastavimo Tx pin kot izhod in Rx pin kot vhod.
void setup () { Serial.begin (9600); bt.begin (9600); pinMode (tx, IZHOD); pinMode (rx, INPUT); }
Znotraj večne zanke vse, kar počnemo, je oddajanje naključne vrednosti "123" skozi HC05.
void loop () {bt.write (123); }
Naložite to kodo v drug Arduino, to je koda, ki jo želite preskusiti (Rx):
Popolnoma enako kot prejšnje kode konfiguriramo knjižnico SoftwareSerial.
#include < SoftwareSerial.h> #define tx 2 #define rx 3 SoftwareSerial bt (rx, tx); // RX, TX
Koda v nastavitveni funkciji je popolnoma enaka kot koda za preskus prenosa (Tx).
void setup () { Serial.begin (9600); bt.begin (9600); pinMode (tx, IZHOD); pinMode (rx, INPUT); }
V zanki za vedno moramo le prejeti tisto, kar pošiljamo od oddajajočega Arduina. Če je sprejemni vmesnik prejel nekaj podatkov iz HC05, prikažite vse, kar je bilo prejeto na serijskem monitorju.
void loop () {if (bt.available ()> 0) { Serial.println (bt.read ()); }}
Ko naložite ustrezne kode v vsak Arduino, odprite serijski monitor sprejemniku Arduino. Izberite hitrost prenosa 9600 in vrstico, ki se na serijskem monitorju konča kot Nova vrstica. Če vse deluje v redu, bi morali videti 123.
Opomba: Če ste oddajnik in sprejemnik Arduinos povezali z istim prenosnikom, izberite možnost COM vrata pod TOOLS> PORT Morali bi biti povezani s COM-vrati prejemnika Arduino.
UČe je vse v redu, zamenjajte module HC05, da zagotovite komunikacijo v obe smeri in KONČANI SMO!