Поддержка SPIFFS диска и подключения SD карты к ESP32, ESP32C3, ESP32S2 и ESP32S3, которая позволяет:
- проигрывание wav и mp3 файлов при установке MP3/WAV плеера через внутренний или внешний ЦАП, поддержка плейлистов;
- записывать показания датчиков (вести логи);
- обновление прошивки модуля с SD карты;
- загрузка файлов из интернета по http, загрузка файлов через веб интерфейс;
- простой веб сервер для поддержки html страниц, js скриптов и стилей;
- поддержка FTP сервера;
- хранение картинок для TFT дисплея;
- выполнение файлов скриптов Interpreter.
ESP8266 RTOS поддерживает в данный момент только 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 карту можно подключить по 2 разным интерфейсам: SDMMC(только ESP32S !) и SPI.
Самой SD карте требуется подключить GND и 3.3V, но некоторые готовые платы ридеры могут иметь стабилизатор с 5V на 3.3V.
На некоторых готовых SD ридерах, предназначенных для Arduino в разрыв линий связи могут стоять ограничивающие резисторы - их необходимо замкнуть для нормальной работы SD карты.
Не рекомендуются использовать платы с конвертером уровней - тут он не требуется. Желательно брать SD ридеры с минимумом деталей.
Этот вариант поддерживает только 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 невозможно.
Для этого требуется в шестеренке опции включить эту возможность и выбрать необходимые GPIO для выводов CLK, MISO, MOSI, CS.
Опцию поддерживает ESP32S, ESP32C3, ESP32S2, ESP32S3.
Карта должна исправна и быть отформатирована в формате FAT32.
Для обновления прошивки с SD карты достаточно нажать на значок '>' рядом с BIN файлом в проводнике. После подтверждения обновления в течении примерно 10 секунд прошивка будет обновлена.
Вся документация по опции находится здесь.
В настройках опции необходимо выбрать куда(SD или SPIFFS) сохранять записи и интервал добавления. Ниже необходимо заполнить шаблон, в котором указываем необходимые датчики и прочие параметры в удобном для Вас варианте.
Для работы опции логирования на SD карте необходимо создать папку LOGS.
Активное(частое) сохранение логов уменьшает срок службы flash памяти(особенно у SPIFFS)
Загрузить файл из интернета можно через get команду http://[ip адрес]/uploadsd?url=адрес&name=имя_файла
Имя файла должно содержать путь, например /SD/www/index.html . Если файл существует, то он будет перезаписан.
Если в url задать текст fw, то на диск будет загружена последняя созданная прошивка из конструктора.
Загрузка больших файлов на SPIFFS может быть не стабильна.
В файловом менеджере доступна загрузка файлов на SPIFFS диск или на SD карту, файл будет загружен в ту папку, в которой находитесь в данный момент. Мультизагрузка не поддерживается.
Возможны сбои в загрузке при использовании длинных или русскоязычных имен файлов.
Опция включается в дополнительных настройках.
Если логин и пароль не установлены модуле, то доступ по FTP осуществляется по логину и паролю ftp/ftp
Поддерживается только одно соединение, ftp клиент должен работать(настроен) на одно соединение !
Удаление файла или папки с SD карты http://[ip адрес]/removesd?name=/SD/Имя_файла. Папку удалить можно, если она пустая.
Переименование/перемещение файла http://[ip адрес]/renamesd?old=/SD/Имя_файла&new=/SD/Имя_файла.Перемещение возможно только внутри диска
Создание папки http://[ip адрес]/mkdirsd?name=/SD/Имя_папки. SPIFFS не поддерживает папки !
Имя файла/папки должно содержать полный путь к файлу включая корневую папку SD или SPIFFS.