Arduino SD-Karte: Anschluss, Einrichtung & Datenspeicherung – Komplettanleitung
Grundlagen: SD-Karte am Arduino
SD- (bis 2 GB) und microSD-Karten (SDHC bis 32 GB, SDXC bis 2 TB – aber Arduino-Library limitiert oft auf FAT32 ≤ 32 GB) sind ideale Datenspeicher für Logging, Konfiguration, Audio, Bilder. Betriebsspannung der Karten: 3,3 V. Nie direkt an 5-V-Logik anschließen! Fertige Breakout-Boards enthalten:
- 3,3-V-Regler (Low-Dropout) für 5-V-Versorgung
- Level-Shifter (z. B. 74LVC125A) für SPI-Signale (5 V ↔ 3,3 V)
SPI-Schnittstelle (Standard)
Arduino nutzt SPI-Mode (nicht SDIO – das erfordert Lizenz & komplexe Treiber). SPI-Pins sind hardwarefest:
| Signal | Uno / Nano | Mega | Leonardo / Micro | ESP32 (Arduino Core) | Pi Pico (Arduino Core) |
|---|---|---|---|---|---|
| MOSI | 11 | 51 | ICSP-4 | 23 (VSPI) | 19 (SPI0) |
| MISO | 12 | 50 | ICSP-1 | 19 (VSPI) | 16 (SPI0) |
| SCK | 13 | 52 | ICSP-3 | 18 (VSPI) | 18 (SPI0) |
| CS (SS) | 10 (Standard) | 53 (Standard) | 10 (beliebig) | 5 (beliebig) | 17 (beliebig) |
CS-Pin ist frei wählbar, muss aber im Code gesetzt werden (SD.begin(csPin)).
SD-Karte vorbereiten
- Karte in Modul stecken, Modul an Arduino anschließen.
- Karte auf FAT32 formatieren (Windows: Rechtsklick → Formatieren → FAT32; Linux:
mkfs.vfat; macOS: Festplattendienstprogramm → MS-DOS/FAT). - Immer neu formatieren – auch fabrikneue Karten können Clustergrößen/Partitionen haben, die die Arduino-SD-Library nicht mag.
Test mit CardInfo-Sketch
- IDE: Datei → Beispiele → SD → CardInfo öffnen.
- Prüfen:
const int chipSelect = 10;(bzw. Ihr CS-Pin). - Hochladen, Serial Monitor öffnen (9600 / 115200 Baud).
- Erfolg: „Initialization done.“, Kartentyp (SDHC), Dateisystem (FAT32), Größe.
- Fehler: „initialization failed“ → Verkabelung, CS-Pin, Karte, Formatierung prüfen.
Daten schreiben & lesen (Beispiel-Code)
#include <SPI.h>
#include <SD.h>
const int csPin = 10; // Uno/Nano
File dataFile;
void setup() {
Serial.begin(115200);
while (!Serial);
Serial.print("SD init... ");
if (!SD.begin(csPin)) {
Serial.println("FAILED!");
while (1);
}
Serial.println("OK");
// Schreiben
dataFile = SD.open("log.txt", FILE_WRITE);
if (dataFile) {
dataFile.println("Messung 1: 23.5 C, 1013 hPa");
dataFile.close();
Serial.println("Geschrieben.");
} else {
Serial.println("Fehler beim Öffnen zum Schreiben!");
}
// Lesen
dataFile = SD.open("log.txt");
if (dataFile) {
Serial.println("Inhalt:");
while (dataFile.available()) {
Serial.write(dataFile.read());
}
dataFile.close();
}
}
void loop() { /* Logging-Logik hier */ }
Wichtige Hinweise zur SD-Library
- Dateinamen: **8.3-Format** (max. 8 Zeichen Name, 3 Zeichen Extension, z. B.
LOG001.TXT). Keine Umlaute, Leerzeichen, lange Namen. - Keine Verzeichnisse in Standard-Library (nur Root). Für Ordner:
SdFat-Library (leistungsfähiger, unterstützt Long Filenames, Verzeichnisse, exFAT). print()/println()schreiben Text;write()für Binärdaten.read()liefert **ein Byte** – für Zeilen: Puffer füllen bis'\n'.- Immer
close()nach Schreiben – sonst Datenverlust! - Stromausfall beim Schreiben → Dateisystemkorruption. Lösung: Pufferkondensator, sauberes Herunterfahren,
SdFatmit Journaling (exFAT) oder Wear-Leveling beachten.
Häufige Probleme & Lösungen
| Symptom | Ursache / Lösung |
|---|---|
| „Card failed, or not present“ | Verkabelung (SPI, CS, VCC/GND), Karte defekt, falscher CS-Pin, keine gemeinsame Masse |
| Initialisierung klappt, aber Schreiben fehlschlägt | Karte schreibgeschützt (Schieber), voll, Formatfehler, falsche Library (SD vs. SdFat) |
| Daten „Müll“ beim Lesen | Baudrate Serial Monitor falsch, Datei nicht geschlossen, Binärdaten als Text gelesen |
| Karte wird erkannt, aber 0 Byte Größe | Formatierung nicht FAT32, Partitionstabelle defekt, Karte gefälscht/defekt |
Erweiterte Library: SdFat (empfohlen für neue Projekte)
- Schneller (DMA-Support auf SAMD/ESP32/STM32)
- Unterstützt Long Filenames (LFN), Verzeichnisse, exFAT (größer 32 GB)
- Bessere Fehlerbehandlung, Konfigurierbarkeit
- Installation: Library Manager → „SdFat“ (von Bill Greiman / Arduino)
Fazit
Die Arduino-SD-Library macht Datenspeicherung einfach. Keys: 3,3-V-Pegel (Levelshifter!), FAT32-Formatierung, korrekter CS-Pin, close() nicht vergessen. Für professionelles Logging (lange Dateinamen, Verzeichnisse, große Karten, Geschwindigkeit) SdFat verwenden. Bei Fragen zur Integration helfen wir gerne.
Industrietechnik
- 6G erforscht: Die Zukunft ultraschneller Konnektivität
- Pumpenkavitation verhindern: Ursachen, Symptome und Vermeidung
- Plasmaschneiden erklärt: Funktionsweise, Vorteile und Tipps
- Löten erklärt: Verfahren, Lote, Schritt-für-Schritt-Anleitung & Entlöten
- Hartlöten erklärt: Metallteile sicher & effektiv verbinden
- Kupferhartlöten erklärt: Techniken & Tipps für starke, zuverlässige Verbindungen
- MQTT in der Industrieautomation: Praxishandbuch für Hersteller
- Lean Digital: Definition, Vorteile und nahtlose Integration
- PIC18 Mikrocontroller: Eigenschaften, Performance & Programmierung
- Referenzbezeichner verstehen: PCB-Bestückungsanschlüsse korrekt kennzeichnen