3.28. Echtzeituhr

Der Millisekundentakt des Mikrocontrollers – der hinter time.ticks_ms() und dem Timer-Subsystem – zählt die seit dem Booten verstrichene Zeit. Die Echtzeituhr (RTC) ist separate Hardware, die die Wanduhrzeit verfolgt – Jahr, Monat, Tag, Stunde, Minute, Sekunde – und über Resets und Firmware-Updates hinweg weiterläuft. Bei Kameras mit einer an die RTC-Versorgung angeschlossenen Backup-Batterie übersteht sie auch einen vollständigen Stromausfall.

Die RTC ist das, was eine im Feld eingesetzte Kamera dazu verwendet:

  • Log-Einträge und gespeicherte Bilder mit einem echten Datum zu versehen.

  • Langlaufende Aufgaben so zu takten, dass sie über Wochen oder Monate hinweg nicht abdriften.

3.28.1. Die Klasse machine.RTC

machine.RTC ist ein Singleton – eine RTC pro Kamera, keine id erforderlich:

from machine import RTC

rtc = RTC()

Das aktuelle Datum und die Uhrzeit liegen in datetime(). Der Aufruf ohne Argumente gibt ein 8-Tupel zurück:

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

Die Felder sind (year, month, day, weekday, hour, minute, second, subseconds). Um die Uhr zu stellen, übergeben Sie ein 8-Tupel derselben Form zurück:

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

Die Kamera zählt von diesem Punkt aus weiter. Bei einem Soft-Reset läuft die Zeit ununterbrochen weiter; bei einem vollständigen Aus- und Einschalten fällt die RTC auf ihre Standardzeit zurück, sofern keine Backup-Batterie sie mit Strom versorgt.

3.28.2. Wann die RTC zu stellen ist

Die RTC hat keine eingebaute Möglichkeit, beim Booten zu wissen, wie spät es ist. Drei gängige Muster stellen sie:

  • Über eine Netzwerk-Zeitquelle. Kameras, die mit WiFi hochfahren, können die Zeit mit ntptime abrufen und sie beim Start in die RTC schreiben.

  • Über einen Host per USB. Ein Begleitskript auf einem Laptop überträgt die aktuelle Zeit, wenn die Kamera angeschlossen wird.

  • Über einen batteriegepufferten externen RTC-Chip. Ein dedizierter RTC-IC (oft auf einem Shield, mit eigener Knopfzelle) hält die Langzeitzeit besser als die On-Chip-RTC und kann beim Booten ausgelesen werden, um datetime() zu initialisieren.

Einige Anwendungen müssen die RTC überhaupt nie stellen. Eine taktgesteuerte „alle 60 Sekunden aufwachen und eine Messung vornehmen“-Schleife kümmert sich nur um verstrichene Intervalle, die time.ticks_ms() und die Schlaf-mit-Zeitsteuerung-Muster aus Stromsparende Modi und Schlafmodi handhaben, ohne jemals den Wanduhrwert der RTC heranzuziehen.