Arduino als Datenlogger

Mit ganz einfachen Komponenten kann man einen Datenlogger bauen. Dazu wird ein Arduino Board sowie ein SD-Card Modul und der gewünschte Sensor, welcher die Daten erfassen soll benötigt. Das Standortprogramm schreibt alle 5 Sekunden einen Testwert in ein TXT-File auf der SD Karte. Die notwendigen Librarys sollten bei diesem Beispiel bereits mit der Installation des Arduino IDEs vorhanden sein.

Datenlogger vorbereiten

Damit der Datenlogger funktioniert, benötigen wir eine SD-Karte. Diese sollte entweder als FAT-16 oder FAT-32 formatiert sein. Ob das Schield eine SD-Karte oder microSD-Karte verwendet spielt normalerweise keine Rolle. Zur maximalen unterstützten Speicherkapazität gibt es derzeit keine Information, jedoch funktionierte bei diesem Test eine Speicherkarte mit 8 GB hervorragend.

Wie funktioniert die Software?

Mit unserem Quellcode haben wir bereits eine fertige Datenlogger-Lösung. Am Anfang des Quellcodes wird das Logintervall eingetragen. Standardmäßig geschieht das alle 5 Sekunden. Der größte Vorteil von unserem Code ist es, dass wir nicht einfach die Mainloop für 5 Sekunden pausieren, sondern die Daten alle 5 Sekunden mit einem Cronjob speichern. Dadurch kann der Mikrocontroller weitere Aktionen ungehindert durchführen. Wenn das Programm startet wird als erstes überprüft, ob bereits auf der SD-Karte ein Textfile vorhanden ist. Wenn nicht, dann wird automatisch ein Textfile erstellt. Bei jedem Log wird in der Textfile eine neue Zeile erstellt, welche im folgenden Format gespeichert wird: "PARAMETER,RUNTIME". Der Parameter ist der "mvalue" String, was für unseren Messwert (Temperatur, Spannung etc.) steht. Der zweite Wert "RUNTIME" ist die Laufzeit des Controllers in Sekunden. Wenn man sich die Startzeit des Programms notiert, kann man sich die genaue Uhrzeit jedes einzelnen Messwertes berechnen. Dadurch erspart man sich ein Zeitmodul bzw. viel zusätzlichen Quellcode. Das eigene Programm, welches die Daten einliest wird nicht in die "void loop()" sondern in das "void youraction()" geschrieben. Dadurch wird es mit dem Cronjob gesteuert, was zu einer zusätzlichen Effizienz führt.