Raspberry Pi Pico: Externe Echtzeituhr (RTC) mit DS3231

Der Raspberry Pi Pico enthält ein Echtzeituhr (RTC), die für viele Anwendungen spannend ist. Allerdings ist deren sinnvolle Nutzung von zwei Voraussetzungen abhängig.

  1. Man muss in der Lage sein, die aktuelle Uhrzeit einstellen zu können oder der Pico muss diese Information von irgendwoher beziehen können.
  2. Die Stromversorgung muss dauerhaft erhalten bleiben, damit die Uhrzeit fortgeschrieben werden kann.

Beides oder auch nur eine Voraussetzung zu erfüllen, dürfte ohne technische Vorkehrungen nur schwer umzusetzen sein. Deshalb kann es sinnvoll sein, den Raspberry Pi Pico mit einer externen Echtzeituhr (RTC) zu betreiben. Der Chip DS3231 bietet sich hier an. Er ist sehr günstig und es gibt ihn in verschiedenen Bauformen.

Aufbau und Bauteile

Raspberry Pi Pico mit SG90 und DS3231-Modul

Raspberry Pi Pico DS3231
Pin 36 3V3 VCC (+)
Pin 27 GPIO 21 SCL (C)
Pin 26 GPIO 20 SDA (D)
Pin 23 GND GND (-)

Externe Bibliothek für das DS3231-Modul

Die Kommunikation zwischen dem Raspberry Pi Pico und dem DS3231-Modul erfolgt über die I2C-Schnittstelle mit den beiden Leitungen SCL und SDA.
Für die Steuerung der Kommunikation bedarf es einer externen Bibliothek, weil das DS3231-Modul nicht direkt von MicroPython unterstützt wird. Die Bibliothek muss in Form einer Datei auf den Raspberry Pi Pico geladen werden.

Programmcode zum Schreiben von Datum und Uhrzeit

Zuerst wird das DS3231-Modul initialisiert, das alte Datum gelesen und dann das neue Datum geschrieben und anschließend erneut gelesen.

Das Format für das zu schreibende Datum ist „Sekunde / Minute / Stunde / Wochentag / Tag / Monat / Jahr“. Alle Werte sind zweistellig.

# Bibliotheken laden
import ds3231

# Initialisierung
rtc = ds3231.RTC(sda_pin=20, scl_pin=21)

# Zeit lesen und ausgeben
rtc_time = rtc.ReadTime('DIN-1355-1+time')
print('Alt:', rtc_time)

# Zeit setzen: Sekunde / Minute / Stunde / Wochentag / Tag / Monat / Jahr
rtc.SetTime(b'\x00\x35\x13\x04\x23\x06\x22')

# Zeit lesen und ausgeben
rtc_time = rtc.ReadTime('DIN-1355-1+time')
print('Neu:', rtc_time)

Programmcode zum Lesen von Datum und Uhrzeit

Zuerst wird das DS3231-Modul initialisiert, die aktuelle Uhrzeit und das Datum in verschiedenen Formaten ausgegeben.

# Bibliotheken laden
import ds3231

# Initialisierung
rtc = ds3231.RTC(sda_pin=20, scl_pin=21)

# Zeit lesen und ausgeben
rtc_time = rtc.ReadTime('DIN-1355-1')
print(rtc_time)
print()
rtc_time = rtc.ReadTime('DIN-1355-1+time')
print(rtc_time)
print()
rtc_time = rtc.ReadTime('ISO-8601')
print(rtc_time)
print()
rtc_time = rtc.ReadTime('time')
print(rtc_time)
print()
rtc_time = rtc.ReadTime('weekday')
print(rtc_time)
print()
rtc_time = rtc.ReadTime()
print(rtc_time)
print()

Sofern Bedarf besteht kannst Du weitere Ausgabe-Formate in der Bibliothek hinzufügen.

Troubleshooting

Probleme mit diesem Aufbau gibt es eigentlich nur dann, wenn die Verkabelung das I2C nicht stimmt. Wichtig ist, dass Du für richtige und stabile Steckverbindungen sorgst. Die Bauteile auf die Schnelle zusammenstecken, kann zu Kommunikationsproblemen zwischen dem Pico und dem DS3231-Modul führen. Die I2C-Schnittstelle ist da etwas empfindlich. Kurze Leitungen sind von Vorteil.

Insbesondere bei Problemen mit der I2C-Verbindung sollte man diese testen:

Ergänzungen

Im praktischen Einsatz sollte man berücksichtigen, dass bei einer Echtzeituhr mit eigener Stromversorgung irgendwann diese Stromversorgung vielleicht das RTC-Modul nicht mehr versorgen kann. Wenn jetzt die Uhrzeit für den Betrieb des Gesamtaufbaus extenziell wichtig ist, dann sollte eine Routine die Funktion der Echtzeituhr und die gelieferte Uhrzeit auf Plausibilität prüfen. Außerdem sollte irgendwie eine Fehlermeldung ausgegeben werden können. Durch ein Display oder eine Status-LED.

Weitere verwandte Themen:

Frag Elektronik-Kompendium.de

Hardware-nahes Programmieren mit dem Raspberry Pi Pico und MicroPython

Elektronik-Set Pico Edition

Das Elektronik-Set Pico Edition ist ein Bauteile-Sortiment mit Anleitung zum Experimentieren und Programmieren mit MicroPython.

  • LED: Einschalten, ausschalten, blinken und Helligkeit steuern
  • Taster: Entprellen und Zustände anzeigen
  • LED mit Taster einschalten und ausschalten
  • Ampel- und Lauflicht-Steuerung
  • Elektronischer Würfel
  • Eigene Steuerungen programmieren

Elektronik-Set jetzt bestellen Online-Workshop buchen

Online-Workshop: Programmieren mit dem Raspberry Pi Pico

Programmieren mit dem Raspberry Pi Pico

Gemeinsam mit anderen und unter Anleitung experimentieren? Wir bieten unterschiedliche Online-Workshops zum Raspberry Pi Pico und MicroPython an. Einführung in die Programmierung, Sensoren programmieren und kalibrieren, sowie Internet of Things und Smart Home über WLAN und MQTT.

Online-Workshop buchen

Besuchen Sie unser fast monatlich stattfindendes Online-Meeting PicoTalk und lernen Sie uns kennen. Die Teilnahme ist kostenfrei.

Termine und Newsletter-Anmeldung

 

Elektronik-Sets für das Hardware-nahe Programmieren