Hodiny reálného času synchronizované NTP serverem na Internetu

Cílem tohoto projektu bylo sestrojit ukazatel reálného času, který při přítomnosti WiFi se synchonizuje s přesným časem pomocí NTP serveru.
Jelikož stále je zmatek ohledně zrušení letního – zimního času, tento projekt automaticky nepřepíná letní – zimní čas, ale je pevně dané časové pásmo. Uvidíme jak se situace vyvine, pokud by měl setrvávat současný stav, bude potřeba do projektu vložit funkci přepínání letní – zimní čas.
Použité díly : jádrem sestavy je Wemos D1 R1 ( nebo R2 ). Mohu ale samozřejmě použít i jinou variantu ESP, podmínkou je WiFi modul. Dále jsou použity hodiny reálného času DS3231 AT24C32 IIC a LCD display 16×20 IIC, 2 LED diody různých barev a 2 rezistory pro dané LED – u mě cca 470 Ohm.
Jak to funguje : po připojení ESP k napájení se ESP zeptá modulu RTC ( hodiny reálného času ), jaký je datum a čas. Pokud ještě v RTC nebyl nastaven čas nebo je zálohovací článek vybitý – nebo není přítomen, zobrazí se aktuální datum jako sobota, 1.1.2000 a čas 00:00:00. Poznámka k zálohovacímu článku : NEDOPORUČUJI použít klasický lithiový článek CR 2032, obvod RTC je sestaven pro článek LR 2032 ( akumulátor ). Při použití klasického článku CR 2032 dochází k jeho „nabíjení“ i když k tomu není určen. Článek se v takovém případě po určité době začne „nafukovat“ a hrozí jeho exploze ! Pokud přesto chcete používat běžný článek CR 2032, je nutno odpájet – odštípnout rezistor 200 Ohm, na desce má označení 201 aby nedocházelo k jeho „nabíjení“. Proto doporučuji použít akumulátor LR 2032 ( LIR 2032 ), mám ověřeno, že po plném nabití ( asi 24 hodin ) dokáže zálohovat čas RTC i po více jak půlroce bez napájení. Takže pokud již byl čas jednou nastaven a článek je OK, měl by se +- zobrazit aktuální čas. Po zapnutí napájení se ESP asi za 30 vteřin snaží zjistit, je-li v dodahu známé WiFi sítě. Je-li tomu tak, rozsvítí se modrá LED ( připojeno k WiFi ) a za 60 vteřin provede synchronizaci datumu a času, provedení funkce se zobrazí bliknutím žluté LED ( synchronizace provedena ).
Napájení je klasika, buď přes Jack ( 7 – 12 V ), nebo přes pin 5V ( pozor, nestabilizuje se, takže 5 V ! ), nebo pomocí USB ( zde napětí trochu poklesne, takže na LCD přidáme kontrast ). Program je myslím si docela dobře popsán, takže časy k připojení WiFi a synchronizaci si můžete upravit, zde nastavené jsou pro testování.
Jak jsem psal na začátku, není funkční automatické přepínání letního – zimního času. Uvidíme, jak to dopadne. Zde si bohužel musíme přepínat časové pásmo ručně v projektu, takže více méně tato aplikace postrádá smysl. No, jak bude někdy čas 🙂 mrknu na to. Zatím v programu to řeším takto, správný čas „odremujeme“, neplatný „zaremujeme“
//timeClient.setTimeOffset(7200); // 7200 = Česká republika GMT +2 // letní čas
timeClient.setTimeOffset(3600); // 3600 = Česká republika GMT +1 // zimní čas