Arduino Datenlogger mit Micro-SD-Karte: Sensordaten dauerhaft speichern

Der Serial Monitor ist super zum Testen – aber sobald du Sensordaten über Tage oder Wochen auswerten willst, brauchst du einen echten Datenlogger. Mit einem Micro-SD-Karten-Modul speichert dein Arduino Messwerte dauerhaft als CSV-Datei, die du später direkt in Excel oder Google Sheets öffnen kannst.

Warum ein Datenlogger?

Viele unserer Sensor-Tutorials – vom DHT22-Temperatursensor bis zur Bodenfeuchtemessung – zeigen Messwerte live im Serial Monitor an. Das reicht zum Testen, aber nicht, um z. B. den Temperaturverlauf einer Woche auszuwerten. Ein Datenlogger schreibt jeden Messwert mit Zeitstempel in eine Datei auf einer Micro-SD-Karte – auch wenn kein Computer angeschlossen ist.

Was du brauchst

Bauteil Menge ca. Preis Link
Micro SD Card Reader Modul 1x ab 1,19 € Zum Produkt
UNO R3 Board 1x ab 4,99 € Zum Produkt
AM2302 (DHT22) Sensor 1x ab 2,99 € Zum Produkt
Micro-SD-Karte (separat, FAT32) 1x ca. 5–10 € im Elektronikhandel

Schaltungsaufbau (SPI)

SD-Modul Pin UNO R3 Pin Funktion
VCC 5V Spannungsversorgung
GND GND Masse
MISO Pin 12 SPI Daten (Modul → Board)
MOSI Pin 11 SPI Daten (Board → Modul)
SCK Pin 13 SPI Takt
CS Pin 10 Chip Select
DHT22 DATA Pin 7 Sensordaten

Formatiere die Micro-SD-Karte vorher am Computer als FAT32 – andere Dateisysteme werden von der Arduino-SD-Bibliothek nicht unterstützt.

Der Code

Installiere zusätzlich zur SD-Bibliothek (in der Arduino IDE bereits vorinstalliert) die Bibliothek „DHT sensor library" von Adafruit.

#include <SPI.h>
#include <SD.h>
#include "DHT.h"

#define DHT_PIN 7
#define DHT_TYPE DHT22
#define CS_PIN 10

DHT dht(DHT_PIN, DHT_TYPE);
unsigned long letzterLog = 0;
const unsigned long logIntervall = 60000; // alle 60 Sekunden loggen

void setup() {
  Serial.begin(9600);
  dht.begin();

  if (!SD.begin(CS_PIN)) {
    Serial.println("SD-Karte nicht gefunden!");
    return;
  }

  File logDatei = SD.open("klima.csv", FILE_WRITE);
  if (logDatei) {
    logDatei.println("Zeit_ms,Temperatur_C,Feuchtigkeit_Prozent");
    logDatei.close();
  }
  Serial.println("Datenlogger bereit.");
}

void loop() {
  if (millis() - letzterLog >= logIntervall) {
    letzterLog = millis();

    float temperatur = dht.readTemperature();
    float feuchtigkeit = dht.readHumidity();

    if (isnan(temperatur) || isnan(feuchtigkeit)) {
      Serial.println("Sensorfehler - Messung uebersprungen");
      return;
    }

    File logDatei = SD.open("klima.csv", FILE_WRITE);
    if (logDatei) {
      logDatei.print(millis());
      logDatei.print(",");
      logDatei.print(temperatur);
      logDatei.print(",");
      logDatei.println(feuchtigkeit);
      logDatei.close();

      Serial.println("Messwert gespeichert.");
    } else {
      Serial.println("Fehler beim Oeffnen der Datei!");
    }
  }
}

So funktioniert's

Jede Zeile in klima.csv enthält Zeitstempel, Temperatur und Feuchtigkeit – getrennt durch Kommas, also im klassischen CSV-Format. Die Datei öffnest und schließt du bei jedem Speichervorgang neu, damit die Daten auch bei einem plötzlichen Stromausfall nicht verloren gehen. Statt millis() (Millisekunden seit Start) kannst du mit einem zusätzlichen RTC-Modul echte Uhrzeiten loggen.

Praxisprojekte

🌡️ Langzeit-Klimaprotokoll: Zeichne über Wochen Temperatur- und Feuchtigkeitsverläufe in Keller, Gewächshaus oder Werkstatt auf.

💧 Bewässerungs-Protokoll: Kombiniere den Logger mit dem Bodenfeuchtesensor aus unserem Pflanzenbewässerungs-Tutorial, um zu sehen, wie oft und wie stark bewässert wurde.

📊 Schul- & Wissenschaftsprojekte: Erfasse reproduzierbare Messreihen für Referate oder Facharbeiten – ganz ohne dauerhaft angeschlossenen Computer.

Häufige Fehler

⚠️ „SD-Karte nicht gefunden": Meist liegt es an einer falsch formatierten Karte (muss FAT32 sein) oder einem falschen CS-Pin in SD.begin().

⚠️ Datei bleibt leer: Prüfe, ob du logDatei.close() nach jedem Schreibvorgang aufrufst – ohne das Schließen werden Daten oft nicht final auf die Karte geschrieben.

⚠️ Instabiler Betrieb bei langer Laufzeit: Häufiges Schreiben verkürzt die Lebensdauer der SD-Karte. Ein Logintervall von 30–60 Sekunden ist für die meisten Umweltmessungen völlig ausreichend.

🔧 Baue deinen eigenen Datenlogger

Alle Bauteile für deinen Datenlogger findest du bei makeroo.

Kombiniere den Logger mit unserem BMP280-Luftdruck-Tutorial für ein noch vollständigeres Klimaprotokoll.

Fazit

Mit einem Micro-SD-Modul verwandelst du jedes Sensor-Projekt in einen echten Datenlogger – unabhängig vom angeschlossenen Computer. Die Grundstruktur aus diesem Tutorial lässt sich auf fast jeden Sensor aus unseren anderen Anleitungen übertragen.

Zurück zum Blog