Látva az RTC bejegyzésem olvasottságát megosztom egy másik ötletemet is. Én a real time clock eszközöket úgy használom, hogy úgynevezett breakout board-okat rendelek Kínából, ezekbe rakok elemet (ha épp nem azzal együtt érkezik) és beállítom rajtuk az időt mielőtt beépíteném a kész eszközökbe. De hogyan? Erre több megoldás is létezik, ezek az én ötleteim, tapasztalataim:
Egyszerű
Ugye van a triviális, avagy mezítlábas megoldás: ír az ember egy pár soros kis programot, amibe beéget egy pontos dátumot és időt, ezt set-teli a program akkor, amikor elindul. Ennek van néhány nyilvánvaló hátulütője:
- Nagyon pontosan kell időzíteni az indítás - persze kérdés, hogy az ember mennyire akar pontos órát kapni!
- Ha újra áramot kap az Arduino-nk és rá van dugva az RTC is, akkor újra beállítódik ugyanaz az idő!
- Minden alkalommal módosítani kell a programon használat előtt, hogy az aktuális időt állítsa be a progi.
Ez annyira egyszerű, hogy erre példát se mutatok...
Kicsit szofisztikáltabb
Ír az ember egy olyan Ardu programot, ami soros interfészen keresztül figyeli mit írunk be neki, így lehet utasítani az eszközt például arra is, hogy írjon be új időt az RTC-be. Ennek is vannak előnyei és hátrányai
Pro:
- nem kell mindig új programot írni és fordítani, ahányszor be akarunk állítani egy RTC-t
- (nem jut eszembe több)
Con:
- kell hozzá egy gép, amin keresztül irkálunk az Ardunak
- kézzel kell mindig valami előre megadott formátumban a teljes dátumot és időt
- pontosnak kell lenni hogy az ember mikor nyomja le az Enter gombot
(Note: az utolsó kettőre van azért megoldás, lsd. lentebb!)
Jó példa erre a Time nevű már korábban említett lib, annak is a TimeRTCSet nevű példaprogramja, ami egy DS1307 típust állít be a soros porton long formátumban érkező érték alapján. Ennek ugye az a nagyon kellemetlen hátulütője, hogy először át kell számolni a jelenlegi dátumot long-ra, de ebben ugye egy PC könnyedén tud segíteni (lsd kód komment a fálj elején)...
Másik jó példa a kedvenc DS3231-hez készül lib és annak példaprogramja.
Automata megoldás
Ehhez kicsit más eszköz kell, vagy egy NodeMCU jellegű, azaz ESP8266 alapú board, vagy egy sima Arduino Nano is elég lehet, amihez vagy egy Ethernet shield vagy egy Wifi adapter csatlakozik, így internetre van kötve a cucc. Ha ez megvan, akkor össze lehet rakni egy olyan egyszerű kis programot, ami NTP-n keresztül lekéri a pontos időt és azt beállítja a rádugott RTC-ben. Ennek el tudok képzelni több kivitelét is, például van rádugva egy kijelző, amin látható az óra, netán még 1-2 státusz LED is van az összeállításban, amin keresztül látszik, hogy sikerült-e a lekérdezés, majd a beállítás...
Egyszerűbb kivitelben, mindenféle visszajelzés a soros kapcsolaton keresztül megy, viszont ilyenkor kell hozzá egy PC, hogy lássam sikerült-e a dolog.
Automata++
Az utolsó verzió kibővítve azzal, hogy több különböző RTC-t is rá lehet dugni ugyanarra az összeállításra, amit akár már be is lehet dobozolni, néhány csatlakozót kivezetve. Ha nem akarjuk a Wifi csatlakozáshoz szükséges adatokat beégetni a programba, nos arra is van ötletem, de ezt majd máskor adnám közre...