3.28. Sat stvarnog vremena#

Milisekundni sat mikrokontrolera – onaj iza time.ticks_ms() i podsustava mjerača vremena – broji proteklo vrijeme od podizanja sustava. Sat stvarnog vremena (RTC) zasebni je hardver koji prati vrijeme zidnog sata – godinu, mjesec, dan, sat, minutu, sekundu – i nastavlja raditi kroz resetiranja i ažuriranja ugrađenog programa (firmware). Na kamerama s rezervnom baterijom spojenom na RTC napajanje, preživljava i potpuni gubitak napajanja.

RTC je ono što razmještena kamera koristi za:

  • Vremensko označavanje zapisa dnevnika i spremljenih slika stvarnim datumom.

  • Tempiranje dugotrajnih zadataka koji ne bi smjeli odstupati tijekom tjedana ili mjeseci.

3.28.1. Klasa machine.RTC#

machine.RTC je singleton – jedan RTC po kameri, nije potreban id:

from machine import RTC

rtc = RTC()

Trenutni datum i vrijeme nalaze se u datetime(). Pozivanje bez argumenata vraća 8-torku:

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

Polja su (year, month, day, weekday, hour, minute, second, subseconds). Za postavljanje sata proslijedite natrag 8-torku istog oblika:

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

Kamera nastavlja brojati od te točke. Pri mekom resetiranju vrijeme se nastavlja neprekinuto; pri potpunom ciklusu napajanja RTC se vraća na svoje zadano vrijeme osim ako ga rezervna baterija drži napajanim.

3.28.2. Kada postaviti RTC#

RTC nema ugrađen način da zna koliko je sati pri podizanju sustava. Tri uobičajena obrasca ga postavljaju:

  • Iz mrežnog izvora vremena. Kamere koje se podignu na WiFi mogu dohvatiti vrijeme pomoću ntptime i upisati ga u RTC pri pokretanju.

  • Iz hosta preko USB-a. Pomoćna skripta na prijenosnom računalu šalje trenutno vrijeme kada se kamera priključi.

  • Iz vanjskog RTC čipa s rezervnom baterijom. Namjenski RTC IC (često na shieldu, s vlastitom dugmastom baterijom) održava bolje dugoročno vrijeme od RTC-a na čipu i može se očitati pri podizanju sustava kako bi se inicijalizirao datetime().

Nekim aplikacijama uopće nikada nije potrebno postaviti RTC. Petlja s radnim ciklusom „probudi se svakih 60 sekundi i obavi očitanje” brine samo o proteklim intervalima, kojima time.ticks_ms() i obrasci tempiranog spavanja u Načini rada s niskom potrošnjom i spavanjem rukuju a da nikada ne konzultiraju RTC-ovu vrijednost zidnog sata.