Návod pro modul reálného času RTC DS3231

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:

Piny pro I2C sběrnici na různých deskách Arduino

Pro zapojení DS3231 s deskou Arduino UNO budeme potřebovat

Zapojení modulu reálného času DS3231 s deskou Arduino

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:

Modul reálného času RTC DS3231 výstup na serial monitor

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.

Soubory ke stažení