3.28. Horloge temps réel

L’horloge milliseconde du microcontrôleur – celle qui se cache derrière time.ticks_ms() et le sous-système de minuteurs – compte le temps écoulé depuis le démarrage. L”horloge temps réel (RTC) est un matériel distinct qui suit l’heure murale – année, mois, jour, heure, minute, seconde – et continue de tourner à travers les réinitialisations et les mises à jour du micrologiciel. Sur les caméras dont l’alimentation RTC est câblée à une batterie de secours, elle survit aussi à une coupure totale de courant.

Le RTC est ce qu’une caméra déployée utilise pour :

  • Horodater les entrées de journal et les images sauvegardées avec une vraie date.

  • Cadencer les tâches longue durée qui ne doivent pas dériver sur des semaines ou des mois.

3.28.1. La classe machine.RTC

machine.RTC est un singleton – un RTC par caméra, aucun id nécessaire :

from machine import RTC

rtc = RTC()

La date et l’heure courantes résident dans datetime(). L’appeler sans argument renvoie un 8-uplet :

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

Les champs sont (year, month, day, weekday, hour, minute, second, subseconds). Pour régler l’horloge, repassez un 8-uplet de la même forme :

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

La caméra continue de compter à partir de ce point. Lors d’une réinitialisation logicielle, l’heure se poursuit sans interruption ; lors d’un cycle d’alimentation complet, le RTC revient à son heure par défaut sauf si une batterie de secours le maintient alimenté.

3.28.2. Quand régler le RTC

Le RTC n’a aucun moyen intégré de connaître l’heure au démarrage. Trois modèles courants le règlent :

  • Depuis une source de temps réseau. Les caméras qui démarrent sur le WiFi peuvent récupérer l’heure avec ntptime et l’écrire dans le RTC au démarrage.

  • Depuis un hôte via USB. Un script compagnon sur un ordinateur portable envoie l’heure courante lorsque la caméra est branchée.

  • Depuis une puce RTC externe à batterie de secours. Un circuit intégré RTC dédié (souvent sur un shield, avec sa propre pile bouton) garde l’heure à long terme mieux que le RTC intégré et peut être lu au démarrage pour initialiser datetime().

Certaines applications n’ont jamais besoin de régler le RTC. Une boucle à cycle de service « se réveiller toutes les 60 secondes et prendre une mesure » ne se soucie que des intervalles écoulés, que time.ticks_ms() et les modèles de veille temporisée de Modes basse consommation et veille gèrent sans jamais consulter la valeur d’heure murale du RTC.