SD/SPIFFS диски (обновлено: 01 Dec 2018, 08:10:39)

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

На данный момент русские имена не поддерживаются(в работе).


Поддержка SPIFFS

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

Для работы SPIFFS требуется обновить таблицу разделов по адресу 0x8000:

Для ESP32 имеющих на борту 4 мегабайта: Размер диска 1 мегабайт. Обязательное обновление файла таблицы только после одного успешного обновления по ОТА. Внимание: Сейчас прошивка сама конвертирует раздел factory в spiffs при условии, что текущая прошивка загружена в секцию ota и ручное обновление таблицы разделов не требуется.

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

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


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

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

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

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

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

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

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

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

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

Первоначальная настройка 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.