SD/SPIFFS диски (обновлено: 21 Feb 2022, 06:56:51)

Поддержка SPIFFS диска и подключения SD карты к ESP32, ESP32C3, ESP32S2 и ESP32S3, которая позволяет:
- проигрывание wav и mp3 файлов при установке MP3/WAV плеера через внутренний или внешний ЦАП, поддержка плейлистов;
- записывать показания датчиков (вести логи);
- обновление прошивки модуля с SD карты;
- загрузка файлов из интернета по http, загрузка файлов через веб интерфейс;
- простой веб сервер для поддержки html страниц, js скриптов и стилей;
- поддержка FTP сервера;
- хранение картинок для TFT дисплея;
- выполнение файлов скриптов Interpreter.

ESP8266 RTOS поддерживает в данный момент только SPIFFS !


Поддержка SPIFFS

SPIFFS - это диск на встроенной SPI памяти.

По умолчанию раздел диска для ESP32/ESP32C3/ESP32S2/ESP32S3 равен 512кб. Для изменения его размера SPIFFS требуется заменить таблицу разделов по адресу 0x8000 с полной прошивкой с нуля модуля. Для размера в 1мб файл тут (информацию требуется проверить). Увеличение размера диска за счет секций прошивки ограничивает её размер не более 1 мб!

Для ESP32/ESP32C3/ESP32S2/ESP32S3 имеющих на борту 16 мегабайт файл таблицы тут. Размер диска 8 мегабайт. Необходимо, чтобы изначально была использована таблица разделов для 16 мегабайт иначе - требуется очистка бланком и прошивка с нуля.

ESP8266 RTOS по умолчанию таблица разделов рассчитана на SPIFFS диск размером 1 мб. Файл таблицы разделов с поддержкой  SPIFFS находится тут. Прошить взамен файла по адресу 0x8000. Для модулей с памятью 1мб использование SPIFFS невозможно !

При первом запуске SPIFFS диска некоторое время идет его форматирование и в UART отладке возможны предупреждения от wachdog.


На картинке отображен список файлов в корневом каталоге диска и форма загрузки файлов на SD карту.

Обозначение букв в списке файлов: D - директория, F - файл.

Подключение SD карты

SD карту можно подключить по 2 разным интерфейсам: SDMMC(только ESP32S !) и SPI.

Самой SD карте требуется подключить GND и 3.3V, но некоторые готовые платы ридеры могут иметь стабилизатор с 5V на 3.3V.

На некоторых готовых SD ридерах, предназначенных для Arduino в разрыв линий связи могут стоять ограничивающие резисторы - их необходимо замкнуть для нормальной работы SD карты.

Не рекомендуются использовать платы с конвертером уровней - тут он не требуется. Желательно брать SD ридеры с минимумом деталей.


Вариант подключения через SDMMC интерфейс:

Этот вариант поддерживает только ESP32S. Модули ESP32C3, ESP32S2 и ESP32S3 не имеют этого интерфейса !

SD карта подключается по интерфейсу SDMMC в одно-проводном режиме по 3 проводам:

GPIO14 - CLK (SCK),  GPIO15 - CMD (MOSI), GPIO2 - D0 (MISO). CS карты подключаем к плюсу питания 3.3V. В скобках указано обозначение выводов, которое чаще всего используется для SPI режима на готовых модулях SD карт.

Возможно подключение и по четырех-проводному режиму(включается в шестеренке), где дополнительно используются еще 3 вывода SD карты: D1,D2,D3. Актуально только если у вас готовая китайская плата с такой разводкой.

Внимание !!! Часто на готовых платах ESP32 вывод GPIO 2 подтянут резистором к GND и требуется обязательно удалить этот резистор для работы SD карты !!! Иногда вместо резистора может стоять светодиод. На время прошивки по UART GPIO 2 потребуется закоротить на GND !

Переназначение выводов интерфейса SDMMC невозможно.


Вариант подключения через SPI интерфейс:

Для этого требуется в шестеренке опции включить эту возможность и выбрать необходимые GPIO для выводов CLK, MISO, MOSI, CS.

Опцию поддерживает ESP32S, ESP32C3, ESP32S2, ESP32S3.


Первоначальная настройка SD карты

Карта должна исправна и  быть отформатирована в формате FAT32.

Обновление прошивки модуля с SD карты

Для обновления прошивки с SD карты достаточно нажать на значок '>' рядом с BIN файлом в проводнике. После подтверждения обновления в течении примерно 10 секунд прошивка будет обновлена.

Проигрывание MP3 и WAV файлов

Вся документация по опции находится здесь.

Сохранение логов датчиков

В настройках опции необходимо выбрать куда(SD или SPIFFS) сохранять записи и интервал добавления. Ниже необходимо заполнить шаблон, в котором указываем необходимые датчики и прочие параметры в удобном для Вас варианте.

Для работы опции логирования на SD карте необходимо создать папку LOGS.

Активное(частое) сохранение логов уменьшает срок службы flash памяти(особенно у SPIFFS)

Загрузка файла с http сервера

Загрузить файл из интернета можно через get команду http://[ip адрес]/uploadsd?url=адрес&name=имя_файла

Имя файла  должно содержать путь, например /SD/www/index.html . Если файл существует, то он будет перезаписан.

Если в url задать текст fw, то на диск будет загружена последняя созданная прошивка из конструктора.

Загрузка больших файлов на SPIFFS может быть не стабильна.

Загрузка файла через веб интерфейс

В файловом менеджере доступна загрузка файлов на SPIFFS диск или на SD карту, файл будет загружен в ту папку, в которой находитесь в данный момент. Мультизагрузка не поддерживается.

Возможны сбои в загрузке при использовании длинных или русскоязычных имен файлов.

FTP сервер

Опция включается в дополнительных настройках.

Если логин и пароль не установлены модуле, то доступ по FTP осуществляется по логину и паролю ftp/ftp

Поддерживается только одно соединение, ftp клиент должен работать(настроен) на одно соединение !

Продвинутые GET команды

Удаление файла или папки с SD карты http://[ip адрес]/removesd?name=/SD/Имя_файла. Папку удалить можно, если она пустая.

Переименование/перемещение файла http://[ip адрес]/renamesd?old=/SD/Имя_файла&new=/SD/Имя_файла.Перемещение возможно только внутри диска

Создание папки http://[ip адрес]/mkdirsd?name=/SD/Имя_папки. SPIFFS не поддерживает папки !

Имя файла/папки должно содержать полный путь к файлу включая корневую папку SD или SPIFFS.