3.28. Ceas în timp real¶
Ceasul în milisecunde al microcontrolerului – cel din spatele lui time.ticks_ms() și al subsistemului de temporizare – numără timpul scurs de la pornire. Ceasul în timp real (RTC) este hardware separat care urmărește timpul de perete – an, lună, zi, oră, minut, secundă – și continuă să ruleze peste reseturi și actualizări de firmware. Pe camerele cu o baterie de backup conectată la alimentarea RTC-ului, acesta supraviețuiește și pierderii totale de alimentare.
RTC-ul este ceea ce folosește o cameră implementată pentru a:
Marca temporal intrările din jurnal și imaginile salvate cu o dată reală.
Ritma sarcinile de lungă durată care nu ar trebui să devieze pe parcursul săptămânilor sau lunilor.
3.28.1. Clasa machine.RTC¶
machine.RTC este un singleton – un singur RTC per cameră, fără id necesar:
from machine import RTC
rtc = RTC()
Data și ora curente se află în datetime(). Apelarea ei fără argumente returnează un tuplu cu 8 elemente:
>>> rtc.datetime()
(2026, 5, 27, 4, 14, 30, 15, 0)
Câmpurile sunt (year, month, day, weekday, hour, minute, second, subseconds). Pentru a seta ceasul, transmite înapoi un tuplu cu 8 elemente de aceeași formă:
rtc.datetime((2026, 1, 21, 2, 10, 32, 36, 0))
Camera continuă să numere din acel punct. La un reset soft, timpul continuă neîntrerupt; la un ciclu complet de alimentare, RTC-ul revine la ora sa implicită, cu excepția cazului în care o baterie de backup îl menține alimentat.
3.28.2. Când să setezi RTC-ul¶
RTC-ul nu are nicio modalitate încorporată de a ști ce oră este la pornire. Trei modele comune îl setează:
Dintr-o sursă de timp de rețea. Camerele care pornesc pe WiFi pot prelua ora cu
ntptimeși o pot scrie în RTC la pornire.De la o gazdă prin USB. Un script însoțitor de pe un laptop transmite ora curentă atunci când camera este conectată.
De la un cip RTC extern alimentat cu baterie. Un IC RTC dedicat (adesea pe un shield, cu propria baterie tip nasture) ține mai bine timpul pe termen lung decât RTC-ul de pe cip și poate fi citit la pornire pentru a inițializa
datetime().
Unele aplicații nu au nevoie niciodată să seteze RTC-ul. O buclă cu ciclu de funcționare de tipul „trezește-te la fiecare 60 de secunde și fă o citire” se preocupă doar de intervalele scurse, pe care time.ticks_ms() și modelele de repaus temporizat din Moduri de consum redus și de repaus le gestionează fără a consulta vreodată valoarea de timp de perete a RTC-ului.