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.