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.
Když chcete obohatit svůj projekt o práci s reálným časem, je výhodné využít obvod reálného času (v angličtině RTC – Real Time Clock). V tomto návodu jsou uvedeny informace o modulu pro Arduino s obvodem DS1307. Tento obvod reálného času umožňuje komunikaci po sběrnici I2C a je energeticky velmi nenáročný. Pokud tedy vložíte na druhé straně modulu kvalitní baterii LIR2032, může tento obvod DS1307 běžet bez připojení napájení podle údajů výrobce minimálně 9 let. Mezi další výhody také patří detekce přestupných roků či přesný kalendář až do roku 2100, díky kterému snadno zjistíme i den v týdnu.
Pro úspěšné propojení s Arduino deskou stačí využít 4 propojovacích vodičů. Připojíme Vcc na +5 V, GND na zem, SDA na A4 a SCL na A5. Piny SDA a SCL slouží pro přenos přes I2C sběrnici a při využití jiného mikroprocesoru (například Arduino Mega) bude nutné dohledat I2C piny na zvolené desce.
Pro správnou funkci uvedeného ukázkového kódu je nutné stáhnout a naimportovat knihovnu RTClib, návod jak na to je uveden zde. Ukázkový kód obsahuje příklad pro první nastavení času a dále tisk informací o aktuálním čase a datu přes Sériovou linku. Na začátku programu připojíme knihovny Wire pro práci s I2C a dále RTClib pro práci s obvodem reálného času DS1307. Jako další vytvoříme instanci DS1307 z knihovny RTClib a pole seznamDni se všemi dny v týdnu. V podprogramu setup nejprve nastavíme komunikaci po Sériové lince a následně zjistíme, jestli je modul s obvodem reálného času připojen a poté jestli jsou spuštěny hodiny. Jako další se v kódu nachází příkaz DS1307.adjust(..), kterým při prvním nahrání programu nastavíme aktuální čas, který bude nastaven v obvodu reálného času. Při dalším nahrávání programu do Arduina už bude nutné tento řádek s DS1307.adjust(..) zakomentovat, abychom si znovu nepřepsali nastavený čas a datum. V nekonečné smyčce loop pak vždy do proměnné datumCas nahrajeme aktuální informace a ty poté vytiskneme po Sériové lince.
// Hodiny reálného času DS1307 // připojení knihoven #include <Wire.h> #include "RTClib.h" // vytvoření instance DS1307 z knihovny RTClib RTC_DS1307 DS1307; // vytvoření pole seznamDni s názvy jednotlivých dní char seznamDni[7][8] = {"nedele", "pondeli", "utery", "streda", "ctvrtek", "patek", "sobota"}; void setup () { // komunikace přes sériovou linku rychlostí 9600 baud Serial.begin(9600); // kontrola připojeného obvodu reálného času if (! DS1307.begin()) { Serial.println("Hodiny nejsou pripojeny!"); while (1); } // kontrolu spuštění obvodu reálného času if (! DS1307.isrunning()) { Serial.println("Hodiny nejsou spusteny! Spoustim nyni.."); } // pro nastavení času v obvodu reálného času použijte jednorázově(!) // následující příkaz v pořadí rok, měsíc, den, hodina, minuta, vteřina // příklad: 26.4.2016 9:10:11 DS1307.adjust(DateTime(2016, 4, 26, 9, 10, 11)); } void loop () { // načtení aktuálního času a data do proměnné datumCas DateTime datumCas = DS1307.now(); // vypsání informací o aktuálním času a datu po sériové lince Serial.print("Aktualni cas "); Serial.print(datumCas.hour()); Serial.print(':'); Serial.print(datumCas.minute()); Serial.print(':'); Serial.print(datumCas.second()); Serial.print(", "); Serial.print(seznamDni[datumCas.dayOfTheWeek()]); Serial.print(" "); Serial.print(datumCas.day()); Serial.print('.'); Serial.print(datumCas.month()); Serial.print('.'); Serial.print(datumCas.year()); Serial.println(); // pauza mezi výpisy delay(2000); }
Po nahrání programu do Arduino desky dostaneme například tento výpis:
Aktualni cas 9:10:11, utery 26.4.2016 Aktualni cas 9:10:13, utery 26.4.2016 Aktualni cas 9:10:15, utery 26.4.2016 Aktualni cas 9:10:17, utery 26.4.2016 Aktualni cas 9:10:19, utery 26.4.2016 Aktualni cas 9:10:21, utery 26.4.2016 Aktualni cas 9:10:23, utery 26.4.2016 Aktualni cas 9:10:25, utery 26.4.2016
Modul s obvodem reálného času DS1307 v kombinaci s využitou knihovnou RTClib mohu doporučit každému, kdo si chce vyzkoušet práci s reálným časem ve svém Arduino projektu. Obvod DS1307 může nalézt uplatnění například v domácí meteostanici či hodinách se sedmi-segmentovým displejem. A při využití záložní baterie se nemusíme bát ztráty informace o čase ani při odpojení napájení od Arduino desky.
Seznam použitých komponent:
http://dratek.cz/arduino-vstupni-periferie/842-arduino-hodiny-realneho-casu.html
http://dratek.cz/arduino/974-arduino-uno-r3-atmega328p-1424115860.html
http://dratek.cz/arduino-kabelaz-propoje-rozsireni/827-arduino-vodice-samec-samec-65-kusu.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.