Chytrá WiFi zásuvka Sonoff S26
Chytrá domácnost umožňuje ovládat elektrické spotřebiče na dálku. A přesně to umožní zásuvka Sonoff S26.
Arduino Bluetooth modul HC-05 je komunikační modul, který umožňuje propojit Arduino bezdrátově s dalším zařízením, které podporuje Bluetooth. Tento modul obsahuje Bluetooth ve verzi 2.0 a komunikuje s Arduinem pomocí sériové linky s výchozí rychlostí 9600 baudů. Vzhledem k velikosti celého modulu je i anténa poměrně malá a dosah je proto omezen na vzdálenost maximálně 10 metrů na volném prostranství. Co se týká napájecího napětí, tak pro tento modul HC-05 je zapotřebí napětí v rozsahu 3,3 až 6 Voltů. Proudový odběr při napájení 5 Volty se pohybuje okolo 2 miliAmpér v klidu a při komunikaci dosahuje maximálně 40 mA. Celý modul má pak rozměry 3,2 x 1,6 centimetrů.
Pro úspěšné propojení Bluetooth modulu HC-05 s Arduinem stačí zapojit celkem čtyři vodiče. Propojíme RXD s pinem 11, TXD s pinem 10, GND se zemí Arduina a VCC s 3,3 nebo 5 Volty Arduina. Pro datové piny RXD a TXD lze využít také ostatní digitální piny, ale tuto volbu je nutné provést na začátku programu. Na deskách Mega a Mega 2560 je možné pro pin RX využít pouze tyto piny: 10, 11, 12, 13, 14, 15, 50, 51, 52, 53, A8 (62), A9 (63), A10 (64), A11 (65), A12 (66), A13 (67), A14 (68), A15 (69). A na deskách Leonardo a Micro lze pro pin RX využít tyto piny: 8, 9, 10, 11, 14 (MISO), 15 (SCK), 16 (MOSI). Viz reference knihovny SoftwareSerial.
Ukázkový program obsahuje na svém začátku nastavení čísel propojovacích pinů pro Bluetooth a LED diodu, kdy využíváme integrovanou LED diodu na pinu 13. Dále připojíme knihovnu SoftwareSerial a následně inicializujeme modul Bluetooth s nastavenými piny. V podprogramu setup je zahájena komunikace s Bluetooth modulem rychlostí 9600 baudů a vytištěna testovací zpráva společně s nastavením LED diody jako výstup. Nekonečná smyčka loop obsahuje vytvoření proměnné pro ukládání dat a hlavní if podmínku. V této podmínce zjistíme, jestli se nám nenačetly nějaká data přes Bluetooth a v případě že ano, tak si je pomocí funkce read načteme do proměnné. Následně proběhne dekódování přijatého znaku pomocí funkce switch. Uvnitř této funkce můžeme uvést všechny typy zprávy, na které chceme reagovat. Jako první tedy po přijetí znaku nuly vypneme LED diodu a vypíšeme informaci zpět do Bluetooth zařízení. Příkaz break znamená ukončení aktuálního běhu funkce switch. Poté v dalších case najdeme pod jedničkou zapnutí LED diody a v případě přijetí znaku a vypíšeme do Bluetooth modulu aktuální čas od zapnutí Arduina. Při přijetí znaku b je uvedena ukázka, jak přijmout více znaků, tedy například konfiguraci pro běh Arduina. Jako první je vytištěna informace o načítání zprávy a poté pomocí smyčky while tiskneme přijaté znaky zpět do té doby, dokud jsou nějaké k dispozici. V dalších dvou case se nachází takzvané řídící znaky CR a LF, které se mohou vyskytovat v komunikaci podle použitého programu na druhém zařízení. V programu tedy v případě jejich přijetí nevykonáme žádnou funkci. Bylo je ale nutné takto přidat do case, protože poslední case default vypíše v případě přijetí ostatních znaků hlášku o neznámém znaku. Po funkci switch se v programu nachází už jen pauza po dobu 100 milisekund.
// Arduino Bluetooth modul HC-05 // nastavení propojovacích pinů Bluetooth a LED diody #define RX 11 #define TX 10 #define pinLED 13 // připojení knihovny SoftwareSerial #include <SoftwareSerial.h> // inicializace Bluetooth modulu z knihovny SoftwareSerial SoftwareSerial bluetooth(TX, RX); void setup() { // zahájení komunikace s Bluetooth modulem // skrze Softwarovou sériovou linku rychlostí 9600 baud bluetooth.begin(9600); bluetooth.println("Arduino zapnuto, test Bluetooth.."); // nastavení pinu s LED diodou jako výstup pinMode(pinLED, OUTPUT); } void loop() { // proměnná pro ukládání dat z Bluetooth modulu byte BluetoothData; // kontrola Bluetooth komunikace, pokud je dostupná nová // zpráva, tak nám tato funkce vrátí počet jejích znaků if (bluetooth.available() > 0) { // načtení prvního znaku ve frontě do proměnné BluetoothData=bluetooth.read(); // dekódování přijatého znaku switch (BluetoothData) { // každý case obsahuje dekódování jednoho znaku case '0': // v případě přijetí znaku nuly vypneme LED diodu // a vypíšeme hlášku zpět do Bluetooth zařízení digitalWrite(pinLED, LOW); bluetooth.println("Vypni LED diodu."); break; case '1': // v případě přijetí jedničky zapneme LED diodu // a vypíšeme hlášku zpět do Bluetooth zařízení digitalWrite(pinLED, HIGH); bluetooth.println("Zapni LED diodu."); break; case 'a': // v případě přejetí znaku 'a' vypíšeme // čas od spuštění Arduina bluetooth.print("Cas od spusteni Arduina: "); bluetooth.print(millis()/1000); bluetooth.println(" vterin."); break; case 'b': // zde je ukázka načtení většího počtu informací, // po přijetí znaku 'b' tedy postupně tiskneme // další znaky poslané ve zprávě bluetooth.print("Nacitam zpravu: "); BluetoothData=bluetooth.read(); // v této smyčce zůstáváme do té doby, // dokud jsou nějaké znaky ve frontě while (bluetooth.available() > 0) { bluetooth.write(BluetoothData); // krátká pauza mezi načítáním znaků delay(10); BluetoothData=bluetooth.read(); } bluetooth.println(); break; case '\r': // přesun na začátek řádku - znak CR break; case '\n': // odřádkování - znak LF break; default: // v případě přijetí ostatních znaků // vytiskneme informaci o neznámé zprávě bluetooth.println("Neznamy prikaz."); } } // krátká pauza mezi kontrolami komunikace Bluetooth modulu delay(100); }
Po nahrání programu do Arduino desky s připojeným Bluetooth modulem HC-05 můžeme přejít k připojení Bluetooth modulu s druhým zařízením. Mezi tyto zařízení můžeme zařadit například počítač, telefon či tablet. Po zapnutí Bluetooth modulu v daném zařízení můžeme začít vyhledávat Bluetooth moduly v okolí a měli bychom vidět zařízení s názvem „HC-05“. Pro spárování pak použijeme výchozí kód 1234. Po úspěšném spárování je dalším krokem zvolení nějakého komunikačního programu. V případě počítače si můžeme všimnout, že po spárování Bluetooth modulu nám v Arduino IDE v nabídce portů přibyde nový COM port. Pokud si tedy zvolíme tento nový port a otevřeme Sériový monitor, můžeme začít komunikovat s Arduinem skrze Bluetooth. Pokud bychom chtěli otestovat komunikaci s chytrým telefonem či tabletem, který má operační systém Android, můžeme provést obdobným způsobem spárování s modulem HC-05. Poté je nutné stáhnout nějakou aplikaci Bluetooth Terminal z Obchodu Play, já jsem vyzkoušel „Serial Bluetooth Terminal“ od Kai Morich. V této aplikaci pak stačí zvolit správné zařízení, stisknout ikonu propojení a můžeme začít komunikovat s Arduinem.
Arduino Bluetooth modul HC-05 je velice zajímavým komunikačním prvkem pro Arduino. Díky své malé velikosti se hodí do různých projektů, kde chceme komunikovat s Arduinem z počítače či chytrých zařízení jako je telefon či tablet. Je zde pouze problém při komunikaci se zařízeními od firmy Apple, protože ty nepodporují necertifikované moduly ve verzi Bluetooth 2.0. Pokud byste tedy chtěli využít pro ovládání Arduina svoje Apple zařízení, je nutné zvolit jiný Bluetooth modul.
Seznam použitých komponent:
http://dratek.cz/arduino/1511-original-arduino-uno-rev3-1485165418.html
http://dratek.cz/arduino/1005-arduino-bluetooth-modul-hc-05-1427822941.html
http://dratek.cz/arduino/1255-bluetooth-bezdratovy-modul-hc-05-pro-arduino-1459623967.html
Chytrá domácnost umožňuje ovládat elektrické spotřebiče na dálku. A přesně to umožní zásuvka Sonoff S26.
e-Paper displeje už jsou dostupné i pro bastlení za rozumné ceny a pro jejich ovládání se hodí tento Driver.