3.28. Realtidsklocka

Mikrokontrollerns millisekundklocka – den bakom time.ticks_ms() och timersubsystemet – räknar förfluten tid sedan uppstart. Realtidsklockan (RTC) är separat hårdvara som spårar väggklockans tid – år, månad, dag, timme, minut, sekund – och fortsätter gå tvärs över återställningar och uppdateringar av fast programvara. På kameror med ett backup-batteri kopplat till RTC-matningen överlever den även fullständig strömförlust.

RTC:n är vad en utplacerad kamera använder för att:

  • Tidsstämpla loggposter och sparade bilder med ett verkligt datum.

  • Reglera takten på långkörande uppgifter som inte ska driva över veckor eller månader.

3.28.1. machine.RTC-klassen

machine.RTC är en singleton – en RTC per kamera, inget id behövs:

from machine import RTC

rtc = RTC()

Aktuellt datum och tid finns i datetime(). Att anropa den utan argument returnerar en 8-tupel:

>>> rtc.datetime()
(2026, 5, 27, 4, 14, 30, 15, 0)

Fälten är (year, month, day, weekday, hour, minute, second, subseconds). För att ställa klockan, skicka tillbaka en 8-tupel av samma form:

rtc.datetime((2026, 1, 21, 2, 10, 32, 36, 0))

Kameran fortsätter räkna från den punkten. Vid en mjuk återställning fortsätter tiden oavbrutet; vid en fullständig strömcykel faller RTC:n tillbaka till sin standardtid om inte ett backup-batteri håller den strömförsörjd.

3.28.2. När RTC:n ska ställas

RTC:n har inget inbyggt sätt att veta vad klockan är vid uppstart. Tre vanliga mönster ställer den:

  • Från en nätverkstidkälla. Kameror som kommer upp på WiFi kan hämta tiden med ntptime och skriva den till RTC:n vid start.

  • Från en värd över USB. Ett kompanjonsskript på en bärbar dator skickar aktuell tid när kameran kopplas in.

  • Från ett batteribackat externt RTC-chip. En dedikerad RTC-IC (ofta på en sköld, med sitt eget knappcellsbatteri) håller bättre långsiktig tid än den inbyggda RTC:n och kan läsas vid uppstart för att initiera datetime().

Vissa tillämpningar behöver aldrig ställa RTC:n alls. En arbetscykelstyrd ”vakna var 60:e sekund och gör en avläsning”-loop bryr sig bara om förflutna intervall, vilket time.ticks_ms() och de tidsstyrda vilomönstren i Lågeffekts- och viloläge hanterar utan att någonsin konsultera RTC:ns väggklockvärde.