V dnešním článku ti detailně ukážeme jak se s tímto modulem pracuje a jak se konfiguruje.
Jak jsme psali v článku UART Bluetooth moduly, jedná se o Bluetooth modul verze 2.0+EDR disponující funkcí SPP (Serial Port Profile). Základní informace o modulu jsou popsány ve zmíněném článku a zde je znovu uvádět nebudeme a zaměříme se na konkrétní příklady zprovoznění v Arduino IDE a probereme kompletní konfiguraci modulu.
Zmíním zde ještě jednu základní vlastnost modulu a tou je pracovní režim. Modul totiž pracuje pouze v režimu slave a tudíž ho lze připojit jen k zařízením v režimu master – např. mobilní telefon, počítač, nebo bluetooth modul HC-05 v režimu master. Toto nastavení u tohoto modulu měnit nelze, jedná se o hardwarové nastavení na desce.
Konfigurace modulu
Jako první rozebereme konfigurační možnosti modulu. Modul lze konfigurovat pomocí AT příkazů posílaných na sériový port modulu. Příkazy lze posílat například přímo z připojeného mikrokontroleru, nebo z počítače. Pokud nepotřebuješ měnit některé volby modulu za běhu tvojí aplikace, je jednodušší modul nejdříve nakonfigurovat a poté ho použít v zařízení.
Začneme tedy s propojením do počítače. K tomuto budeš potřebovat některý z USB-UART převodníků, např. tento: https://www.laskarduino.cz/prevodnik-6pin-usb-ttl-uart–cp2102–dtr-pin/. Jak na instalaci ovladačů převodníku ve Windows si můžeš přečíst v článku: https://blog.laskakit.cz/instalace-ovladace-prevodniku-usb-na-uart-cp2102/. K propojení modulu a převodníku můžeš použít propojovací kablíky s Dupont konektory, např. tyto: https://www.laskarduino.cz/dupont-propojovaci-kabely-40ks-f-f-samice-samice–10cm-/.
Propojení bluetooth modulu s převodníkem:
Pro komunikaci s bluetooth modulem budeš potřebovat nějaký program, ve kterém budeš AT příkazy do modulu posílat a kontrolovat, zda proběhly v pořádku. V našem příkladu budeme používat program Hercules od HW-group.
Po nainstalování a spuštění programu Hercules, klepni na záložku Serial.
V pravé části v položce Name vyber COM port, na který se ti nainstaloval USB převodník (v našem případě je to COM10) a položce Baud vyber komunikační rychlost 9600. Ostatní parametry není třeba měnit. Pro spuštění komunikace klepni na tlačítko Open.
Pokud otevření COM portu proběhlo v pořádku, vypíše Hercules do komunikačního okna hlášení: Serial port COM10 opened. V tuto chvíli můžeš otestovat zda bluetooth modul komunikuje.
Do komunikačního okna napiš AT a stiskni enter. Pokud je vše v pořádku, modul odpoví hlášením OK. Pokud žádné hlášení nepřijde zkontroluj propojení modulu s převodníkem. Podle použitého převodníku je někdy nutné zapojit RX/TX proti sobě – RX->RX a TX->TX.
AT příkazy
Jelikož modul disponuje jen client módem je seznam AT příkazů krátký:
Příkaz | Odpověď | Popis příkazu | Konfigurace |
AT | OK | Test funkčnosti komunikace | |
AT+VERSION | VERSION:3.0-20170609 OK | Vypíše aktuální verzi firmwaru | |
AT+ADDR | +ADDR:FCA8:9A:126C OK | Vypíše hw adresu modulu | |
AT+NAME | +NAME:HC-06 OK | Vypíše nastavený název zařízení | AT+NAME:novy_nazev |
AT+PSWD | +PIN:“1234″ OK | Vypíše nastavený párovací pin | AT+PSWD:“novy_pin“ |
AT+UART | +UART:9600,0,0 OK | Vypíše nastavení sériového portu | AT+UART:115200,0,0 |
AT+ORGL | OK | Reset modulu do továrního nastavení | |
AT+RESET | OK | Restart modulu |
V tabulce ve sloupci Odpověď jsou základní hodnoty, se kterými je modul dodáván.
Zastavil bych se ještě u příkazů nastavení názvu zařízení a párovacího pinu. Na rozdíl od nastavení názvu se musí nový pin uzavírat do uvozovek, jinak příkaz skončí chybou a nastavení se neprovede. Nastavení nového pinu se projeví až po následném restartování modulu (AT+RESET, nebo odpojením napájení).
Jako další rozeberu podrobně příkaz pro nastavení UARTu:
Jak z příkazu vyplývá, tak jako první parametr je uvedena komunikační rychlost. Nastavit lze rychlosti 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 23400, 460800, 921600 a 1382400. Další parametr za rychlostí znamená počet stop bitů – 0/1 ( 0 = 1stop bit, 1 = 2 stop bity). Poslední znamená paritu – 0/1/2 (0 = none, 1 = Odd, 2 = Even). V našem případě tedy +UART:9600,0,0 znamená 9600 Bd, 1 stop bit, bez parity.
Nastavení je aplikováno ihned po odeslání příkazu a proto pokud byly změněny parametry komunikace dojde k její ztrátě s modulem! Pro obnovení komunikace je tedy nutné změnit parametry komunikace v programu.
Jako poslední bych upozornil na to, že pokud budeš používat jiný program pro komunikaci s modulem, je potřeba zajistit, aby při každém odeslání příkazu byly za příkazem znaky pro ukončení řádku CR a LF, jinak modul příkazy nevykoná.
Arduino IDE
Modul máš nakonfigurovaný a můžeme se tedy podívat na praktické použití v některé z vývojových desek Arduino.
Pro komunikaci s protistranou ti stačí pouze standardní funkce pro komunikaci pomocí sériového portu. Pro odesílání dat do vzdáleného zařízení se tedy použije funkce Serial.write() a Serial.writeln(). Pro čtení přijatých dat zase funkce Serial.read().
Pokud nemáš volný UART port, jako např. u Arduino NANO, kde je hardwarový UART jen jeden a obsazen USB převodníkem, lze použít knihovnu SoftwareSerial a provozovat bluetooth modul na softwarovém UARTu na jiných pinech. Nicméně modul funguje i sdíleně s USB převodníkem, jen je nutné před nahráváním programu do desky přes USB bluetooth modul odpojit a připojit až po nahrání programu. Také bude fungovat i Sériový monitor v Arduino IDE, ale je potřeba mít na paměti, že vše co se bude na UART z Arduina posílat, bude posílat i bluetooth modul protistraně pokud bude nějaká připojena. Z tohoto důvodu, pokud bude modul sdílet UART s USB převodníkem, bude nutné dávat větší pozor na používání ladících informací posílaných na sériovou konzoli.
Propojení modulu HC-06 s deskou Arduino NANO:
V zapojení jsou použity dva rezistory na pinu RX bluetooth modulu a to z toho důvodu, že modul HC-06 má pracovní napětí 3,3V (má na desce stabilizátor z 5V na 3,3V) a UART má tudíž logické úrovně právě na tomto napětí. Bez použití těchto rezistorů sice ke zničení bluetooth modulu nedojde, ale pokud se sdílí UART s USB převodníkem, tak bez těchto rezistorů by komunikace nefungovala správně. Tyto rezistory doporučujeme používat vždy, když se bluetooth bude připojovat k 5V TTL logice.
Následující příklad vrátí zpět přijatá data:
String prijata_data; // Promenna, do ktere se nactou prijata data z bluetooth
void setup() {
Serial.begin(9600);
}
void loop() {
while (Serial.available()) { // Dokud jsou na UARTu data
delay(2);
char c = Serial.read(); // Nacte prijaty znak do promenne
prijata_data += c; // Pricitanim znaku z pomocne promenne se vytvori text obsahujici kompletni prijata data
}
if (prijata_data.length() >0) { // Pokud neni promenna s prijatymi daty prazdna
Serial.print(prijata_data); // Vypise obsah promenne na seriovou konzoli
prijata_data=""; // Vymaze promennou do ktere se ukladaji prijate data
}
}
Nyní modul spáruj s mobilním telefonem a nainstaluj si do něho aplikaci Serial Bluetooth Terminal od vývojáře Kai Morich, nebo jinou podobnou aplikaci pro sériovou komunikaci přes bluetooth. Po nainstalování a spuštění v menu Devices a záložce BLUETOOTH CLASSIC vybereš zařízení HC-06 (nebo podle názvu který jsi mu dal při konfiguraci) a můžeš začít posílat zprávy.