In diesem Beitrag möchte ich dir gerne zeigen, wie du eine RealTimeClock (kurz RTC) am Raspberry Pi Pico mit Picomite in BASIC programmierst.
Den Raspberry Pi Pico mit Picomite habe ich dir bereits in diversen Beiträgen vorgestellt.
- BASIC Programmierung am Raspberry Pi Pico W,
- Raspberry Pi Pico BASIC #1 – Überblick
- Raspberry Pi Pico BASIC #2 – Quellcode organisieren
- Raspberry Pi Pico BASIC #3 – Autostart
- Raspberry Pi Pico BASIC #4 – SD-Karte anschließen
In meinem letzten Beitrag habe ich dir auch gezeigt, wie man Sensordaten von einem Temperatursensor auf eine SD-Karte schreiben kann. In diesem Beitrag möchte ich gerne an diesen Beitrag anknüpfen und die Sensordaten mit einem Zeitstempel speichern.
Im Handel erhältst du die RTCs bereits ab 3 €* welche meist für den Arduino angepriesen werden.
Hinweis von mir: Die mit einem Sternchen (*) markierten Links sind Affiliate-Links. Wenn du über diese Links einkaufst, erhalte ich eine kleine Provision, die dazu beiträgt, diesen Blog zu unterstützen. Der Preis für dich bleibt dabei unverändert. Vielen Dank für deine Unterstützung!
Auf der RTC ist eine Batterie verbaut, welche die interne Uhr weiterlaufen lässt und so auch ein Zeitstempel ausgelesen werden kann, wenn der Mikrocontroller mal eine Zeit X ohne Strom war.
Benötigte Ressourcen für dieses Projekt
Wenn du die Schaltung nachbauen möchtest, dann benötigst du:
- einen Raspberry Pi Pico* / Pico W*,
- ein Micro-USB-Datenkabel*,
- eine RTC DS3231* mit I2C Schnittstelle,
- vier Breadboardkabel*, weiblich-weiblich, 10 cm,
- optional ein GPIO Dual Expanderboard*
Aufbau der Schaltung
Mit den vier Breadboardkabeln schließen wir die RealTimeClock an den Raspberry Pi Pico wie folgt an.
An den Raspberry Pi Pico kannst du an mehreren Pins ein I2C Device anschließen. Nachfolgend findest du das Pinout.
Einrichten der RTC in Picomite auf dem Raspberry Pi Pico
Bevor wir den Zeitstempel (Datum & Uhrzeit) von der RTC lesen können, müssen wir diese einrichten.
Zunächst müssen wir die I2C Pins aktivieren.
OPTION SYSTEM I2C 1, 0
oder
OPTION SYSTEM I2C GP0, GP1
Nachdem die ENTER Taste betätigt wurde, startet der Pi Pico neu und danach setzen wir den initialen Zeitstempel mit dem nachfolgenden Befehl.
RTC SETTIME Jahr, Monat, Tag, Stunde, Minute, Sekunde
zbsp.
RTC SETTIME 2023, 4, 29, 18, 0, 0
Mit dem Befehl nachfolgenden Befehl kannst du die RTC beim Starten und jede Stunde
Auslesen von Datum & Uhrzeit von der RealTimeClock
Nachdem wir nun den Zeitstempel gesetzt haben, können wir die beiden Werte Datum & Uhrzeit von dieser lesen.
Damit wir aus den Feldern DATE$ und TIME$ die Werte lesen können, müssen die mit dem Befehl “RTC GETTIME” befüllt werden.
Wir können dieses jedoch etwas automatisieren, indem wir die nachfolgende Option für die RTC setzen.
OPTION RTC AUTO ENABLE
Beispiel – Sensordaten mit Zeitstempel auf SD-Karte schreiben
Im letzten Beitrag hatte ich dir gezeigt, wie du die Sensordaten von einem einfachen digitalen Temperatursensor DS18B20 auf eine SD-Karte schreiben kannst. Jetzt möchte ich statt des Index einen Zeitstempel zu jedem Wert speichern.
Aufbau der Schaltung – RTC, DS28B20 & SD-Kartenleser
Die RTC lässt sich wie nachfolgend gezeigt in die ggf. bereits bestehende Schaltung integrieren.
Für den Temperatursensor DS18B20 habe ich ein kleines Board auf welchem bereits die Schaltung mit dem 4,7 kOhm Widerstand verbaut ist.
Programmieren im Fullscreen-Editor in Picomite
Erweitern wir jetzt das Programm um den Zeitstempel.
TEMPR START GP15
Dim value As Float
Open "b:/sensordaten.csv" For output As #1
RTC GETTIME
For i = 0 to 100 Step 1
value = TEMPR(GP15)
Print #1, DATE$ " " TIME$ ";" value
Print i DATE$ " " TIME$ "-" value
Next i
Close #1
Die CSV Datei auf der SD-Karte enthält nun den Zeitstempel sowie die Sensordaten getrennt durch ein Semikolon.
2 thoughts on “Raspberry Pi Pico BASIC #6 – RealTimeClock programmieren”