In diesem Beitrag zeige ich dir, wie du am Raspberry Pi Pico mit BASIC (Picomite) Sensordaten auf eine SD-Karte loggen kannst.
Wie du eine SD-Karte an den Raspberry Pi Pico anschließen kannst und auf dem Dateisystem navigierst, habe ich dir bereits im Beitrag Raspberry Pi Pico BASIC #4 – SD-Karte anschließen gezeigt.
Benötigte Ressourcen für dieses Projekt
Wenn du das kleine Beispiel nachbauen möchtest, dann benötigst du:
- einen Raspberry Pi Pico* / Pico W*,
- ein Micro USB-Datenkabel*,
- ein SD-Karten Modul*,
- ein DS18B20 Temperatursensor*,
- diverse Breadboardkabel*, männlich-weiblich, 10 cm
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!
In meinem Fall nutze ich für den Temperatursensor DS18B20 ein kleines Board, auf welchem die korrekte Schaltung bereits verdrahtet ist, somit ist der Anschluss an den Mikrocontroller deutlich einfacher.
Aufbau der Schaltung
Für den Aufbau der Schaltung verwende ich zusätzlich ein Dual GPIO Expander für den Raspberry Pi Pico / Pico W*. Alternativ kannst du den Pi Pico auch auf ein 400 Pin Breadboard stecken und von dort die Pins abgreifen.
Der Schaltung können wir folgenden Anschlussplan entnehmen:
Komponente | Raspberry Pi Pico |
---|---|
DS18B20 | |
GND | GND |
DATA | GP15 |
VCC | 5V / VBUS |
SD-Kartenleser | |
GND | GND |
+5V | 5V / VBUS |
CS | GP22 |
MOSI | GP19 |
SCK | GP18 |
MISO | GP16 |
Aufbau der Schaltung und programmieren auf dem Mikrocontroller
Im nachfolgenden YouTube-Video erläutere ich dir, wie du die Schaltung aufbaust und das kleine Programm zum Loggen der Sensordaten auf dem Mikrocontroller schreibst.
Programmieren im Full-Screeneditor in Picomite
Den Code erstellen wir in zwei Schritten, zum einen das Auslesen der Temperatur vom Sensor und danach das Schreiben in eine Datei auf der SD-Karte.
Programmieren des Temperatursensors DS18B20 in Picomite
Starten wir zunächst damit, den Temperatursensor DS18B20 zu programmieren.
TEMPR START GP15
PRINT "Temperatur: " TEMPR(GP15) " C"
Wenn wir den Code nun in eine kleine For-Schleife schreiben, dann können wir mehrere Werte nacheinander messen und auf der Konsole ausgeben.
Schreiben einer Datei auf der SD-Karte
Nachdem wir soeben die Sensordaten ausgelesen haben, möchten wir diese auf die SD-Karte schreiben. Im ersten Schritt müssen wir eine Datei erzeugen und diese öffnen, dabei müssen wir darauf achten, dass wir den Modus zum Anfügen von Daten verwenden, denn sonst werden die alten immer überschrieben.
Open "b:/sensordaten.txt" For output As #1
TEMPR START GP15
For i = 0 To 10 Step 1
Print #1, "Temperatur: " TEMPR(GP15) " C"
Next i
Close #1
Die Daten sind jetzt auf der SD-Karte und können vom Computer (ein entsprechendes Lesegerät vorausgesetzt) gelesen werden.
Schreiben einer CSV Datei und importieren in Excel
Wenn wir die Sensordaten weiterverarbeiten möchten, dann ist es sinnvoll diese in einem lesbaren Format zu speichern. Das einfachste Format ist hier das CSV Format. Bei diesem werden die Daten Zeilenweise und mit einem Zeichen separiert getrennt gespeichert.
Normalerweise trennt man diese Daten mit einem Komma. In meinem Fall möchte ich jedoch das Semikolon nutzen “;”, denn der Temperaturwert wird in Deutsch mit einem Komma dargestellt. Natürlich könnte man auch die Temperaturwerte mit doppelten Anführungszeichen umgeben und somit trotzdem das Komma nutzen.
TEMPR START GP15
Dim value As Float
Open "b:/sensordaten.csv" For output As #1
For i = 0 to 100 Step 1
value = TEMPR(GP15)
Print #1, i ";" value
Print i "-" value
Next i
Close #1
Als Ergebnis erhalten wir eine Datei mit den Werten des Temperatursensors. In dem Code gebe ich zusätzlich noch den Wert auf der Konsole aus, damit man den Fortschritt des Schreibens sieht.