ESP32 Tutorijal 40/55 - Čitanje i pisanje na Micro SD karticu | SunFounder's ESP32 IoT Learning kit
U ovom tutorijalu naučit ćemo kako čitati i pisati na mikro SD karticu koristeći ESP32 i SunFounder ESP32 proširujuću ploču. To će nam omogućiti da pohranjujemo podatke i kasnije ih dohvatimo, što je ključno za mnoge IoT aplikacije. Do kraja ovog tutorijala imat ćete radno okruženje koje može kreirati, pisati i čitati datoteke s mikro SD kartice.
Za početak, provjerite da je vaša mikro SD kartica pravilno formatirana u FAT32, jer je to potreban datotečni sustav da bi ESP32 mogao komunicirati s karticom. Koristit ćemo SD_MMC biblioteku, koja pojednostavljuje proces pristupa datotekama na mikro SD kartici. Važno je napomenuti da maksimalni kapacitet mikro SD kartice ne smije prelaziti 32 GB.
Objašnjenje hardvera
Glavne komponente u ovom projektu uključuju ESP32 mikrokontroler i modul mikro SD kartice. ESP32 je svestran mikrokontroler koji ima ugrađene Wi-Fi i Bluetooth mogućnosti, što ga čini idealnim za IoT aplikacije. Modul mikro SD kartice omogućava ESP32 da čita i piše na karticu, omogućavajući pohranu podataka za različite aplikacije.
Mikro SD kartica radi koristeći datotečni sustav za strukturirano pohranjivanje podataka. Komunicira s ESP32 putem SD_MMC sučelja, što omogućava efikasno čitanje i pisanje datoteka. Ova postavka može se koristiti za bilježenje podataka, spremanje slika ili bilo koju drugu aplikaciju gdje je potrebna trajnost podataka.
Upute za povezivanje

Za povezivanje mikro SD kartice s ESP32, slijedite ove korake:
Prvo, spojite pinove za napajanje i uzemljenje. Spojite VCC pin modula mikro SD kartice na 3.3V pin na ESP32, a GND pin spojite na jedan od GND pinova na ESP32. Zatim, spojite podatkovne pinove: spojite CS (Chip Select) pin modula mikro SD kartice na pin 5 na ESP32, MOSI (Master Out Slave In) pin na pin 23, MISO (Master In Slave Out) pin na pin 19, i SCK (Serial Clock) pin na pin 18. Provjerite da su ove veze sigurne kako biste izbjegli probleme s komunikacijom.
Ako koristite drugu proširujuću ploču, brojevi pinova mogu se razlikovati, pa pogledajte dokumentaciju specifičnu za vašu ploču. Povezivanje je ključno za uspješno čitanje i pisanje datoteka na mikro SD karticu.
Primjeri koda i objašnjenje
Sada, pogledajmo glavne dijelove koda koji komuniciraju s mikro SD karticom. Postavka počinje inicijalizacijom serijske komunikacije i provjerom je li mikro SD kartica uspješno montirana.
Serial.begin(115200); // Inicijaliziraj serijsku komunikaciju
if (!SD_MMC.begin()) { // Provjeri je li SD kartica uspješno montirana
Serial.println("Neuspješno montiranje SD kartice"); // Ispiši poruku o grešci ako SD kartica nije montirana
return;
}
U ovom dijelu koda, serijska komunikacija postavljena je na brzinu prijenosa od 115200, što je važno za praćenje izlaza. Funkcija SD_MMC.begin() pokušava montirati SD karticu; ako ne uspije, ispisuje se poruka o grešci na serijski monitor.
Sljedeći dio koda kreira novu datoteku na mikro SD kartici i upisuje redak teksta u nju.
File file = SD_MMC.open("/test.txt", FILE_WRITE);
if (!file) {
Serial.println("Neuspješno otvaranje datoteke za pisanje"); // Ispiši poruku o grešci ako datoteka nije otvorena
return;
}
if (file.println("Test zapis datoteke")) { // Upiši redak teksta u datoteku
Serial.println("Uspješno pisanje datoteke"); // Ispiši poruku o uspjehu ako je operacija pisanja uspješna
} else {
Serial.println("Neuspješno pisanje datoteke"); // Ispiši poruku o grešci ako operacija pisanja nije uspjela
}
file.close(); // Zatvori datoteku
Ovdje se datoteka pod nazivom test.txt otvara u načinu pisanja. Ako je datoteka uspješno otvorena, upisuje redak teksta i ispisuje poruku o uspjehu. Ako operacija pisanja ne uspije, ispisuje se poruka o grešci. Na kraju, datoteka se zatvara kako bi se osiguralo da su promjene spremljene.
Kod također čita datoteke iz korijenskog direktorija mikro SD kartice i ispisuje njihova imena i veličine.
File root = SD_MMC.open("/"); // Otvori korijenski direktorij SD kartice
while (File file = root.openNextFile()) { // Prođi kroz sve datoteke u korijenskom direktoriju
Serial.print(file.name()); // Ispiši ime datoteke
Serial.print("\t");
Serial.println(file.size()); // Ispiši veličinu datoteke
file.close(); // Zatvori datoteku
}
Ovaj dio koda otvara korijenski direktorij i prolazi kroz sve datoteke, ispisujući njihova imena i veličine na serijski monitor. Ovo je korisno za provjeru da su podaci uspješno zapisani i za pregled sadržaja SD kartice.
Za više detalja, pogledajte puni kod učitani ispod članka.
Demonstracija / Što očekivati
Nakon što prenesete kod i resetirate ESP32, trebali biste vidjeti poruke na serijskom monitoru koje pokazuju je li SD kartica uspješno montirana i jesu li operacije s datotekama bile uspješne. Također ćete vidjeti popis datoteka pronađenih u korijenskom direktoriju, što potvrđuje da su podaci pravilno zapisani (u videu na 13:45).
Uobičajene zamke uključuju osiguravanje da je mikro SD kartica pravilno formatirana i povezana, kao i provjeru da je serijski monitor postavljen na ispravnu brzinu prijenosa. Ako se pojave bilo kakvi problemi, provjerite svoje povezivanje i veze.
Vremenske oznake videa
- 00:00 Početak
- 1:45 Uvod u mikro SD karticu na ESP32
- 3:46 Stranica dokumentacije
- 4:43 Arduino kod
- 8:09 Odabir ESP32 ploče i COM porta u Arduino IDE
- 9:51 Demonstracija pisanja na MicroSD karticu
- 11:12 Pregled zapisanih datoteka na računalu
#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
Things you might need
-
AliExpressPurchase a microSD card module from AliExpresss.click.aliexpress.com
-
BanggoodPurchase a microSD card module from Banggoodbanggood.com
Resources & references
-
DocumentationESP32 Tutorial 40/55- SunFounder doc page for MicroSD carddocs.sunfounder.com
-
ExternalPurchase a microSD card module from AliExpresss.click.aliexpress.com
-
External
-
External
-
ExternalPurchase a microSD card module from Banggoodbanggood.com
Files📁
No files available.