ESP32 Tutorial 40/55 - Lezen en schrijven naar Micro SD-kaart | SunFounder's ESP32 IoT-leerkit
In deze tutorial leren we hoe we gegevens kunnen lezen van en schrijven naar een micro SD-kaart met behulp van de ESP32 en het SunFounder ESP32-uitbreidingsbord. Hiermee kunnen we gegevens opslaan en later ophalen, wat essentieel is voor veel IoT-toepassingen. Aan het einde van deze tutorial heb je een werkende opstelling die bestanden op de micro SD-kaart kan maken, ernaar kan schrijven en ervan kan lezen.
Om te beginnen, zorg ervoor dat je micro SD-kaart correct is geformatteerd naar FAT32, aangezien dit het vereiste bestandssysteem is voor de ESP32 om met de kaart te communiceren. We zullen de SD_MMC-bibliotheek gebruiken, die het proces van toegang tot bestanden op de micro SD-kaart vereenvoudigt. Het is belangrijk om op te merken dat de maximale capaciteit van de micro SD-kaart niet groter mag zijn dan 32 GB.
Hardware uitgelegd
De belangrijkste componenten in dit project zijn de ESP32-microcontroller en de micro SD-kaartmodule. De ESP32 is een veelzijdige microcontroller met ingebouwde Wi-Fi- en Bluetooth-mogelijkheden, waardoor deze ideaal is voor IoT-toepassingen. De micro SD-kaartmodule stelt de ESP32 in staat om van en naar de kaart te lezen en te schrijven, waardoor gegevensopslag voor verschillende toepassingen mogelijk wordt.
De micro SD-kaart werkt door een bestandssysteem te gebruiken om gegevens op een gestructureerde manier op te slaan. Het communiceert met de ESP32 via de SD_MMC-interface, wat efficiënt lezen en schrijven van bestanden mogelijk maakt. Deze opstelling kan worden gebruikt voor het loggen van gegevens, het opslaan van afbeeldingen of elke andere toepassing waarbij gegevenspersistentie vereist is.
Bedradingsinstructies

