Search Code

ESP32 Tutorijal 40/55 - Čitanje i pisanje na Micro SD karticu | SunFounder's ESP32 IoT Learning kit

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

ESP32-40-micro-sd-card-1

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

Images

ESP32-40-micro-sd-card-1
ESP32-40-micro-sd-card-1
ESP32-40-micro-sd-card-2
ESP32-40-micro-sd-card-2
841-ESP32 Tutorial 40/55- Arduino code for micro SD card
Language: C++
#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

Things you might need

Files📁

No files available.