Hier schauen wir uns das Grundkonzept eines DataLoggers anhand eines Beispieles einer simplen Wetterstation an. Dieser Prototyp zeigt euch auf wie Ihr einen eigenen Logger Bauen könnt, der Daten auf einer Micro SD Karte als CSV Datei speichert bzw. loggt. Selbstverständlich kannst du noch einige Dinge weiter entwickeln – z.B. einen anderen Sensor anfügen, die Messintervalle verstellen und so weiter. Aber erst einmal von vorn…
Der Data-Logger zeichnet Sensor Daten auf, sobald er mit Strom versorgt wird. Sobald du ihn also irgendwo einschaltest, schreibt er die Messwerte in eine CSV Datei. In diesem Beispiel nutzen wir die interne Realtime Clock des Seeedstudio Xiao (SAMD) um den Logger möglichst Stromsparend zu betreiben. Diese RTC Weckt den Microcontroller aus dem Deepsleep auf und leitet die Messintervalle ein. Es ist also eine gute Gelegenheit eigene Datensätze aufzubauen und in deinen Arbeiten einzusetzen.
Nutzen der Realtime Clock (RTC)
In unserem Beispiel hier wird die interne RTC des Xiao genutzt. Im Gegensatz zu einem externen, von einer separaten Batterie gespeisten RTC Moduls speichert diese interne RTC nicht die «aktuelle reale» Zeit. Wir nutzen sie in diesem Beispiel lediglich um die Messintervalle zu steuern. Das heisst: Jedes Mal wenn wir den Logger aktivieren beginnt die Zeit und das Datum in dem CSV bei 00:00:00 00.00.00 und schreibt nicht die gespeicherte Realtime wie bei einem externen Modul z.B. 12:41:30 01.03.23 ein.
Die der Vorteil ist also nicht die korrekte Verknüpfung von Zeit und Daten, sondern die Stromersparnis die wir durch die Deepsleepstadien gewinnen können. Um zusätzliche Laufzeit aktiv zu generieren haben wir bei diesem Beispiel auch ein Solarpanel angebracht.
Vorbereitung
Bill of Material
- Seeedstudio XIAO
- Luftdruck-, Luftfeuchtigkeits- und Temperatur-Sensor BME280
- Kapazitativer Bodenfeuchtigkeitssensor
- Mirco-SD-Card-Modul
- Micro-SD-Card (max. 16GB)
- Batteriehalterung für 18650 Li-Ion-Batterie LilyGo TTGO T-BAT
- 18650 Li-Ion-Batterie
- Litzen 26AWG
- 3D Druck Gehäuse
- Prototypenboard
- Einwenig Lötzinn und Heissleim
File Download: Code und 3D Druck Files
Das .ino-File (Arduino Code), wie auch das .stl-File (3D Druck Gehäuse) kannst du hier finden:
https://github.com/MediaDock/Data_Logger
Für unseren Workshop haben wir die Gehäuse mit unserem Formlabs-Drucker aus Nylon gedruckt, das STL-File lässt sich aber problemlos in allen anderen 3D-Printern verarbeiten.
Hardware
Wieso der XIAO Microcontroller?
Das Herzstück des Data Loggers ist ein Seeedstudio XIAO. Dieses Projekt wurde mit dem XIAO entwickelt, weil wir den kleinen Formfaktor und den niedrigen Stromverbrauch im Deepsleep Mode nutzen wollten. Der gleiche Aufbau müsste auch mit anderen SAMD Boards machbar sein. z.B. dem Arduino MKR Zero. Getestet ist es aber nur in unserem aktuellen Setup.
Achtung 3.3V Logik
Bitte beachte unbedingt, dass das XIAO mit einer 3.3V Logik läuft! 5V können das Board beschädigen und den Magic Smoke provozieren!
Software
Arduino-IDE installieren
Lade die Arduino-IDE herunter und installiere sie entsprechend deinem Betriebssystem:
Falls du einen Guide für die Installation der Arduino-IDE brauchst, findest du ihn hier:
Seeedstudio XIAO im Boardsmanager der Arduino-IDE installieren
Bevor wir die Arduino IDE mit dem XIAO verwenden können, müssen wir einen weiteren Boardmanager installieren. Wir müssen folgende zwei Schritte unternehmen: die Installation des neuen Boardmanagers und die Installation des XIAO-Boards selbst.
1. Installiere den Seeeduino SAMD21 Boards Manager
Seeedstudio verfügt über einen Boardmanager, der mit dem XIAO und vielen anderen Seeeduino-Produkten funktioniert. Er kann wie folgt installiert werden:
- Öffne die Arduino-IDE
- Klicken auf das Menü
- Mac: ‹Arduino› und dann auf ‹Preferences›
- Windows: ‹File› und dann auf ‹Preferences›
- Das Fenster ‹Einstellungen› wird geöffnet.
- Suche das Textfeld ‹Additional Boards Manager URLs› am unteren Rand des Einstellungsfensters.
Öffne dieses Feld mit einem klick auf das Symbol rechts:
Kopiere folgende URLs und füge sie der Liste hinzu:
https://files.seeedstudio.com/arduino/package_seeeduino_boards_index.json
2. Installiere das XIAO-Board
Nun, da der neue Boardsmanager in deiner Arduino-IDE installiert wurde, kannst du den letzten Schritt durchführen – die Installation des Seeeduino XIAO-Boards selbst.
Zum Öffnen des Boardsmanagers gehe zum Menüpunkt ‹Tools› im oberen Menü und wähle ‹Boards Manager› oder klicke bei der neuen Arduino-IDE auf das Boardsmanager-Icon links im Fenster. Danach kannst du über ‹Filter your search› das Seeedstudio XIAO suchen und installieren.
Libraries in der Arduino IDE installieren
Für dieses Projekt werden folgende Libraries genutzt:
- RTCCounter.h Version: 1.0.1.
- SD.h Version: 1.2.4.
- SPI.h (Muss im Normalfall nicht zusätzlich Installiert werden)
- Adafruit_BME280.h Version 2.2.2.
- Adafruit_Sensor.h (Muss im Normalfall nicht zusätzlich Installiert werden)
- Wire.h (Muss im Normalfall nicht zusätzlich Installiert werden)
Aufbau
Alles installiert? Dann geht es los mit dem Aufbau! Löte die Komponenten wie im Diagramm aufgezeigt zusammen.
Fritzing
SD Modul
Um das Modul im Bauch des Gehäuses einzubauen, musst du die am Modul angelöteten Header entfernen und die Litzen von der Rückseite her direkt mit dem PCB verlöten.
- CS —> D3
- SCK —> D8
- MOSI —> D10
- MISO —> D9
- VCC —> 3.3V XAIO
- GND —> GND XIAO
BME/BMP 280 Modul
Dieses Modul ist mit dem XIAO über den I2C verbunden ist.
- VIN —> 3V XIAO
- GND —> GND XIAO
- SCL —> D5
- SDA —> D4
Bodenfeuchtigkeits Sensor
- V —> D6
- GND —> GND XIAO
- A —> D0
Code Upload
Alles zusammengebaut? Dann verbinde dein XIAO via USB mit deinem Rechner, öffne die DataLogger_Boilerplate_internalRTC_WithSensors_Formatted.ino
Datei, die du vom Github Repository heruntergeladen hast und lade sie auf das XIAO hoch.
Wenn du alles Richtig gemacht hast UND eine Micro-SD-Karte im Leseteil steckt, sollte dein Logger Booten und in die Messzyklen starten.
Achtung RTC Deepsleep!
Da wir mit einem RTC Intervall arbeiten die das gesamte Board inklusive Serieller Kommunikation in den Deepsleep versetzt ist es nur in den ersten 10 Sekunden nach dem Verbinden mit dem Computer ansprechbar. Das Delay von 10 Sekunden als erster Akt während dem Setup ist also extrem wichtig und sollte nicht aus dem Code entfernt werden! Um deinen Code hochzuladen, musst du in der IDE alles Ready haben und kurz nach dem einstecken den Upload starten.
Wenn das Boot Prozedere und die Initialisierung eines neuen CSV Files geglückt ist, blinkt ein Oranges LED auf dem XIAO Board 10x kurz auf. Du solltest im Serial Monitor in jedem Zeitintervall eine neue Messung angezeigt kriegen und eine neue Zeile in deiner CSV Datei gespeichert kriegen.
Deine Datei sollte nun folgender Massen Formatiert sein:
https://github.com/MediaDock/Data_Logger/blob/main/data/DATA009.CSV
Troubleshooting
Falls ein Sensor nicht wie gewünscht Daten liefert lade folgende Testprogramme auf dein XIAO hoch: diese sprechen die Sensoren individuell an und printen die Messwerte in den Serial Monitor der Arduino IDE. So kannst du eine eventuelle Fehlfunktion eines Sensors ausfindig machen!