3.28. Orologio in tempo reale¶
Il clock al millisecondo del microcontrollore – quello dietro a time.ticks_ms() e al sottosistema dei timer – conta il tempo trascorso dall’avvio. L”orologio in tempo reale (RTC) è un hardware separato che tiene traccia dell’ora del calendario – anno, mese, giorno, ora, minuto, secondo – e continua a funzionare attraverso reset e aggiornamenti del firmware. Sulle cam con una batteria di backup cablata all’alimentazione dell’RTC, sopravvive anche a una perdita totale di alimentazione.
L’RTC è ciò che una camera installata sul campo usa per:
Marcare temporalmente le voci di log e le immagini salvate con una data reale.
Cadenzare attività a lunga durata che non dovrebbero andare alla deriva nell’arco di settimane o mesi.
3.28.1. La classe machine.RTC¶
machine.RTC è un singleton – un solo RTC per camera, senza bisogno di id:
from machine import RTC
rtc = RTC()
La data e l’ora correnti risiedono in datetime(). Chiamandolo senza argomenti restituisce una tupla di 8 elementi:
>>> rtc.datetime()
(2026, 5, 27, 4, 14, 30, 15, 0)
I campi sono (year, month, day, weekday, hour, minute, second, subseconds). Per impostare l’orologio, passa una tupla di 8 elementi della stessa forma:
rtc.datetime((2026, 1, 21, 2, 10, 32, 36, 0))
La camera continua a contare da quel punto. A un reset soft il tempo prosegue senza interruzioni; a un ciclo completo di alimentazione l’RTC torna al suo orario predefinito a meno che una batteria di backup non lo mantenga alimentato.
3.28.2. Quando impostare l’RTC¶
L’RTC non ha alcun modo integrato per sapere che ora è all’avvio. Tre schemi comuni lo impostano:
Da una sorgente temporale di rete. Le cam che si avviano collegate al WiFi possono recuperare l’ora con
ntptimee scriverla nell’RTC all’avvio.Da un host tramite USB. Uno script companion su un laptop invia l’ora corrente quando la cam viene collegata.
Da un chip RTC esterno con batteria di backup. Un IC RTC dedicato (spesso su uno shield, con la propria pila a bottone) mantiene il tempo a lungo termine meglio dell’RTC integrato nel chip e può essere letto all’avvio per inizializzare
datetime().
Alcune applicazioni non hanno mai bisogno di impostare l’RTC. Un ciclo a ciclo di lavoro fisso del tipo «risvegliati ogni 60 secondi ed effettua una lettura» si preoccupa solo degli intervalli trascorsi, di cui si occupano time.ticks_ms() e gli schemi di sospensione temporizzata in Modalità a basso consumo e di sospensione senza mai consultare il valore dell’ora del calendario dell’RTC.