ESP32 Упатство 40/55 - Читање и запишување на Micro SD картичка | SunFounder's ESP32 IoT комплет за учење
Во ова упатство, ќе научиме како да читаме од и да запишуваме на микро SD картичка користејќи го ESP32 и проширената плоча SunFounder ESP32. Ова ќе ни овозможи да складираме податоци и да ги вратиме подоцна, што е од суштинско значење за многу IoT апликации. До крајот на ова упатство, ќе имате функционална поставка што може да креира, запишува и чита датотеки од микро SD картичката.
За да започнете, проверете дали вашата микро SD картичка е правилно форматирана во FAT32, бидејќи ова е потребниот датотечен систем за ESP32 да комуницира со картичката. Ќе ја користиме SD_MMC библиотеката, која го поедноставува процесот на пристап до датотеки на микро SD картичката. Важно е да се напомене дека максималниот капацитет на микро SD картичката не треба да надминува 32 GB.
Објаснување на хардверот
Примарните компоненти во овој проект вклучуваат ESP32 микроконтролер и модул за микро SD картичка. ESP32 е разноврсен микроконтролер што има вградени Wi-Fi и Bluetooth можности, што го прави идеален за IoT апликации. Модулот за микро SD картичка му овозможува на ESP32 да чита од и да запишува на картичката, овозможувајќи складирање податоци за различни апликации.
Микро SD картичката работи со користење на датотечен систем за складирање податоци на структуриран начин. Таа комуницира со ESP32 преку SD_MMC интерфејсот, што овозможува ефикасно читање и запишување на датотеки. Оваа поставка може да се користи за евидентирање податоци, зачувување слики или било која друга апликација каде што е потребна постојаност на податоците.
Инструкции за поврзување

За да ја поврзете микро SD картичката со ESP32, следете ги овие чекори:
Прво, поврзете ги пиновите за напојување и заземјување. Поврзете го VCC пинот на модулот за микро SD картичка со 3.3V пинот на ESP32, и поврзете го GND пинот со еден од GND пиновите на ESP32. Следно, поврзете ги пиновите за податоци: поврзете го CS (Chip Select) пинот на модулот за микро SD картичка со пин 5 на ESP32, 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 Вовед во микро SD картичка на ESP32
- 3:46 Страница со документација
- 4:43 Arduino код
- 8:09 Избор на ESP32 плоча и COM порт во Arduino IDE
- 9:51 Демонстрација на запишување на MicroSD картичка
- 11:12 Прегледување на запишаните датотеки на 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
Работи што можеби ќе ви требаат
-
AliExpressPurchase a microSD card module from AliExpresss.click.aliexpress.com
-
BanggoodPurchase a microSD card module from Banggoodbanggood.com
Ресурси и референци
-
ДокументацијаESP32 Tutorial 40/55 - SunFounder doc page for MicroSD carddocs.sunfounder.com
-
НадворешноPurchase a microSD card module from AliExpresss.click.aliexpress.com
-
Надворешно
-
Надворешно
-
НадворешноPurchase a microSD card module from Banggoodbanggood.com
Датотеки📁
Нема достапни датотеки.