Кодты іздеу

ESP32 оқулығы 40/55 - Micro SD картасына оқу және жазу | SunFounder ESP32 IoT оқу жиынтығы

ESP32 оқулығы 40/55 - Micro SD картасына оқу және жазу | SunFounder ESP32 IoT оқу жиынтығы

Бұл оқулықта біз ESP32 және SunFounder ESP32 кеңейту тақтасын пайдаланып, микро SD картасынан оқуды және оған жазуды үйренеміз. Бұл бізге деректерді сақтауға және кейінірек оларды алуға мүмкіндік береді, бұл көптеген IoT қолданбалары үшін маңызды. Осы оқулықтың соңында сізде микро SD картасында файлдарды жасайтын, оған жазатын және оқитын жұмыс істейтін қондырғы болады.

Бастау үшін микро SD картаңыздың FAT32 форматында дұрыс пішімделгеніне көз жеткізіңіз, өйткені бұл ESP32 картамен жұмыс істеуі үшін қажетті файлдық жүйе. Біз SD_MMC кітапханасын қолданамыз, ол микро SD картасындағы файлдарға қол жеткізу процесін жеңілдетеді. Микро SD картасының максималды сыйымдылығы 32 ГБ-тан аспауы керек екенін ескеру маңызды.

Аппараттық құрал түсіндірмесі

Бұл жобадағы негізгі компоненттерге ESP32 микроконтроллері және микро SD карта модулі кіреді. ESP32 - бұл кірістірілген Wi-Fi және Bluetooth мүмкіндіктері бар әмбебап микроконтроллер, бұл оны IoT қолданбалары үшін өте қолайлы етеді. Микро SD карта модулі ESP32-ге картадан оқуға және оған жазуға мүмкіндік береді, бұл әртүрлі қолданбалар үшін деректерді сақтауды қамтамасыз етеді.

Микро SD картасы деректерді құрылымдық түрде сақтау үшін файлдық жүйені пайдалану арқылы жұмыс істейді. Ол ESP32-мен SD_MMC интерфейсі арқылы байланысады, бұл файлдарды тиімді оқуға және жазуға мүмкіндік береді. Бұл қондырғы деректерді журналға жазу, суреттерді сақтау немесе деректерді сақтау қажет болатын кез келген басқа қолданба үшін пайдаланылуы мүмкін.

Сым қосу нұсқаулары

ESP32-40-micro-sd-card-1

Микро SD картасын ESP32-ге қосу үшін мына қадамдарды орындаңыз:

Алдымен қуат және жерге қосу түйреуіштерін қосыңыз. Микро SD карта модулінің VCC түйреуішін ESP32-дегі 3.3V түйреуішіне қосыңыз, ал GND түйреуішін ESP32-дегі GND түйреуіштерінің біріне қосыңыз. Әрі қарай, деректер түйреуіштерін қосыңыз: микро SD карта модулінің CS (Chip Select) түйреуішін ESP32-дегі 5 түйреуішіне, MOSI (Master Out Slave In) түйреуішін 23 түйреуішіне, MISO (Master In Slave Out) түйреуішін 19 түйреуішіне және SCK (Serial Clock) түйреуішін 18 түйреуішіне қосыңыз. Байланыс ақауларын болдырмау үшін осы қосылымдардың сенімді екеніне көз жеткізіңіз.

Егер сіз басқа кеңейту тақтасын қолдансаңыз, түйреуіш нөмірлері әртүрлі болуы мүмкін, сондықтан өз тақтаңызға қатысты құжаттаманы қараңыз. Сымды қосу микро SD картасына файлдарды оқу және жазу операцияларының сәтті орындалуы үшін өте маңызды.

Код мысалдары және түсіндірме

Енді микро SD картасымен жұмыс істейтін кодтың негізгі бөліктерін қарастырайық. Орнату сериялық байланысты инициализациялаудан және микро SD картасының сәтті орнатылғанын тексеруден басталады.

