ESP32 Tutoriaal 40/55 - Lees en skryf na Micro SD-kaart | SunFounder se ESP32 IoT-leerkit
In hierdie tutoriaal sal ons leer hoe om van en na 'n mikro-SD-kaart te lees en te skryf met behulp van die ESP32 en die SunFounder ESP32-uitbreidingsbord. Dit sal ons in staat stel om data te stoor en dit later te herwin, wat noodsaaklik is vir baie IoT-toepassings. Teen die einde van hierdie tutoriaal sal jy 'n werkende opstelling hê wat lêers op die mikro-SD-kaart kan skep, daarna kan skryf en daaruit kan lees.
Om te begin, maak seker dat jou mikro-SD-kaart behoorlik geformateer is na FAT32, aangesien dit die vereiste lêerstelsel is vir die ESP32 om met die kaart te kommunikeer. Ons sal die SD_MMC-biblioteek gebruik, wat die proses om toegang tot lêers op die mikro-SD-kaart te verkry, vereenvoudig. Dit is belangrik om daarop te let dat die maksimum kapasiteit vir die mikro-SD-kaart nie 32 GB moet oorskry nie.
Hardeware Verduidelik
Die primêre komponente in hierdie projek sluit die ESP32-mikrobeheerder en die mikro-SD-kaartmodule in. Die ESP32 is 'n veelsydige mikrobeheerder met ingeboude Wi-Fi- en Bluetooth-vermoëns, wat dit ideaal maak vir IoT-toepassings. Die mikro-SD-kaartmodule stel die ESP32 in staat om van en na die kaart te lees en te skryf, wat databerging vir verskeie toepassings moontlik maak.
Die mikro-SD-kaart werk deur 'n lêerstelsel te gebruik om data op 'n gestruktureerde manier te stoor. Dit kommunikeer met die ESP32 deur die SD_MMC-koppelvlak, wat doeltreffende lees en skryf van lêers moontlik maak. Hierdie opstelling kan gebruik word vir die aanteken van data, die stoor van beelde, of enige ander toepassing waar datapreservering vereis word.
Bedradingsinstruksies

Om die mikro-SD-kaart aan die ESP32 te bedraad, volg hierdie stappe:
Verbind eers die krag- en grondpenne. Verbind die VCC-pen van die mikro-SD-kaartmodule aan die 3.3V-pen op die ESP32, en verbind die GND-pen aan een van die GND-penne op die ESP32. Verbind dan die datapenne: verbind die CS- (Chip Select) pen van die mikro-SD-kaartmodule aan pen 5 op die ESP32, die MOSI- (Master Out Slave In) pen aan pen 23, die MISO- (Master In Slave Out) pen aan pen 19, en die SCK- (Serial Clock) pen aan pen 18. Maak seker dat hierdie verbindings veilig is om enige kommunikasieprobleme te vermy.
As jy 'n ander uitbreidingsbord gebruik, kan die pennommers verskil, dus raadpleeg die dokumentasie spesifiek vir jou bord. Die bedrading is noodsaaklik vir die suksesvolle werking van die lees en skryf van lêers na die mikro-SD-kaart.
Kode Voorbeelde & Deurloop
Kom ons kyk nou na die hoofdele van die kode wat met die mikro-SD-kaart interaksie het. Die opstelling begin met die inisialisering van seriekommunikasie en die kontrole of die mikro-SD-kaart suksesvol gemonteer is.
Serial.begin(115200); // Inisialiseer seriekommunikasie
if (!SD_MMC.begin()) { // Kontroleer of SD-kaart suksesvol gemonteer is
Serial.println("Kon nie SD-kaart monteer nie"); // Druk foutboodskap as SD-kaart nie gemonteer kon word nie
return;
}
In hierdie kodefragment word die seriekommunikasie op 'n baud-tempo van 115200 gestel, wat belangrik is vir die monitering van uitset. Die SD_MMC.begin()-funksie probeer om die SD-kaart te monteer; as dit misluk, word 'n foutboodskap op die serie-monitor gedruk.
Die volgende deel van die kode skep 'n nuwe lêer op die mikro-SD-kaart en skryf 'n reël teks daarna.
File file = SD_MMC.open("/test.txt", FILE_WRITE);
if (!file) {
Serial.println("Kon nie lêer oopmaak vir skryf nie"); // Druk foutboodskap as lêer nie oopgemaak kon word nie
return;
}
if (file.println("Toets lêerskryf")) { // Skryf 'n reël teks na die lêer
Serial.println("Lêerskryf suksesvol"); // Druk suksesboodskap as skryfoperasie suksesvol is
} else {
Serial.println("Lêerskryf misluk"); // Druk foutboodskap as skryfoperasie misluk
}
file.close(); // Maak die lêer toe
Hier word 'n lêer genaamd test.txt in skryfmodus oopgemaak. As die lêer suksesvol oopgemaak word, skryf dit 'n reël teks en druk 'n suksesboodskap. As die skryfoperasie misluk, word 'n foutboodskap in plaas daarvan gedruk. Laastens word die lêer toegemaak om te verseker dat veranderinge gestoor word.
Die kode lees ook lêers uit die wortelgids van die mikro-SD-kaart en druk hul name en groottes.
File root = SD_MMC.open("/"); // Maak die wortelgids van SD-kaart oop
while (File file = root.openNextFile()) { // Loop deur al die lêers in die wortelgids
Serial.print(file.name()); // Druk die lêernaam
Serial.print("\t");
Serial.println(file.size()); // Druk die lêergrootte
file.close(); // Maak die lêer toe
}
Hierdie fragment maak die wortelgids oop en itereer deur al die lêers, en druk hul name en groottes op die serie-monitor. Dit is nuttig om te verifieer dat die data suksesvol geskryf is en om die inhoud van die SD-kaart te sien.
Vir verdere besonderhede, raadpleeg die volledige kode wat onder die artikel gelaai is.
Demonstrasie / Wat om te VerwAg
Na die oplaai van die kode en die herstel van die ESP32, behoort jy boodskappe in die serie-monitor te sien wat aandui of die SD-kaart suksesvol gemonteer is en of die lêeroperasies suksesvol was. Jy sal ook die lys van lêers in die wortelgids sien, wat bevestig dat die data korrek geskryf is (in video by 13:45).
Algemene slaggate sluit in om seker te maak dat die mikro-SD-kaart behoorlik geformateer en verbind is, sowel as om te verifieer dat die serie-monitor op die korrekte baud-tempo gestel is. As enige probleme ontstaan, kontroleer jou bedrading en verbindings weer.
Video Tydstempels
- 00:00 Begin
- 1:45 Inleiding tot Mikro-SD-kaart op ESP32
- 3:46 Dokumentasie-bladsy
- 4:43 Arduino-kode
- 8:09 Kies ESP32-bord en COM-poort in Arduino IDE
- 9:51 Demonstrasie van skryf na MicroSD-kaart
- 11:12 Bekyk geskrewe lêers 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
Goedere wat jy dalk nodig het
-
AliExpressPurchase a microSD card module from AliExpresss.click.aliexpress.com
-
BanggoodPurchase a microSD card module from Banggoodbanggood.com
Hulpbronne en verwysings
-
DokumentasieESP32 Tutorial 40/55 - SunFounder doc page for MicroSD carddocs.sunfounder.com
-
BuitenburgPurchase a microSD card module from AliExpresss.click.aliexpress.com
-
Buitenburg
-
Buitenburg
-
BuitenburgPurchase a microSD card module from Banggoodbanggood.com
Lêers📁
Geen lêers beskikbaar.