V předchozím článku o programování BT modulů HC-05 byl popsán postup práce při nastavení z PC. Mnoho z uživatelů tyto moduly spojuje s Arduinem, takže tentokrát se podíváme na možnost, jak HC-05 nastavit přes Arduino. Tím odpadne nutnost výroby speciálního přípravku a práce s univerzálním sériovým terminálem.
Vyjdeme z popisu pro Arduino UNO, pro ostatní bude postup podobný. Navazujeme na obecné poznatky uvedené v předchozím článku. Základní problém je v tom, že některé moduly se nedaří vždy nastavit, vyžadují totiž určité prodlevy mezi zapnutím napájení a dalšími úkony. Tyto prodlevy jim zajistí program v Arduinu. Současně využijeme ke komunikaci s modulem HC-05 sériový monitor, který je součástí prostředí pro psaní programů pro Arduino.
V první řadě si připravíme zapojení podle následujícího nákresu. BT modul je napájen z výstupu Arduina a pro vstup RxD modulu se musí napětí snížit z úrovní 5 V přibližně na úrovně 3 V, to zajistí odporový dělič.
Nyní do Arduina zavedeme program, který při inicializaci dodrží potřebná zpoždění. Jinak je program pro přenos dat mezi terminálem v PC a modulem „obousměrně průchozí“. Program vychází z verze uvedené na internetových stránkách Instructables, oproti ní má ale navíc doplněný výpis zadávaných povelů na plochu monitoru.
#include <SoftwareSerial.h> #define bt_power 7 #define bt_wakeup_power 8 #define led_13 13 SoftwareSerial BT(A0, A1); // RX | TX char c; void setup() { // set the pins to OUTPUT pinMode(bt_power, OUTPUT); pinMode(bt_wakeup_power, OUTPUT); pinMode(led_13, OUTPUT); // set the pins to LOW digitalWrite(bt_power, LOW); digitalWrite(bt_wakeup_power, LOW); digitalWrite(led_13, LOW); delay(100); digitalWrite(bt_wakeup_power, HIGH); delay(100); digitalWrite(bt_power, HIGH); Serial.begin(9600); BT.begin(38400); Serial.write("Zadejte prikaz AT: \n\n"); digitalWrite(led_13, HIGH); } void loop() { if (BT.available()) Serial.write(BT.read()); if (Serial.available()) { c = Serial.read(); Serial.write(c); BT.write(c); } }
Jakmile se program spustí, zapne BT modul a nastaví jej do příkazového režimu. LED na modulu bliká pomalu v dvousekundových intervalech. Nyní spustíme sériový monitor Arduina a nastavíme v něm přenosovou rychlost 9600 Bd a také zakončení řádku „Obojí NL & CR“. To je důležité, bez toho přenos fungovat nebude! Ověříme funkčnost komunikace příkazem AT, odesíláme jej pomocí tlačítka „Pošli“ nebo z klávesnice ENTER. Odpověď by měla být „OK“
Další postup už záleží na tom, jak potřebujeme modul nastavit. Vybrané často používané příkazy i s parametry byly uvedeny v předchozím článku. Následující příklad nejprve ověří spojení, pak uvede modul do výchozího továrního nastavení, dál nastaví jméno „MOJE_BT“ a heslo „1357“ a nakonec vypíše adresu modulu.