Tutorial ESP32 40/55 - Citirea și scrierea pe cardul Micro SD | Kitul de învățare IoT ESP32 de la SunFounder
În acest tutorial, vom învăța cum să citim și să scriem pe un card micro SD folosind ESP32 și placa de extensie ESP32 de la SunFounder. Acest lucru ne va permite să stocăm date și să le recuperăm ulterior, ceea ce este esențial pentru multe aplicații IoT. La finalul acestui tutorial, vei avea o configurație funcțională care poate crea, scrie și citi fișiere de pe cardul micro SD.
Pentru a începe, asigură-te că cardul tău micro SD este formatat corect în FAT32, deoarece acesta este sistemul de fișiere necesar pentru ca ESP32 să interacționeze cu cardul. Vom folosi biblioteca SD_MMC, care simplifică procesul de accesare a fișierelor de pe cardul micro SD. Este important de reținut că capacitatea maximă a cardului micro SD nu ar trebui să depășească 32 GB.
Hardware Explicat
Componentele principale din acest proiect includ microcontrolerul ESP32 și modulul pentru card micro SD. ESP32 este un microcontroler versatil care dispune de capacități integrate Wi-Fi și Bluetooth, fiind ideal pentru aplicații IoT. Modulul pentru card micro SD permite ESP32 să citească și să scrie pe card, permițând stocarea datelor pentru diverse aplicații.
Cardul micro SD funcționează folosind un sistem de fișiere pentru a stoca datele într-o manieră structurată. Acesta comunică cu ESP32 prin interfața SD_MMC, care permite citirea și scrierea eficientă a fișierelor. Această configurație poate fi folosită pentru înregistrarea datelor, salvarea imaginilor sau orice altă aplicație în care este necesară persistența datelor.
Instrucțiuni de Cablare

Pentru a conecta cardul micro SD la ESP32, urmează acești pași:
În primul rând, conectează pinii de alimentare și de masă. Conectează pinul VCC al modulului pentru card micro SD la pinul 3.3V de pe ESP32 și conectează pinul GND la unul dintre pinii GND de pe ESP32. Apoi, conectează pinii de date: conectează pinul CS (Chip Select) al modulului pentru card micro SD la pinul 5 de pe ESP32, pinul MOSI (Master Out Slave In) la pinul 23, pinul MISO (Master In Slave Out) la pinul 19 și pinul SCK (Serial Clock) la pinul 18. Asigură-te că aceste conexiuni sunt sigure pentru a evita problemele de comunicare.
Dacă folosești o altă placă de extensie, numerele pinilor pot varia, așa că consultă documentația specifică plăcii tale. Cablarea este crucială pentru funcționarea cu succes a citirii și scrierii fișierelor pe cardul micro SD.
Exemple de Cod și Explicații
Acum, să ne uităm la părțile principale ale codului care interacționează cu cardul micro SD. Configurarea începe cu inițializarea comunicării seriale și verificarea dacă cardul micro SD este montat cu succes.
Serial.begin(115200); // Inițializează comunicarea serială
if (!SD_MMC.begin()) { // Verifică dacă cardul SD este montat cu succes
Serial.println("Failed to mount SD card"); // Afișează mesajul de eroare dacă cardul SD nu a putut fi montat
return;
}
În acest fragment de cod, comunicarea serială este setată la o rată de transmisie de 115200, ceea ce este important pentru monitorizarea ieșirii. Funcția SD_MMC.begin() încearcă să monteze cardul SD; dacă eșuează, un mesaj de eroare este afișat în monitorul serial.
Următoarea parte a codului creează un fișier nou pe cardul micro SD și scrie o linie de text în el.
File file = SD_MMC.open("/test.txt", FILE_WRITE);
if (!file) {
Serial.println("Failed to open file for writing"); // Afișează mesajul de eroare dacă fișierul nu a putut fi deschis
return;
}
if (file.println("Test file write")) { // Scrie o linie de text în fișier
Serial.println("File write successful"); // Afișează mesajul de succes dacă operațiunea de scriere este reușită
} else {
Serial.println("File write failed"); // Afișează mesajul de eroare dacă operațiunea de scriere a eșuat
}
file.close(); // Închide fișierul
Aici, un fișier numit test.txt este deschis în modul de scriere. Dacă fișierul este deschis cu succes, scrie o linie de text și afișează un mesaj de succes. Dacă operațiunea de scriere eșuează, este afișat un mesaj de eroare. În final, fișierul este închis pentru a se asigura că modificările sunt salvate.
Codul citește, de asemenea, fișiere din directorul rădăcină al cardului micro SD și afișează numele și dimensiunile acestora.
File root = SD_MMC.open("/"); // Deschide directorul rădăcină al cardului SD
while (File file = root.openNextFile()) { // Parcurge toate fișierele din directorul rădăcină
Serial.print(file.name()); // Afișează numele fișierului
Serial.print("\t");
Serial.println(file.size()); // Afișează dimensiunea fișierului
file.close(); // Închide fișierul
}
Acest fragment deschide directorul rădăcină și iterează prin toate fișierele, afișând numele și dimensiunile acestora în monitorul serial. Acest lucru este util pentru a verifica dacă datele au fost scrise cu succes și pentru a vedea conținutul cardului SD.
Pentru mai multe detalii, consultă codul complet încărcat mai jos în articol.
Demonstrație / Ce să Te Aștepți
După încărcarea codului și resetarea ESP32, ar trebui să vezi mesaje în monitorul serial care indică dacă cardul SD a fost montat cu succes și dacă operațiunile cu fișiere au fost reușite. Vei vedea, de asemenea, lista fișierelor găsite în directorul rădăcină, ceea ce confirmă că datele au fost scrise corect (în videoclip la 13:45).
Capcanele comune includ asigurarea că cardul micro SD este formatat și conectat corect, precum și verificarea că monitorul serial este setat la rata de transmisie corectă. Dacă apar probleme, verifică din nou cablarea și conexiunile.
Marcaje Temporale din Videoclip
- 00:00 Start
- 1:45 Introducere în cardul Micro SD pe ESP32
- 3:46 Pagina de documentație
- 4:43 Cod Arduino
- 8:09 Selectarea plăcii ESP32 și a portului COM în Arduino IDE
- 9:51 Demonstrația scrierii pe cardul MicroSD
- 11:12 Vizualizarea fișierelor scrise pe 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
Lucruri de care ai putea avea nevoie
-
AliExpressPurchase a microSD card module from AliExpresss.click.aliexpress.com
-
BanggoodPurchase a microSD card module from Banggoodbanggood.com
Resurse și referințe
-
DocumentațieESP32 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
Fișiere📁
Nu sunt disponibile fișiere.