Návod pro modul reálného času RTC DS3231
Čas je nedílnou součástí naších životů, proto je rozhodně na místě, abychom naše Arduina naučili s časem pracovat. To nám umožní sestavit a zbastlit různé budíky, alarmy nebo kalendáře. V článku budeme pracovat s reálným časem RTC DS3231. DS3231 může skvěle posloužit i jako organizátor dat. Přece jenom, když něco měříte, vypovídací hodnotu vám většinou přidá datum nebo délka měření např. u meteostanic.
zapojení s DS3231
I přesto, že se na modulu DS3231 nachází spousta vývodů, my si vystačíme pouze se 4. Jak již bývá tradicí o 2 piny přijdeme, kvůli napájení. Zbývají nám 2 piny (SDA a SCL). Možná někteří z vás už ví, o co jde, ale pro ty, co neví, tak SDA a SCL jsou speciální piny, které umí zajistit komunikaci na tzv. I2C sběrnici. Pokud byste se o sběrnici chtěli dozvědět více, na konci článku najdete odkaz na stránku, kde je vše podrobně vysvětleno. SDA a SCL jsou na Arduino deskách pokaždé jinde a je jich tam více, tady je základní přehled:
Pro zapojení DS3231 s deskou Arduino UNO budeme potřebovat
Nastavení času na modulu DS3231
Jelikož je modul dodávaný bez nastaveného času, musíte nejprve nastavit ten správný čas. Začal bych tím, že bych vložil baterii (na popisu produktu pozorně přečtete, jakou baterii zvolit). Dále nahrajeme program, kterým nastavíme čas.
Také nesmíme zapomenout importovat knihovnu, ta je ke stažení na konci návodu. Pokud nevíte, jak knihovnu importovat, podívejte se na návod pro importování Arduino knihovny.
Po nahrání programu nesmíte zapnout serial monitor! Kód by se pustil znova a váš nastavený čas by se tedy opět změnil na hodnoty, co jsou v programu.
#include <DS3231.h> DS3231 rtc(SDA, SCL); void setup() { rtc.begin(); // nastavení dne (musíte anglicky) rtc.setDOW(SUNDAY); // nastavení času ve formátu (hh,mm,ss) rtc.setTime(17, 27, 00); // nastavení datumu ve formátu (dd,mm,rrrr) rtc.setDate(19, 11, 2017); } void loop() { delay(5000); }
Čtení času z RTC DS3231
Jestli máte čas dobře nastavený, se dozvíte až když nahrajete tento program, který čas zjistí a vypíše po serial monitoru. Možná budeme muset čas nastavit vícekrát, než se vám ho podaří sladit, ale není to tak těžké, jak to vypadá. Nahrajte tedy tento program a podívejte se, kolik že je vlastně hodin.
// importování knihovny #include <DS3231.h> // definování pinů DS3231 rtc(SDA, SCL); void setup() { // start modulu rtc rtc.begin(); // start seriové linky Serial.begin(9600); } void loop() { // vypiš čas Serial.println(rtc.getTimeStr()); // vypiš datum Serial.println(rtc.getDateStr()); Serial.println("----------"); // počkej 2s delay(2000); }
Výstup by potom měl vypadat nějak takto:
Pokud byste chtěli data v jiném formátu, podívejte se do informací o knihovně, popřípadě do příkladů.
Shrnutí
Modul reálného času RTC je velkým přínosem do různých projektů a rozhodně by vám neměl nečině ležet v šuplíku. Ještě jednou připomenu, ať si dáte pozor na to, jakou baterii do modulu vkládáte. Pokud by vás zajímalo více informací o modulu, nebo o bastlení, tak navštivte naši bastlírnu HWKITCHEN a pohledejte heslo ds3231.