3.28. Valós idejű óra¶
A mikrokontroller ezredmásodperces órája – az, amely a time.ticks_ms() és az időzítő-alrendszer mögött áll – a bekapcsolás óta eltelt időt számolja. A valós idejű óra (RTC) különálló hardver, amely a fali óra szerinti időt követi – évet, hónapot, napot, órát, percet, másodpercet – és újraindításokon és firmware-frissítéseken keresztül is fut tovább. Azokon a kamerákon, ahol egy tartalék akkumulátor van az RTC tápjára kötve, a teljes áramkimaradást is túléli.
Az RTC-t egy telepített kamera a következőkre használja:
Naplóbejegyzések és elmentett képek időbélyegzése valós dátummal.
Hosszan futó feladatok ütemezése, amelyeknek hetek vagy hónapok alatt sem szabad elcsúszniuk.
3.28.1. A machine.RTC osztály¶
A machine.RTC egyke – kameránként egy RTC, nincs szükség azonosítóra:
from machine import RTC
rtc = RTC()
Az aktuális dátum és idő a datetime() metódusban él. Argumentumok nélkül meghívva egy 8 elemű rekordot ad vissza:
>>> rtc.datetime()
(2026, 5, 27, 4, 14, 30, 15, 0)
A mezők: (year, month, day, weekday, hour, minute, second, subseconds). Az óra beállításához adj át egy ugyanilyen alakú 8 elemű rekordot:
rtc.datetime((2026, 1, 21, 2, 10, 32, 36, 0))
A kamera attól a ponttól számolja tovább. Szoftveres újraindításnál az idő megszakítás nélkül folytatódik; teljes ki-be kapcsolásnál az RTC visszaáll az alapértelmezett idejére, hacsak egy tartalék akkumulátor nem tartja táp alatt.
3.28.2. Mikor állítsuk be az RTC-t¶
Az RTC-nek nincs beépített módja annak megállapítására, hogy bekapcsoláskor mennyi az idő. Három gyakori minta állítja be:
Hálózati időforrásból. Azok a kamerák, amelyek WiFi-vel indulnak, az
ntptimesegítségével lekérhetik az időt, és induláskor beírhatják az RTC-be.Egy gazdagépről USB-n keresztül. Egy laptopon futó kísérőszkript betolja az aktuális időt, amikor a kamerát csatlakoztatják.
Egy akkumulátorral táplált külső RTC chipből. Egy dedikált RTC IC (gyakran egy shieldon, saját gombelemmel) hosszú távon pontosabb időt tart, mint a chipen lévő RTC, és bekapcsoláskor kiolvasható a
datetime()beállításához.
Egyes alkalmazásoknak egyáltalán nem kell beállítaniuk az RTC-t. Egy munkaciklusos „ébredj fel 60 másodpercenként, és végezz egy leolvasást” ciklus csak az eltelt intervallumokkal törődik, amelyeket a time.ticks_ms() és a Kis fogyasztású és alvó módok időzített alvási mintái kezelnek anélkül, hogy valaha is megnéznék az RTC fali óra szerinti értékét.