Serial.begin(115200); // Сериялық байланысты инициализациялау
if (!SD_MMC.begin()) { // SD картасының сәтті орнатылғанын тексеру
  Serial.println("SD картасын орнату сәтсіз аяқталды"); // SD картасы орнатылмаса қате хабарламасын басып шығару
  return;
}

Бұл код үзіндісінде сериялық байланыс 115200 бод жылдамдығына орнатылған, бұл шығысты бақылау үшін маңызды. SD_MMC.begin() функциясы SD картасын орнатуға тырысады; егер ол сәтсіз болса, сериялық мониторға қате хабарламасы басып шығарылады.

Кодтың келесі бөлігі микро SD картасында жаңа файл жасайды және оған мәтін жолын жазады.

File file = SD_MMC.open("/test.txt", FILE_WRITE); 
if (!file) {
  Serial.println("Файлды жазу үшін ашу сәтсіз аяқталды"); // Файл ашылмаса қате хабарламасын басып шығару
  return;
}
if (file.println("Тест файлын жазу")) { // Файлға мәтін жолын жазу
  Serial.println("Файлды жазу сәтті аяқталды"); // Жазу операциясы сәтті болса сәттілік хабарламасын басып шығару
} else {
  Serial.println("Файлды жазу сәтсіз аяқталды"); // Жазу операциясы сәтсіз болса қате хабарламасын басып шығару
}
file.close(); // Файлды жабу

Мұнда test.txt деп аталатын файл жазу режимінде ашылады. Егер файл сәтті ашылса, оған мәтін жолы жазылады және сәттілік хабарламасы басып шығарылады. Егер жазу операциясы сәтсіз болса, оның орнына қате хабарламасы басып шығарылады. Соңында, өзгерістердің сақталғанына көз жеткізу үшін файл жабылады.

Код сонымен қатар микро SD картасының түбірлік каталогынан файлдарды оқиды және олардың атаулары мен өлшемдерін басып шығарады.

File root = SD_MMC.open("/"); // SD картасының түбірлік каталогын ашу
while (File file = root.openNextFile()) { // Түбірлік каталогтағы барлық файлдар арқылы цикл
  Serial.print(file.name()); // Файл атауын басып шығару
  Serial.print("\t");
  Serial.println(file.size()); // Файл өлшемін басып шығару
  file.close(); // Файлды жабу
}

Бұл үзінді түбірлік каталогты ашады және барлық файлдар арқылы өтіп, олардың атаулары мен өлшемдерін сериялық мониторға басып шығарады. Бұл деректердің сәтті жазылғанын тексеру және SD картасының мазмұнын көру үшін пайдалы.

Қосымша мәліметтер үшін мақаланың астында жүктелген толық кодты қараңыз.

Демонстрация / Не күтуге болады

Кодты жүктеп, ESP32-ні қайта іске қосқаннан кейін, сериялық мониторда SD картасының сәтті орнатылғанын және файл операцияларының сәтті орындалғанын көрсететін хабарламаларды көруіңіз керек. Сондай-ақ, түбірлік каталогта табылған файлдардың тізімін көресіз, бұл деректердің дұрыс жазылғанын растайды (бейнеде 13:45).

Жиі кездесетін қателіктерге микро SD картасының дұрыс пішімделгеніне және қосылғанына көз жеткізу, сондай-ақ сериялық монитордың дұрыс бод жылдамдығына орнатылғанын тексеру жатады. Егер қандай да бір мәселе туындаса, сым қосылымдарыңызды қайта тексеріңіз.

Бейне уақыт белгілері

  • 00:00 Бастау
  • 1:45 ESP32-дегі микро SD картасына кіріспе
  • 3:46 Құжаттар беті
  • 4:43 Arduino коды
  • 8:09 Arduino IDE-де ESP32 тақтасын және COM портын таңдау
  • 9:51 MicroSD картасына жазу демонстрациясы
  • 11:12 Жазылған файлдарды компьютерде қарау

Суреттер

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
Тіл: 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

Сізге қажет болуы мүмкін нәрселер

Ресурстар мен сілтемелер

Файлдар📁

Файлдар жоқ.