Bluetooth modul HC-06

Konfigurace Bluetooth modulu HC-06 a příklad použití v Arduino IDE

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říkazOdpověďPopis příkazuKonfigurace
ATOKTest funkčnosti komunikace
AT+VERSIONVERSION: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í pinAT+PSWD:“novy_pin“
AT+UART+UART:9600,0,0
OK
Vypíše nastavení sériového portuAT+UART:115200,0,0
AT+ORGLOKReset modulu do továrního nastavení
AT+RESETOKRestart 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.

Sdílet článek

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

Mohlo by se také líbit