Om de micro SD-kaart op de ESP32 aan te sluiten, volg je deze stappen:
Verbind eerst de stroom- en aardpinnen. Verbind de VCC-pin van de micro SD-kaartmodule met de 3.3V-pin op de ESP32 en verbind de GND-pin met een van de GND-pinnen op de ESP32. Verbind vervolgens de datapinnen: verbind de CS-pin (Chip Select) van de micro SD-kaartmodule met pin 5 op de ESP32, de MOSI-pin (Master Out Slave In) met pin 23, de MISO-pin (Master In Slave Out) met pin 19 en de SCK-pin (Serial Clock) met pin 18. Zorg ervoor dat deze verbindingen stevig zijn om communicatieproblemen te voorkomen.
Als je een ander uitbreidingsbord gebruikt, kunnen de pinnummers variëren. Raadpleeg daarom de documentatie die specifiek is voor jouw bord. De bedrading is cruciaal voor het succesvol lezen en schrijven van bestanden naar de micro SD-kaart.
Codevoorbeelden en uitleg
Laten we nu kijken naar de belangrijkste delen van de code die met de micro SD-kaart communiceren. De opstelling begint met het initialiseren van seriële communicatie en het controleren of de micro SD-kaart succesvol is gemount.
Serial.begin(115200); // Initialiseer seriële communicatie
if (!SD_MMC.begin()) { // Controleer of de SD-kaart succesvol is gemount
Serial.println("Kan SD-kaart niet mounten"); // Print foutmelding als de SD-kaart niet kon worden gemount
return;
}
In dit codefragment wordt de seriële communicatie ingesteld op een baudrate van 115200, wat belangrijk is voor het monitoren van de uitvoer. De functie SD_MMC.begin() probeert de SD-kaart te mounten; als dit mislukt, wordt een foutmelding naar de seriële monitor geprint.
Het volgende deel van de code maakt een nieuw bestand op de micro SD-kaart en schrijft er een regel tekst naar.
File file = SD_MMC.open("/test.txt", FILE_WRITE);
if (!file) {
Serial.println("Kan bestand niet openen om te schrijven"); // Print foutmelding als het bestand niet kon worden geopend
return;
}
if (file.println("Testbestand schrijven")) { // Schrijf een regel tekst naar het bestand
Serial.println("Bestand succesvol geschreven"); // Print succesmelding als de schrijfbewerking succesvol is
} else {
Serial.println("Schrijven naar bestand mislukt"); // Print foutmelding als de schrijfbewerking mislukt
}
file.close(); // Sluit het bestand
Hier wordt een bestand met de naam test.txt geopend in schrijfmodus. Als het bestand succesvol is geopend, wordt er een regel tekst geschreven en wordt er een succesmelding geprint. Als de schrijfbewerking mislukt, wordt er in plaats daarvan een foutmelding geprint. Ten slotte wordt het bestand gesloten om ervoor te zorgen dat wijzigingen worden opgeslagen.
De code leest ook bestanden uit de hoofdmap van de micro SD-kaart en print hun namen en groottes.
File root = SD_MMC.open("/"); // Open de hoofdmap van de SD-kaart
while (File file = root.openNextFile()) { // Loop door alle bestanden in de hoofdmap
Serial.print(file.name()); // Print de bestandsnaam
Serial.print("\t");
Serial.println(file.size()); // Print de bestandsgrootte
file.close(); // Sluit het bestand
}
Dit fragment opent de hoofdmap en doorloopt alle bestanden, waarbij hun namen en groottes naar de seriële monitor worden geprint. Dit is handig om te verifiëren dat de gegevens succesvol zijn geschreven en om de inhoud van de SD-kaart te bekijken.
Voor meer details, raadpleeg de volledige code die onder het artikel is geladen.
Demonstratie / Wat te verwachten
Na het uploaden van de code en het resetten van de ESP32, zou je berichten in de seriële monitor moeten zien die aangeven of de SD-kaart succesvol is gemount en of de bestandsbewerkingen succesvol waren. Je ziet ook de lijst met bestanden in de hoofdmap, wat bevestigt dat de gegevens correct zijn geschreven (in video op 13:45).
Veelvoorkomende valkuilen zijn onder meer ervoor zorgen dat de micro SD-kaart correct is geformatteerd en aangesloten, en dat de seriële monitor is ingesteld op de juiste baudrate. Als er problemen optreden, controleer dan opnieuw je bedrading en verbindingen.
Videotijdstempels
- 00:00 Start
- 1:45 Introductie tot Micro SD-kaart op ESP32
- 3:46 Documentatiepagina
- 4:43 Arduino-code
- 8:09 ESP32-bord en COM-poort selecteren in Arduino IDE
- 9:51 Demonstratie van het schrijven naar MicroSD-kaart
- 11:12 Geschreven bestanden bekijken op pc
#include "SD_MMC.h"
void setup() {
Serial.begin(115200); // Initialize serial communication
if (!SD_MMC.begin()) { // Check if SD card is mounted successfully
Serial.println("Failed to mount SD card"); // Print error message if SD card failed to mount
return;
}
// Create a file in the root directory of SD card and open it in write mode.
File file = SD_MMC.open("/test.txt", FILE_WRITE);
if (!file) {
Serial.println("Failed to open file for writing"); // Print error message if file failed to open
return;
}
if (file.println("Test file write")) { // Write a line of text to the file
Serial.println("File write successful"); // Print success message if write operation is successful
} else {
Serial.println("File write failed"); // Print error message if write operation failed
}
file.close(); // Close the file
File root = SD_MMC.open("/"); // Open the root directory of SD card
if (!root) {
Serial.println("Failed to open directory"); // Print error message if directory failed to open
return;
}
Serial.println("Files found in root directory:"); // Print the list of files found in the root directory
while (File file = root.openNextFile()) { // Loop through all the files in the root directory
Serial.print(" ");
Serial.print(file.name()); // Print the filename
Serial.print("\t");
Serial.println(file.size()); // Print the filesize
file.close(); // Close the file
}
}
void loop() {} // Empty loop function, does nothing
Common Course Links
Common Course Files
Dingen die je misschien nodig hebt
-
AliExpressPurchase a microSD card module from AliExpresss.click.aliexpress.com
-
BanggoodPurchase a microSD card module from Banggoodbanggood.com
Hulpmiddelen en referenties
-
DocumentatieESP32 Tutorial 40/55 - SunFounder doc page for MicroSD carddocs.sunfounder.com
-
ExternPurchase a microSD card module from AliExpresss.click.aliexpress.com
-
Extern
-
Extern
-
ExternPurchase a microSD card module from Banggoodbanggood.com
Bestanden📁
Geen bestanden beschikbaar.