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.