Datalogger für Temperatur und Luftfeuchte mit CSV Daten

Um den Verlauf von Temperatur und relativer Luftfeuchtigkeit zu messen baue ich mir einen Datalogger. Damit kann ich dann den zeitlichen Verlauf der Messwerte auswerten. Als Datenformat suche ich mir ein CSV Format aus (Comma Separated Value), das ich mit jeder Tabellenkalkulation direkt einlesen und auswerten kann.

Hardware:

  • Arduino Mega2560
  • RTC DS3231 (I2C an D20 und 21)
  • DHT22 ( Daten an D2)
  • SD Card Modul (CS auf D4)
  • USB / UART Converter (D18 und D19)
  • drei LED’s für Rückmeldungen( rot D5, gelb D6, grün D7)


Software:

Hier bringe ich erst einmal die Bibliotheken für RTC, DHT22 und SDCard zusammen. Dann muss ich mit dem Start der Messung erst einmal eine neue Messdatei erzeugen. Danach regelmäßig die neuen Messdaten erfassen und an die Messdatei anhängen. Wenn die Messung beendet ist, wird auch die Messdatei abgeschlossen. Als Datenformat ist hiermit das CSV Format festgelegt.
Die Vorgänge werden alle per Kommando über die serielle Schnittstelle mittels eine Terminalprogramms gesteuert. Die Kommandos:
d oder D : Datum
f oder F : relative Luftfeuchte
h oder H : diese Hilfe
i oder I : Intervall der Messung in Minuten (1 – 9)
l oder L : Liste der Dateien auf SD Karte anzeigen
m oder M : Messung starten
r oder R : RTC setzen mit Datum und Uhrzeit
t oder T : Luft-Temperatur
x oder X : Messung beenden
z oder Z : Zeit


Das Datenformat CSV:

Ist eigentlich recht einfach. Mit einer Tabellenkalkulation eine Tabelle erstellen, wie sie später in der Auswertung aussehen soll und als CSV Datei speichern. Nach dieser Vorlage werden die Daten dann auf der SDCard abgespeichert und später dann als CSV in die Tabellenkalkulation eingelesen und ausgewertet.


LED Rückmeldungen vom System:

Systemstart – Grüne LED blitzt kurz auf
Messung läuft – Grüne LED dauerhaft an
Messung abgeschlossen – Grüne LED langsam blinken

Fehler im Init – Rote LED dauerhaft an
unbekanntes Kommando – Rote LED langsam blinken
Sensorfehler – Rote LED schnell blinken

SDCard Fehler – Gelbe LED schnell blinken


Die Messung:

Es wird eine Messdatei angelegt deren Name sich zusammensetzt aus dem aktuellen Startdatum TTMM und die Startzeit SSMM mit der Extension csv, z.B. 25031330.csv. Der Dateiname folgt der 8.3 Notation aus DOS Zeiten.
Die Intervallzeit zwischen den Messungen beträgt als Default 5 Minuten. Ist aber minutenweise Einstellbar (1 bis 9). Beendet wird die Messung manuell mit x oder automatisch nach 1440 Intervallen. Das ist eine Intervallzeit x 1 Tag lange Messung.


Anmerkungen:

  • Parameter für serielle Schnittstelle: 115200 Baud, 8 Datenbits, No Parity, 1 Stoppbit, neue Zeile mit CR+LF
  • Blinken
    langsames Blinken 1000ms An / Aus
    schnelles Blinken 200ms An / Aus
  • Zum Auswerten der Messwerte in der Tabellenkalkulation müssen die Punkte als Trennzeichen für die Floatwerte per ‚Suchen und Ersetzen‘ gegen ein Komma ersetzt werden. Beim Wegschreiben geht das nicht, da das Komma als Trennzeichen im CSV Format benutzt wird.

Der Sketch: Datalogger_TF

Brettaufbau

 

Auswertung mit einer Tabellenkalkulation


Links und Literturhinweise:

DS3231
https://datasheets.maximintegrated.com/en/ds/DS3231.pdf

DHT22
https://cdn-shop.adafruit.com/datasheets/Digital+humidity+and+temperature+sensor+AM2302.pdf

SD Card Modul
https://www.reichelt.de/arduino-shield-sd-karte-v4-ard-shd-sd-v4-p191233.html?&trstct=pos_1&nbc=1

HTerm
https://www.der-hammer.info/pages/terminal.html

CoolTerm
https://coolterm.en.lo4d.com/windows

Mit dem Uno messen und dem PC auswerten

Veröffentlicht von

Jürgen

Ich bin Software Ingenieur und habe meine Schwerpunkte in allen Aktivitäten, die zur Software Entwicklung gehören. Am längsten bin ich als Software Entwickler von Embedded Software in C tätig.