ESP32 S3 - Konfiguration von SD-Karte lesen
Die Verwaltung von Konfigurationen ist eine häufige Herausforderung bei Embedded-Projekten. Einstellungen in einer Datei auf einer Micro-SD-Karte zu speichern, ist eine praktische, hardwareunabhängige Lösung. Dieses Tutorial zeigt Ihnen, wie Sie mit dem ESP32 S3 Schlüssel-Wert-Paare aus einer Datei config.txt auf einer Micro-SD-Karte lesen und diese Werte zur Laufzeit in typisierte Variablen laden.
Was Sie bauen werden:
- Eine Datei config.txt auf der Micro-SD-Karte mit Schlüssel-Wert-Paaren in einem einfachen Format.
- Code, der die Konfigurationsdatei liest und einen Wert in einer int-Variablen speichert.
- Code, der die Konfigurationsdatei liest und einen Wert in einer float-Variablen speichert.
- Code, der die Konfigurationsdatei liest und einen Wert in einer String-Variablen speichert.

Erforderliche Hardware
Oder Sie können die folgenden Kits kaufen:
| 1 | × | DIYables ESP32 S3 Starter-Kit (ESP32 S3 enthalten) | |
| 1 | × | DIYables Sensor-Kit (18 Sensoren/Displays) |
Überblick über Micro SD Card Module
Das Micro-SD-Kartenmodul gibt dem ESP32 S3 über die SPI-Schnittstelle Zugriff auf einen austauschbaren Flash-Speicher. So können Sie Dateien wie in einem herkömmlichen Dateisystem lesen und schreiben. Es benötigt nur vier Datenleitungen (MOSI, MISO, SCK und CS) plus Stromversorgung und lässt sich daher leicht in jedes ESP32 S3 Projekt integrieren. Wenn Sie neu mit diesem Modul sind, lesen Sie das Tutorial ESP32 S3 - Micro-SD-Karte, das Pinbelegung, Verdrahtung und Einrichtung der Bibliothek ausführlich behandelt.
Wichtige Spezifikationen
- Schnittstelle: SPI
- Versorgungsspannung: 3,3 V oder 5 V (bei den meisten Modulen mit integriertem Spannungsregler)
- Unterstützte Kartenformate: FAT16, FAT32
- Maximale Kartengröße: 32 GB (FAT32)
- Datenleitungen: MOSI, MISO, SCK, CS
Funktionsweise
Die Schlüssel-Wert-Paare werden vorab in einer Textdatei auf der Micro-SD-Karte gespeichert, und zwar in einem einfachen Format, das der ESP32 S3 effizient auswerten kann. Jedes Schlüssel-Wert-Paar steht in einer eigenen Zeile, und der Schlüssel wird durch ein =-Zeichen vom Wert getrennt. Die Datei benötigt daher keine speziellen Bibliotheken zur Erstellung und kann auf jedem PC mit einem einfachen Texteditor bearbeitet werden.
Formatregeln für Schlüssel
- Jedes Schlüssel-Wert-Paar steht in einer eigenen Zeile und ist durch einen Zeilenumbruch von den anderen getrennt.
- Schlüssel und Wert werden durch ein =-Zeichen getrennt; Leerzeichen drumherum sind nicht erforderlich.
- Der ESP32 S3 Code durchsucht die Datei von oben nach unten nach einem passenden Schlüssel, daher spielt die Reihenfolge der Paare in der Datei keine Rolle.
- Der Wert wird als String zurückgegeben und kann mit den Standard-Konvertierungsfunktionen von Arduino in int oder float umgewandelt werden.
Verdrahtungsdiagramm
Das Micro-SD-Kartenmodul wird über SPI mit dem ESP32 S3 verbunden. Verbinden Sie VCC mit 3,3 V (oder 5 V, wenn das Modul einen integrierten Spannungsregler hat), GND mit GND und die vier SPI-Datenleitungen mit den entsprechenden SPI-Pins des ESP32 S3, wie im folgenden Diagramm gezeigt.

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
Sicherheitshinweise
Versorgen Sie das Micro-SD-Kartenmodul immer über die richtige Spannungsleitung für Ihre Modulvariante – 5 V an einem reinen 3,3-V-Modul können die Karte dauerhaft beschädigen. Stellen Sie sicher, dass die Micro-SD-Karte vollständig eingesteckt und als FAT16 oder FAT32 formatiert ist, bevor Sie die Schaltung einschalten, da die SD-Bibliothek eine unformatierte oder exFAT-Karte nicht initialisieren kann.
※ Notiz:
Wenn Sie ein Ethernet-Shield oder ein anderes Shield mit Micro-SD-Kartenhalter verwenden, benötigen Sie das Micro-SD-Kartenmodul nicht. Sie müssen die Micro-SD-Karte nur in den Micro-SD-Kartenhalter des Shields einsetzen.
So lesen Sie die Konfiguration in Variablen ein
Die folgenden Schritte führen Sie durch das Erstellen der Konfigurationsdatei auf Ihrem PC, das Kopieren auf die Micro-SD-Karte und das Ausführen des Arduino-Sketches, der die Schlüssel-Wert-Paare auswertet und in typisierte Variablen lädt. Der Code durchsucht für jeden Schlüssel die gesamte Datei und funktioniert daher unabhängig von der Reihenfolge der Paare.
- Neu beim ESP32 S3? Arbeiten Sie zuerst unsere Anleitung Erste Schritte mit dem ESP32 S3 durch.
- Erstellen Sie auf Ihrem PC mit Notepad oder Notepad++ eine Datei namens config.txt.
- Kopieren Sie die folgenden Schlüssel-Wert-Paare und fügen Sie sie in config.txt ein:
- Verbinden Sie die Micro-SD-Karte über einen USB-3.0-SD-Kartenleser mit Ihrem PC.
- Stellen Sie sicher, dass die Micro-SD-Karte als FAT16 oder FAT32 formatiert ist (suchen Sie online nach einer Anleitung für Ihr Betriebssystem).
- Kopieren Sie config.txt in das Stammverzeichnis der Micro-SD-Karte.
- Trennen Sie die Micro-SD-Karte vom PC.
- Verbinden Sie die Micro-SD-Karte gemäß dem obigen Verdrahtungsplan über das Micro-SD-Kartenmodul mit dem ESP32 S3.
- Kopieren Sie den folgenden Code und öffnen Sie ihn in der Arduino IDE:
- Klicken Sie in der Arduino IDE auf die Schaltfläche Upload, um den Sketch zu kompilieren und auf den ESP32 S3 hochzuladen.
- Öffnen Sie den Seriellen Monitor, stellen Sie die Baudrate passend zum Sketch ein und beobachten Sie die Ausgabe.
- Profi-Tipp: Der Code hängt nicht von der Reihenfolge der Schlüssel-Wert-Paare in config.txt ab. Er durchsucht die Datei bei jeder Suche nach einem Schlüssel von Anfang an, sodass Sie Paare frei hinzufügen, entfernen oder umordnen können, ohne den Arduino-Sketch zu ändern.
Ausgabe im Seriellen Monitor
Nach erfolgreichem Hochladen und Initialisieren der Karte zeigt der Serielle Monitor jeden Variablennamen zusammen mit dem aus config.txt gelesenen Wert an. Die folgenden Messwerte wurden am 2026-06-16 mit einem ESP32 S3 WROOM N16R8 und einer 16-GB-FAT32-Micro-SD-Karte aufgezeichnet.
Der Serielle Monitor bestätigt, dass jede Variable genau den Wert enthält, der im entsprechenden Schlüssel-Wert-Paar auf der Micro-SD-Karte gespeichert ist. Sie können die Konfigurationsdatei ändern und den ESP32 S3 neu starten, um die neuen Werte zu laden, ohne die Firmware neu zu flashen.
Anwendungen
Das Speichern der Konfiguration in einer Datei auf einer Micro-SD-Karte trennt Laufzeiteinstellungen von der Firmware. Das ist besonders nützlich bei installierten Systemen, deren Parameter sich ohne Neukompilierung ändern lassen sollen. Typische Anwendungsfälle sind:
- WLAN-Zugangsdaten: Speichern Sie SSID und Passwort in der Konfigurationsdatei, damit sich das Gerät ohne Codeänderung mit dem richtigen Netzwerk verbindet.
- Sensor-Schwellenwerte: Legen Sie Alarmgrenzen für Temperatur oder Luftfeuchtigkeit fest, die Betreiber vor Ort durch Bearbeiten von config.txt anpassen können.
- Geräteidentität: Weisen Sie jedem Gerät einer Flotte einen eindeutigen Namen oder eine ID zu, indem Sie auf jede Karte eine andere Konfigurationsdatei schreiben.
- Kalibrierungs-Offsets: Speichern Sie Kalibrierungsfaktoren von Sensoren als Gleitkommazahlen, damit sie ohne Neukompilierung der Firmware feinjustiert werden können.
- Feature-Flags: Aktivieren oder deaktivieren Sie optionale Funktionen beim Start, indem Sie einen booleschen Schlüssel aus der Konfigurationsdatei lesen.
Video Tutorial
Wir erwägen die Erstellung von Video-Tutorials. Wenn Sie Video-Tutorials für wichtig halten, abonnieren Sie bitte unseren YouTube-Kanal , um uns zu motivieren, die Videos zu erstellen.
Sehen Sie sich unten die Schritt-für-Schritt-Videoanleitung für dieses ESP32 S3 Projekt an.
Herausforderungen
Diese Übungen helfen Ihnen, den einfachen Sketch zum Lesen der Konfiguration zu einer robusteren, produktionsreifen Firmware auszubauen. Beginnen Sie mit der Aufgabe für Anfänger und steigern Sie sich, sobald Sie sicherer werden.
- Anfänger: Fügen Sie config.txt zwei weitere Schlüssel-Wert-Paare hinzu (zum Beispiel ledPin=2 und blinkRate=500) und passen Sie den Sketch an, damit er sie in eine int-Variable einliest und damit eine LED blinken lässt.
- Fortgeschritten: Schreiben Sie eine Hilfsfunktion getConfigValue(key), die einen Schlüsselnamen entgegennimmt und den zugehörigen String-Wert zurückgibt. Überarbeiten Sie dann den Sketch, sodass er diese Funktion für alle Abfragen aufruft, statt die Suchlogik zu wiederholen.
- Experte: Implementieren Sie eine Fehlerbehandlung, sodass der Sketch bei einem in config.txt fehlenden Schlüssel auf einen fest codierten Standardwert zurückgreift und eine Warnung im Seriellen Monitor ausgibt. So arbeitet das Gerät auch mit einer unvollständigen Konfigurationsdatei sicher weiter.