- Reikalingos medžiagos
- Grandinės schema
- Pradinė HC05 modulių konfigūracija
- „Arduino“ - „Arduino“ „Bluetooth“ ryšio testavimas
HC-05 „Bluetooth“ moduliai yra bet kurio „Arduino“ projekto „Bluetooth“ moduliai! Tai lengva prijungti ir koduoti „Arduino IDE“. Daugumoje projektų mes paprastai prisijungiame prie „HC05“ prie „Arduino“ ir naudojame jį belaidžiu ryšiu su kitu išmaniuoju įrenginiu, pavyzdžiui, mobiliuoju telefonu. Tai gana paprasta ir mes sukūrėme daug įdomių projektų, tokių kaip „Bluetooth“ valdomas robotas, „Bluetooth“ balso valdymas, „Bluetooth“ namų automatika ir kt. Tačiau ar jums kada nors reikėjo sujungti du „HC-05“? HC05 prijungti prie išmaniojo telefono nėra taip paprasta, yra keletas papildomų veiksmų. Ši pamoka padės jums atlikti šį procesą. Šokime tiesiai!
Reikalingos medžiagos
- 2x „ Arduino“ (tiks bet kuris modelis; naudoju „Arduino Uno R3“ ir „Arduino Nano“)
- 2x „ HC05 Bluetooth“ moduliai
- Bandomoji Lenta
- Šuolių laidai
- 2x 1kΩ rezistorius
- 2x 2.2kΩ rezistorius
Grandinės schema
Tai yra pagrindinė schema. Įjunkite 2 iš šių grandinių, vieną valdikliui ir kitą vergui. Dėl jungčių viskas, ką čia darome, yra HC05 prijungimas prie „Arduino“. HC05 imtuvo (Rx) kaištis veikia nuo 0 V iki 3,3 V, o „Arduino“ - nuo 0 V iki 5 V. Taigi, naudosime rezistorius (R1 ir R2), kad sukurtume įtampos daliklį, kad sumažintume „Arduino“ 5 V išėjimą iki 3,3 V, kad nebūtų pažeistas HC05 modulis.
Aš naudoju 1kΩ R1 ir 2.2KΩ R2, bet jūs galite naudoti bet kokią rezistoriaus vertę, jei R2 yra maždaug dvigubai didesnė už R1 (R2 ≈ 2R1). Panašiai pakartokite grandinę tiek pagrindiniam, tiek vergui, toliau pateikiamos „ Arduino Master“ „Bluetooth“ grandinė ir „ Arduino Slave Bluetooth“ grandinė.
Pradinė HC05 modulių konfigūracija
Tai yra papildomas žingsnis, reikalingas norint sujungti du HC05 modulius. Turime pakeisti kai kuriuos „HC05 Bluetooth“ modulio nustatymus, kad tai padarytume, turime pereiti į HC05 modulio AT komandų režimą ir siųsti jam komandas per „Arduino IDE“ nuoseklųjį monitorių. Norėdami tai padaryti, turime parašyti „Arduino“ kodą komandoms siųsti per serijinį monitorių į HC05.
Kodas konfigūruoti HC05 modulį galima rasti šio puslapio apačioje Kodekso paaiškinimas yra toks
Prie šio kodo pridėkite „SoftwareSerial“ biblioteką.
#include < SoftwareSerial.h>
Apibrėžkite siuntimo (Tx) ir Gavimo (Rx) PIN kodus. Aš naudoju 2 kaištį Tx ir 3 kaištį Rx.
#define tx 2 #define rx 3
Suteikite „Bluetooth“ ryšiui pavadinimą (čia aš naudoju configBt), tada „SoftwareSerial“ bibliotekai pasakykite, kuris kaištis yra Tx, o kuris - Rx. Sintaksė yra „ bluetoothName“ (Rx, Tx);
„SoftwareSerial configBt“ (rx, tx); // RX, TX
Norėdamas sukonfigūruoti „Bluetooth“ modulį, „Arduino“ turi siųsti jam komandas 38400 baudų greičiu. Panašiai nustatėme „Bluetooth“ ryšio perdavimo greitį ir 38400 baudą. Nustatykite „Transmit“ (Tx) į išvesties kaištį ir „Receive“ (Rx) į įvesties kaištį
negaliojanti sąranka () { Serial.begin (38400); configBt.begin (38400); pinMode (tx, OUTPUT); pinMode (rx, INPUT); }
Amžinai kilpos viduje turime pagrindinę kodo dalį. Idėja yra siųsti viską, kas įvedama į serijinio monitoriaus teksto laukelį, į HC05 per „Arduino“ Tx kaištį. Tada serijiniame monitoriuje rodykite viską, ką išleidžia HC05.
void loop () {if (configBt.available ()) // jei HC05 kažką siunčia… { Serial.print (configBt.readString ()); // spausdinti serijiniame monitoriuje} if (Serial.available ()) // jei serijinis monitorius kažką pateikia… {configBt.write (Serial.read ()); // rašykite į „Arduino“ Tx kaištį}}
Pirmiausia įkelkite šį kodą į „Arduino“, prijungtą prie pagrindinio HC05 modulio. Įkėlę kodą, ištraukite „Arduino“ maitinimo laidą. Paspauskite ir palaikykite HC05 mygtuką. Dabar prijunkite „Arduino“ maitinimo laidą, vis tiek laikydami mygtuką HC05. Gerai, dabar galite atleisti mygtuką HC05. Taip pereisite į HC05 AT režimą. Norėdami patikrinti, ar tinkamai padarėte, įsitikinkite, kad raudona lemputė HC05 mirksi maždaug kas sekundę (lėtai mirksi!). Paprastai prieš prijungiant „HC05“ prie bet kurio „Bluetooth“ įrenginio, raudona lemputė mirksi labai aukštu dažniu (greitai mirksi!).
Tada atidarykite nuoseklųjį monitorių (serijinio monitoriaus mygtukas yra „Arduino IDE“ viršuje, dešinėje). Apatiniame dešiniajame „Serial“ monitoriaus lango kampe, jei dar to nepadarėte, įsitikinkite, kad nustatėte eilutės pabaigos nustatymą į „Tiek NL, tiek CL“, o perdavimo spartą - į 38400. Dabar serijiniame monitoriuje įveskite AT, jei viskas gerai, gausite „OK“ iš serijos monitoriaus lange rodomo HC05. Sveikiname! Jūs sėkmingai prisijungėte prie HC05 modulio AT komandų režimo.
Toliau pateiktoje lentelėje įveskite šias komandas, kad sukonfigūruotumėte pagrindinį HC05 modulį:
COMMAND (įveskite tai serijiniame monitoriuje ir paspauskite enter) |
REAKCIJA (atsakinėti nuo HC05, rodomas serijos monitoriaus) |
Funkcija (ką veikia ši komanda?) |
AT |
Gerai |
Testas |
AT + CMODE? |
Gerai |
Patikrinkite CMODE arba ryšio režimą ----------------------------- CMODE: 0 yra vergas 1 yra meistras |
AT + CMODE = 1 |
Gerai |
Nustatykite CMODE į 1, kai konfigūruojame pagrindinį HC05 |
AT + ADDR? |
+ ADDR: FCA8: 9A: 58D5 Gerai * Tai mano meistro HC05 adresas. Jūsų adresas bus kitoks! |
Grąžina HC05 adresą, pažymėkite tai, nes mums jo prireiks vėliau! |
Tada prijunkite kompiuterį prie kito vergo HC05 :
COMMAND (įveskite tai serijiniame monitoriuje ir paspauskite enter) |
REAKCIJA (atsakinėti nuo HC05, rodomas serijos monitoriaus) |
Funkcija (ką veikia ši komanda?) |
AT |
Gerai |
Testas |
AT + CMODE? |
Gerai |
Patikrinkite CMODE arba ryšio režimą ----------------------------- CMODE: 0 yra vergas 1 yra meistras |
AT + CMODE = 0 |
Gerai |
Nustatykite CMODE į 0, kai konfigūruojame vergą HC05 |
AT + BIND = FCA8,9A, 58D5 * Pakeiskite „:“ pagrindiniame HC05 adrese į „,“ * Čia aš naudoju pagrindinio HC05 adresą, kurį užsirašiau iš ankstesnės lentelės. Turėtumėte naudoti savo pagrindinio HC05 adresą! |
Gerai |
Nustatomas pagrindinio HC05 adresas, prie kurio šis vergas HC05 automatiškai prisijungs įkrovos metu |
AT + BIND? |
+ BIND: FCA8: 9A: 58D5 Gerai * Tai mano meistro HC05 adresas. Jūsų adresas bus kitoks! |
Patikrinkite savo vergo susiejimo adresą. Jei jis sutampa su jūsų meistro HC05 adresu, galite eiti! |
„Arduino“ - „Arduino“ „Bluetooth“ ryšio testavimas
Pirmiausia įjunkite tiek pagrindinį, tiek pavaldųjį HC05 modulius. Įjungus maitinimą ir praėjus kelioms sekundėms, pažvelkite į raudoną lemputę ant HC05 modulių.
Mirksi raudonos lemputės greitis |
Ką tai reiškia |
Mirksi labai dažnai (greitai mirksi!) |
Negerai! Tai reiškia, kad jūsų HC05 moduliai nesijungia vienas su kitu! Laikas pašalinti triktis! |
Mirksi žemu dažniu (lėtai mirksi!) |
Malonu! Jūs tai padarėte! Bet vis tiek turime atlikti dar vieną patikrinimą, kad būtume tikri, jog ši sąranka veikia! Pereik! |
Kai raudonos lemputės mirksi žemu dažniu (lėtai mirksi!), Galite būti tikri, kad abu jūsų HC05 yra sujungti vienas su kitu, tačiau mes netikrinome, ar duomenis galima perduoti pirmyn ir atgal tarp pagrindinio ir vergo. Juk tai čia pagrindinis tikslas.
Įkelkite žemiau esantį kodą į vieną iš „Arduinos“, tai yra kodas, skirtas bandyti siųstuvą (Tx). Vėlgi, visą siųstuvo ir imtuvo kodą rasite šio puslapio apačioje.
Vadovaudamiesi ankstesniu kodu, prie šio kodo pridedame „SoftwareSerial“ biblioteką ir nustatome perdavimo (Tx) ir Gavimo (Rx) PIN kodus. Tada mes pavadiname „Bluetooth“ ryšį ir perduodame „Tx“ ir „Rx“ PIN kodus bibliotekai.
#include < SoftwareSerial.h> #define tx 2 #define rx 3 SoftwareSerial bt (rx, tx); // RX, TX
Sąrankos funkcijoje mes vėl nustatome „Arduino“ serijinio monitoriaus ir „Bluetooth“ perdavimo spartą. Ar čia matote skirtumą, palyginti su ankstesniu kodu? Mes naudojame 9600 baudų perdavimo spartą. Tai yra numatytasis iš anksto nustatytas „HC05 Bluetooth“ modulio ryšio perdavimo greitis bendraujant su kitais „Bluetooth“ įrenginiais. Taigi, atkreipkite dėmesį, kad 38400 baudų yra skirtas HC05 konfigūruoti naudojant AT komandas, o 9600 baudas yra numatytasis HC05 modulio perdavimo greitis. Galiausiai, kaip ir anksčiau, mes sukonfigūravome Tx kaištį kaip išvestį ir Rx kaištį kaip įvestį.
negaliojanti sąranka () { Serial.begin (9600); pradžia (9600); pinMode (tx, OUTPUT); pinMode (rx, INPUT); }
Amžinai kilpos viduje viskas, ką mes darome, yra perduodama atsitiktinę reikšmę „123“ per HC05.
tuštuma kilpa () {bt.write (123); }
Įkelkite šį kodą į kitą „Arduino“, tai yra kodas, kurį reikia patikrinti norint gauti (Rx):
Lygiai tas pats, kas ankstesni kodai, konfigūruojame „SoftwareSerial“ biblioteką.
#include < SoftwareSerial.h> #define tx 2 #define rx 3 SoftwareSerial bt (rx, tx); // RX, TX
Sąrankos funkcijos kodas yra visiškai toks pat, kaip ir testuoti siuntimą (Tx).
negaliojanti sąranka () { Serial.begin (9600); pradžia (9600); pinMode (tx, OUTPUT); pinMode (rx, INPUT); }
Amžinai kilpoje mes tiesiog turime gauti tai, ką siunčiame iš perduodančio „Arduino“. Jei priėmimo buferis gavo kai kuriuos duomenis iš HC05, tada rodykite viską, kas gauta serijiniame monitoriuje.
void loop () {if (bt.available ()> 0) { Serial.println (bt.read ()); }}
Įkėlę atitinkamus kodus į kiekvieną „Arduino“, atidarykite „Serial“ monitorių priimančiam „Arduino“. Nuosekliame monitoriuje įsitikinkite, kad duomenų perdavimo sparta yra 9600, o eilutė baigiasi „Newline“. Jei viskas gerai, turėtumėte pamatyti 123.
Pastaba: Jei prie to paties nešiojamojo kompiuterio prijungėte tiek siunčiantį, tiek gaunantį „Arduinos“, įsitikinkite, kad pasirinkote tinkamą COM prievadą, esantį TOOLS> PORT. Turėtumėte prisijungti prie gaunančio „Arduino“ COM prievado.
AJei viskas gerai, pakeiskite HC05 modulius, kad įsitikintumėte, jog komunikacija gali vykti abiem kryptimis, ir MES DAROM!