- Potřebné materiály
- Kruhový diagram
- Počáteční konfigurace modulů HC05
- Testování komunikace Arduino na Arduino Bluetooth
Moduly Bluetooth HC-05 jsou univerzální moduly Bluetooth pro jakýkoli projekt Arduino! Je snadné se připojit a kódovat v Arduino IDE. Ve většině projektů se obvykle připojujeme k HC05 k Arduinu a používáme jej k bezdrátové komunikaci s jiným chytrým zařízením, jako je mobilní telefon. To je docela jednoduché a vytvořili jsme s ním mnoho zajímavých projektů, jako je Bluetooth Controlled Robot, Bluetooth Voice Control, Bluetooth Home Automation atd. Už jste někdy potřebovali spojit dva HC-05 dohromady? Není to tak jednoduché připojení HC05 ke smartphonu, je třeba provést několik dalších kroků. Tento návod vás provede tímto procesem. Pojďme skočit přímo dovnitř!
Potřebné materiály
- 2x Arduino (Bude fungovat jakýkoli model; používám Arduino Uno R3 a Arduino Nano)
- 2x HC05 Bluetooth moduly
- Nepájivá deska
- Propojovací dráty
- 2x 1kΩ rezistor
- 2x 2,2 kΩ rezistor
Kruhový diagram
Toto je základní schéma zapojení. Připojte 2 z těchto obvodů, jeden pro hlavní a druhý pro podřízené. Pokud jde o připojení, vše, co zde děláme, je připojení HC05 k Arduinu. Kolík přijímače (Rx) HC05 pracuje v rozsahu 0V až 3,3V a Arduino pracuje v rozsahu 0V až 5V. Takže použijeme rezistory (R1 a R2) k vytvoření děliče napětí, abychom snížili výstup 5V Arduina na 3,3V, abychom nepoškodili modul HC05.
Používám 1kΩ pro R1 a 2,2KΩ pro R2, ale můžete použít jakoukoli hodnotu rezistoru, pokud je R2 přibližně dvojnásobná hodnota R1 (R2 ≈ 2R1). Podobně opakujte obvod pro master i slave, Arduino Master Bluetooth Circuit a Arduino Slave Bluetooth Circuit jsou zobrazeny níže.
Počáteční konfigurace modulů HC05
Toto je další krok nutný k propojení dvou modulů HC05 dohromady. Musíme změnit některá nastavení uvnitř modulu Bluetooth HC05, abychom toho dosáhli, musíme přejít do režimu AT Command modulu modulu HC05 a odeslat do něj příkazy přes sériový monitor Arduino IDE. Abychom to mohli udělat, musíme napsat kód Arduino pro odesílání příkazů přes sériový monitor do HC05.
Kód ke konfiguraci modulu HC05 lze nalézt v dolní části této stránky, vysvětlení kódu je následující:
Přidejte do tohoto kódu knihovnu SoftwareSerial.
#include < SoftwareSerial.h>
Definujte čísla pinů pro vysílání (Tx) a příjem (Rx). Používám pin 2 pro Tx a pin 3 pro Rx.
#define tx 2 #define rx 3
Pojmenujte připojení Bluetooth (zde používám configBt), pak řekněte knihovně SoftwareSerial, který pin je Tx a který pin je Rx. Syntaxe je bluetoothName (Rx, Tx);
SoftwareSerial configBt (rx, tx); // RX, TX
Aby bylo možné nakonfigurovat modul Bluetooth, musí mu Arduino odesílat příkazy s přenosovou rychlostí 38400 baudů. Podobně jsme nastavili přenosovou rychlost připojení Bluetooth také na 38 400 baudů. Nastavte Transmit (Tx) na výstupní pin a příjem (Rx) na vstupní pin
void setup () { Serial.begin (38400); configBt.begin (38400); pinMode (tx, OUTPUT); pinMode (rx, INPUT); }
Uvnitř věčné smyčky máme hlavní část kódu. Myšlenkou je poslat vše, co je napsáno do textového pole v sériovém monitoru, na HC05 přes pin Tx Arduino. Poté zobrazte vše, co je na výstupu HC05 na sériovém monitoru.
void loop () {if (configBt.available ()) // pokud HC05 něco posílá… { Serial.print (configBt.readString ()); // tisk na sériovém monitoru} if (Serial.available ()) // pokud sériový monitor něco vydává… {configBt.write (Serial.read ()); // zápis na Arduino Tx pin}}
Nejprve nahrajte tento kód do Arduina připojeného k hlavnímu modulu HC05. Po nahrání kódu připojte napájecí kabel Arduino. Stiskněte a podržte tlačítko na HC05. Nyní připojte napájecí kabel Arduino, zatímco stále držíte tlačítko na HC05. Dobře, nyní můžete uvolnit tlačítko na HC05. Takto přejdete do režimu AT u HC05. Chcete-li zkontrolovat, zda jste to udělali správně, ujistěte se, že červená kontrolka na HC05 bliká přibližně každou sekundu (pomalu bliká!). Normálně předtím, než je HC05 připojen k jakémukoli zařízení Bluetooth, bliká červené světlo na velmi vysoké frekvenci (rychlé blikání!).
Dále otevřete sériový monitor (tlačítko sériového monitoru je v pravém horním rohu IDE Arduino). Pokud jste tak ještě neučinili v pravém dolním rohu okna Serial monitor, nezapomeňte nastavit konec řádku na „NL i CL“ a přenosovou rychlost na 38400. Nyní zadejte AT do sériového monitoru, pokud vše proběhne dobře, dostanete „OK“ z HC05 zobrazeného v okně sériového monitoru. Gratulujeme! Úspěšně jste se přihlásili do příkazového režimu AT modulu HC05.
Nyní zadejte následující příkazy v tabulce níže a nakonfigurujte hlavní modul HC05:
PŘÍKAZ (zadejte toto do sériového monitoru a stiskněte klávesu Enter) |
ODPOVĚĎ (odpověď od HC05, zobrazená na sériovém monitoru) |
Funkce (Co dělá tento příkaz?) |
V |
OK |
Test |
V + CMODE? |
OK |
Zkontrolujte CMODE nebo režim připojení ----------------------------- CMODE: 0 je otrok 1 je pán |
AT + CMODE = 1 |
OK |
Při konfiguraci masteru HC05 nastavte CMODE na 1 |
AT + ADDR? |
+ ADDR: FCA8: 9A: 58D5 OK * Toto je adresa mého pána HC05. Vaše adresa bude jiná! |
Vrátí adresu HC05, poznamenejte si ji, protože ji budeme později potřebovat! |
Dále připojte počítač k vašemu dalšímu HC05, podřízenému:
PŘÍKAZ (zadejte toto do sériového monitoru a stiskněte klávesu Enter) |
ODPOVĚĎ (odpověď od HC05, zobrazená na sériovém monitoru) |
Funkce (Co dělá tento příkaz?) |
V |
OK |
Test |
V + CMODE? |
OK |
Zkontrolujte CMODE nebo režim připojení ----------------------------- CMODE: 0 je otrok 1 je pán |
AT + CMODE = 0 |
OK |
Při konfiguraci podřízeného HC05 nastavte CMODE na 0 |
AT + BIND = FCA8,9A, 58D5 * Nahraďte „:“ v hlavní adrese HC05 za „,“ * Zde používám adresu nadřazeného HC05, kterou jsem si poznamenal z předchozí tabulky. Měli byste použít adresu vašeho masteru HC05! |
OK |
Nastavení adresy hlavního HC05, ke kterému se tento podřízený HC05 automaticky připojí při spuštění |
AT + BIND? |
+ BIND: FCA8: 9A: 58D5 OK * Toto je adresa mého pána HC05. Vaše adresa bude jiná! |
Zkontrolujte závaznou adresu vašeho otroka. Pokud se shoduje s adresou vašeho masteru HC05, můžete vyrazit! |
Testování komunikace Arduino na Arduino Bluetooth
Nejprve napájejte hlavní i vedlejší moduly HC05. Po zapnutí a několika sekundách se podívejte na červené světlo na modulech HC05.
Blikající rychlost červeného světla |
Co to znamená |
Bliká na velmi vysoké frekvenci (rychle bliká!) |
Špatný! To znamená, že se vaše moduly HC05 navzájem nepřipojují! Je čas na řešení problémů! |
Bliká na nízké frekvenci (pomalu bliká!) |
Pěkný! Dokázali jste to! Ale stále musíme udělat ještě jednu kontrolu, abychom si byli naprosto jisti, že toto nastavení funguje! Pokračujte! |
Jakmile vaše červená světla blikají na nízké frekvenci (pomalu blikají!), Můžete si být jisti, že obě vaše HC05 jsou navzájem propojeny, ale netestovali jsme, zda lze mezi hlavní a podřízenou jednotkou posílat data tam a zpět. Koneckonců, to je zde hlavní účel.
Nahrajte níže uvedený kód do jednoho z Arduinos, to je kód pro testování vysílače (Tx), opět kompletní kód pro vysílač i přijímač najdete ve spodní části této stránky.
V návaznosti na předchozí kód přidáme do tohoto kódu knihovnu SoftwareSerial a definujeme čísla pinů pro přenos (Tx) a příjem (Rx). Poté pojmenujeme připojení Bluetooth a předáme čísla pinů Tx a Rx do knihovny.
#include < SoftwareSerial.h> #define tx 2 #define rx 3 SoftwareSerial bt (rx, tx); // RX, TX
Ve funkci nastavení opět nastavujeme přenosovou rychlost pro sériový monitor Arduino a Bluetooth. Vidíte zde rozdíl oproti předchozímu kódu? Používáme přenosovou rychlost 9600 baudů. Toto je výchozí přednastavená přenosová rychlost komunikace modulu Bluetooth HC05 při komunikaci s jinými zařízeními Bluetooth. Všimněte si tedy, že 38400 baudů je pro konfiguraci HC05 pomocí AT příkazů a 9600 baudů je výchozí baudová rychlost modulu HC05. Nakonec, stejně jako předtím, nakonfigurujeme Tx pin jako výstup a Rx pin jako vstup.
void setup () { Serial.begin (9600); bt.začátek (9600); pinMode (tx, OUTPUT); pinMode (rx, INPUT); }
Uvnitř věčné smyčky vše, co děláme, je přenos náhodné hodnoty „123“ přes HC05.
void loop () {bt.write (123); }
Nahrajte tento kód do druhého Arduina, toto je kód pro testování příjmu (Rx):
Přesně stejné jako u předchozích kódů nakonfigurujeme knihovnu SoftwareSerial.
#include < SoftwareSerial.h> #define tx 2 #define rx 3 SoftwareSerial bt (rx, tx); // RX, TX
Kód ve funkci nastavení je přesně stejný jako kód pro testování přenosu (Tx).
void setup () { Serial.begin (9600); bt.začátek (9600); pinMode (tx, OUTPUT); pinMode (rx, INPUT); }
Ve smyčce navždy musíme jen přijmout to, co posíláme z vysílajícího Arduina. Pokud přijímací vyrovnávací paměť přijala některá data z HC05, zobrazte vše, co je přijato na sériovém monitoru.
void loop () {if (bt.available ()> 0) { Serial.println (bt.read ()); }}
Po nahrání příslušných kódů do každého Arduina otevřete sériový monitor přijímajícího Arduina. Ujistěte se, že jste na sériovém monitoru zvolili přenosovou rychlost 9600 a řádek končící jako Newline. Pokud vše funguje, měli byste vidět 123.
Poznámka: Pokud jste připojili vysílací i přijímací Arduinos ke stejnému notebooku, ujistěte se, že jste vybrali správný COM port v části TOOLS> PORT. Měli byste být připojeni k COM portu přijímajícího Arduina.
Pokud vše půjde dobře, vyměňte moduly HC05 a ujistěte se, že může dojít ke komunikaci v obou směrech a JSME HOTOVI!