Mini модуль-картридер MicroSD (3.3V) — компактный и надежный модуль для чтения и записи данных, идеально подходящий для проектов на Arduino, ESP8266/ESP32, STM32 и других микроконтроллерах с рабочим напряжением 3.3 В.

Главные преимущества:
- Компактный размер: Легко интегрируется в портативные устройства и миниатюрные DIY-проекты.
- Прямое подключение 3.3V: Идеально совместим с современными энергоэффективными контроллерами без необходимости использования преобразователей логических уровней.
- Быстрый обмен данными: Работает по стандартному скоростному интерфейсу SPI.
Контактная группа модуля:
- 3v3 — питание модуля (строго 3.3 В). Подключение к 5 В выведет модуль из строя!
- CS — (Chip Select), выбор устройства (управляющий цифровой пин микроконтроллера).
- MOSI — (Master Out Slave In), передача данных от контроллера.
- CLK — (Serial Clock), тактовый сигнал синхронизации.
- MISO — (Master In Slave Out), передача данных к контроллеру.
- GND — земля (общий минус).
Пример:

|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
#include "FS.h" // Подключение базовой библиотеки для работы с файловой системой #include "SD.h" // Подключение библиотеки для работы с SD-картами #include "SPI.h" // Подключение библиотеки SPI для связи с SD-модулем // Функция для вывода списка файлов и папок в директории (с поддержкой рекурсии) void listDir(fs::FS &fs, const char * dirname, uint8_t levels){ Serial.printf("Listing directory: %s\n", dirname); // Вывод текущей папки в консоль File root = fs.open(dirname); // Открытие указанной директории if(!root){ Serial.println("Failed to open directory"); // Ошибка, если папку не удалось открыть return; } if(!root.isDirectory()){ Serial.println("Not a directory"); // Ошибка, если указанный путь — это файл, а не папка return; } File file = root.openNextFile(); // Получение первого элемента (файла или папки) в директории while(file){ if(file.isDirectory()){ // Проверка: является ли элемент папкой Serial.print(" DIR : "); Serial.println(file.name()); // Вывод имени папки if(levels){ // Если разрешены глубокие уровни (levels > 0), ищем файлы внутри этой папки listDir(fs, file.name(), levels -1); } } else { // Если элемент — это файл Serial.print(" FILE: "); Serial.print(file.name()); // Вывод имени файла Serial.print(" SIZE: "); Serial.println(file.size()); // Вывод размера файла в байтах } file = root.openNextFile(); // Переход к следующему файлу/папке в директории } } // Функция для создания новой папки void createDir(fs::FS &fs, const char * path){ Serial.printf("Creating Dir: %s\n", path); if(fs.mkdir(path)){ // Попытка создать директорию Serial.println("Dir created"); // Успешно создано } else { Serial.println("mkdir failed"); // Ошибка создания } } // Функция для удаления существующей папки void removeDir(fs::FS &fs, const char * path){ Serial.printf("Removing Dir: %s\n", path); if(fs.rmdir(path)){ // Попытка удалить директорию Serial.println("Dir removed"); // Успешно удалено } else { Serial.println("rmdir failed"); // Ошибка удаления } } // Функция для чтения содержимого файла и вывода его в Serial порт void readFile(fs::FS &fs, const char * path){ Serial.printf("Reading file: %s\n", path); File file = fs.open(path); // Открытие файла для чтения (по умолчанию) if(!file){ Serial.println("Failed to open file for reading"); // Ошибка открытия return; } Serial.print("Read from file: "); while(file.available()){ // Цикл выполняется, пока в файле есть данные для чтения Serial.write(file.read()); // Чтение байта из файла и отправка в Serial } file.close(); // Закрытие файла после чтения } // Функция для записи данных в файл (перезаписывает файл, если он существовал) void writeFile(fs::FS &fs, const char * path, const char * message){ Serial.printf("Writing file: %s\n", path); File file = fs.open(path, FILE_WRITE); // Открытие файла в режиме записи (FILE_WRITE) if(!file){ Serial.println("Failed to open file for writing"); // Ошибка открытия return; } if(file.print(message)){ // Попытка записать строку в файл Serial.println("File written"); // Успешная запись } else { Serial.println("Write failed"); // Ошибка записи } file.close(); // Закрытие файла после записи } // Функция для добавления данных в конец существующего файла void appendFile(fs::FS &fs, const char * path, const char * message){ Serial.printf("Appending to file: %s\n", path); |







