- Potrebné materiály
- Schéma zapojenia
- Počiatočná konfigurácia modulov HC05
- Testovanie Bluetooth medzi Arduino a Arduino
Moduly Bluetooth HC-05 sú univerzálnymi modulmi Bluetooth pre všetky projekty Arduino! Je ľahké sa pripojiť a kódovať v Arduino IDE. Vo väčšine projektov sa zvyčajne pripájame k HC05 k Arduinu a pomocou neho bezdrôtovo komunikujeme s iným inteligentným zariadením, napríklad s mobilným telefónom. To je pomerne jednoduché a vytvorili sme s ním veľa zaujímavých projektov, ako je Bluetooth Controlled Robot, Bluetooth Voice Control, Bluetooth Home Automation atď. Potrebovali ste však niekedy spojiť dva HC-05 dohromady? Nie je to také jednoduché ako pripojenie HC05 k smartfónu, sú potrebné ďalšie kroky. Tento návod vás prevedie týmto procesom. Poďme priamo do toho!
Potrebné materiály
- 2x Arduino (každý model bude stačiť; používam Arduino Uno R3 a Arduino Nano)
- 2x HC05 Bluetooth moduly
- Nepál
- Prepojovacie drôty
- 2x 1kΩ rezistor
- 2x rezistor 2,2 kΩ
Schéma zapojenia
Toto je základná schéma zapojenia. Pripojte 2 z týchto obvodov, jeden pre hlavný a druhý pre podradený. Pokiaľ ide o pripojenia, všetko, čo tu robíme, je pripojenie HC05 k Arduinu. Kolík prijímača (Rx) HC05 pracuje v rozsahu 0 V až 3,3 V a Arduino pracuje v rozsahu 0 V až 5 V. Takže pomocou rezistorov (R1 a R2) vytvoríme rozdeľovač napätia, aby sme znížili výstup 5V Arduina na 3,3V, aby sme nepoškodili modul HC05.
Používam 1kΩ pre R1 a 2,2KΩ pre R2, ale môžete použiť ľubovoľnú hodnotu rezistora, pokiaľ je R2 približne dvojnásobná oproti hodnote R1 (R2 ≈ 2R1). Podobne opakujte obvod pre master aj slave, ďalej sú uvedené Arduino Master Bluetooth Circuit a Arduino Slave Bluetooth Circuit.
Počiatočná konfigurácia modulov HC05
Toto je ďalší krok potrebný na spojenie dvoch modulov HC05 dohromady. Musíme zmeniť niektoré nastavenia vo vnútri modulu Bluetooth HC05, aby sme to dosiahli, musíme ísť do režimu príkazového riadenia modulu HC05 a odosielať doň príkazy prostredníctvom sériového monitora Arduino IDE. Aby sme to dosiahli, musíme napísať Arduino kód na zasielanie príkazov cez sériový monitor do HC05.
Kód ku konfigurácii modulu HC05 možno nájsť v dolnej časti tejto stránky, vysvetlenie kódu je nasledovné:
Pridajte do tohto kódu knižnicu SoftwareSerial.
#include < SoftwareSerial.h>
Definujte čísla pinov vysielania (Tx) a príjmu (Rx). Používam pin 2 pre Tx a pin 3 pre Rx.
#define tx 2 #define rx 3
Dajte Bluetooth spojeniu nejaké meno (tu používam configBt), potom povedzte knižnici SoftwareSerial, ktorý pin je Tx a ktorý pin je Rx. Syntax je bluetoothName (Rx, Tx);
SoftwareSerial configBt (rx, tx); // RX, TX
Aby bolo možné nakonfigurovať modul Bluetooth, musí mu Arduino posielať príkazy s prenosovou rýchlosťou 38 400 baudov. Podobne sme nastavili prenosovú rýchlosť aj Bluetooth pripojenia na 38 400 baudov. Nastavte Transmit (Tx) na výstupný pin a Receive (Rx) na vstupný pin
void setup () { Serial.begin (38400); configBt.begin (38400); pinMode (tx, VÝSTUP); pinMode (rx, INPUT); }
Vo vnútri navždy slučky máme hlavnú časť kódu. Myšlienkou je poslať čokoľvek, čo je napísané do textového poľa na sériovom monitore, na HC05 cez pin Tx od Arduina. Potom zobrazte čokoľvek, čo je výstupom HC05 na sériovom monitore.
void loop () {if (configBt.available ()) // ak HC05 niečo posiela… { Serial.print (configBt.readString ()); // tlač na sériovom monitore} if (Serial.available ()) // ak zo sériového monitora niečo vychádza… {configBt.write (Serial.read ()); // zápis na pin Tu spoločnosti Arduino}}
Najskôr nahrajte tento kód do Arduina pripojeného k hlavnému modulu HC05. Po nahraní kódu odpojte napájací kábel Arduino. Stlačte a podržte tlačidlo na HC05. Teraz pripojte napájací kábel Arduino a stále držte tlačidlo na HC05. Dobre, teraz môžete uvoľniť tlačidlo na HC05. Takto prepnete do režimu AT modelu HC05. Ak chcete skontrolovať, či ste postupovali správne, ubezpečte sa, že červené svetlo na HC05 bliká približne každú sekundu (pomaly bliká!). Normálne predtým, ako je HC05 pripojený k ľubovoľnému zariadeniu Bluetooth, bliká červené svetlo na veľmi vysokej frekvencii (rýchle blikanie!).
Ďalej otvorte sériový monitor (tlačidlo sériového monitora je vpravo hore na IDE Arduino). Ak ste to ešte neurobili, v pravom dolnom rohu okna Sériové monitory nastavte nastavenie konca riadku na „NL aj CL“ a prenosovú rýchlosť na 38 400. Teraz zadajte AT na sériovom monitore, ak všetko dobre dopadne, dostanete „OK“ z HC05 zobrazeného v okne sériového monitora. Blahoželáme! Úspešne ste sa prihlásili do príkazového režimu AT modulu HC05.
Teraz zadajte nasledujúce príkazy do tabuľky nižšie, aby ste nakonfigurovali hlavný modul HC05:
PRÍKAZ (zadajte to do sériového monitora a stlačte kláves Enter) |
ODPOVEĎ (odpoveď od HC05, zobrazená na sériovom monitore) |
Funkcia (Čo robí tento príkaz?) |
AT |
Ok |
Test |
AT + CMODE? |
Ok |
Skontrolujte CMODE alebo režim pripojenia ----------------------------- CMODE: 0 je otrok 1 je pán |
AT + CMODE = 1 |
Ok |
Nastavte CMODE na 1, keď konfigurujeme master HC05 |
AT + ADDR? |
+ ADDR: FCA8: 9A: 58D5 Ok * Toto je adresa môjho masteru HC05. Vaša adresa bude iná! |
Vráti adresu HC05, poznamenajte si ju, pretože ju budeme neskôr potrebovať! |
Ďalej pripojte počítač k ďalšiemu podriadenému zariadeniu HC05 :
PRÍKAZ (zadajte to do sériového monitora a stlačte kláves Enter) |
ODPOVEĎ (odpoveď od HC05, zobrazená na sériovom monitore) |
Funkcia (Čo robí tento príkaz?) |
AT |
Ok |
Test |
AT + CMODE? |
Ok |
Skontrolujte CMODE alebo režim pripojenia ----------------------------- CMODE: 0 je otrok 1 je pán |
AT + CMODE = 0 |
Ok |
Nastavte CMODE na 0, keď konfigurujeme podradený HC05 |
AT + BIND = FCA8,9A, 58D5 * Nahraďte „:“ v hlavnej adrese HC05 za „,“ * Tu používam adresu master HC05, ktorú som si poznamenal z predchádzajúcej tabuľky. Mali by ste použiť adresu vášho masteru HC05! |
Ok |
Nastavenie adresy hlavnej HC05, ku ktorej sa tento podriadený HC05 automaticky pripojí pri štarte |
AT + BIND? |
+ BIND: FCA8: 9A: 58D5 Ok * Toto je adresa môjho masteru HC05. Vaša adresa bude iná! |
Skontrolujte záväznú adresu vášho otroka. Ak sa zhoduje s adresou vášho mastera HC05, môžete vyraziť! |
Testovanie Bluetooth medzi Arduino a Arduino
Najskôr napájajte hlavný aj vedľajší modul HC05. Po zapnutí a niekoľkých sekundách sa pozrite na červené svetlo na moduloch HC05.
Bliká Rýchlosť červeného svetla |
Čo to znamená |
Bliká na veľmi vysokej frekvencii (rýchlo bliká!) |
Nie dobré! Znamená to, že sa vaše moduly HC05 navzájom nespájajú! Je čas na riešenie problémov! |
Bliká pri nízkej frekvencii (pomaly bliká!) |
Pekný! Dokázali ste to! Stále však musíme urobiť ešte jednu kontrolu, aby sme si boli istí, že toto nastavenie funguje! Pohni sa! |
Akonáhle vaše červené svetlá blikajú na nízkej frekvencii (pomaly blikajú!), Môžete si byť istí, že obe vaše HC05 sú navzájom prepojené, ale netestovali sme, či je možné medzi hlavnou a podriadenou jednotkou posielať dáta tam a späť. To je koniec koncov hlavný účel.
Vložte nasledujúci kód do jedného z Arduinos, to je kód na testovanie vysielača (Tx), kompletný kód pre vysielač aj prijímač nájdete opäť v dolnej časti tejto stránky.
Podľa predchádzajúceho kódu pridáme do tohto kódu knižnicu SoftwareSerial a definujeme čísla pinov vysielania (Tx) a príjmu (Rx). Potom pomenujeme pripojenie Bluetooth a odovzdáme čísla pinov Tx a Rx do knižnice.
#include < SoftwareSerial.h> #define tx 2 #define rx 3 SoftwareSerial bt (rx, tx); // RX, TX
Vo funkcii nastavenia nastavujeme opäť prenosovú rýchlosť pre sériový monitor Arduino a Bluetooth. Vidíte tu rozdiel v porovnaní s predchádzajúcim kódom? Používame prenosovú rýchlosť 9600 baudov. Toto je predvolená prednastavená prenosová rýchlosť komunikácie modulu HC05 Bluetooth pri komunikácii s inými zariadeniami Bluetooth. Upozorňujeme, že 3 800 baudov slúži na konfiguráciu HC05 pomocou AT príkazov a 1 600 baudov je predvolená prenosová rýchlosť modulu HC05. Nakoniec, rovnako ako predtým, nakonfigurujeme pin Tx ako výstup a pin Rx ako vstup.
void setup () { Serial.begin (9600); bt.začiatok (9600); pinMode (tx, VÝSTUP); pinMode (rx, INPUT); }
Vo vnútri navždy slučky všetko, čo robíme, je vysielanie náhodnej hodnoty „123“ cez HC05.
void loop () {bt.write (123); }
Nahrajte tento kód do druhého Arduina, toto je kód na testovanie príjmu (Rx):
Presne to isté ako predchádzajúce kódy konfigurujeme knižnicu SoftwareSerial.
#include < SoftwareSerial.h> #define tx 2 #define rx 3 SoftwareSerial bt (rx, tx); // RX, TX
Kód vo funkcii nastavenia je úplne rovnaký ako kód na testovanie prenosu (Tx).
void setup () { Serial.begin (9600); bt.začiatok (9600); pinMode (tx, VÝSTUP); pinMode (rx, INPUT); }
V navždy slučke stačí prijať to, čo posielame z vysielajúceho Arduina. Ak prijímacia vyrovnávacia pamäť prijala nejaké dáta z HC05, potom zobrazte všetko, čo je prijaté na sériovom monitore.
void loop () {if (bt.available ()> 0) { Serial.println (bt.read ()); }}
Po nahraní príslušných kódov do každého Arduina otvorte sériový monitor na prijímajúcom Arduine. Uistite sa, že ste na sériovom monitore vybrali prenosovú rýchlosť ako 9600 a riadok končiaci ako Newline. Ak všetko funguje, mali by ste vidieť 123.
Poznámka: Ak ste pripojili vysielač aj prijímač Arduinos k rovnakému notebooku, nezabudnite zvoliť správny port COM v časti TOOLS> PORT. Mali by ste byť pripojení k COM portu prijímajúceho Arduina.
Ak všetko pôjde dobre, vymeňte moduly HC05, aby ste sa uistili, že komunikácia môže prebiehať oboma smermi a SME HOTOVÍ!