SPIFFS — это файловая система, организованная во внешней флеш-памяти микроконтроллера. Большая часть этой памяти используется для хранения загрузчика, программы, системных настроек. SPIFFS же позволяет использовать оставшуюся часть для нужд программиста: для хранения изображений, шрифтов, аудиофайлов, настроек и т.п.
С файлами в SPIFFS можно делать всё то же, что и с файлами на SD-карте, за исключением некоторых моментов, которые пока ещё не реализованы. Так, на момент написания данного урока SPIFFS не работает с папками, так что все файлы хранятся одним списком.
Как скопировать файл с компьютера в SPIFFS? Для среды разработки Arduino IDE существует программный инструмент, который позволяет это сделать. Для его установки потребуется выполнить несколько шагов.
1. Убедиться, что в Arduino IDE установлен пакет поддержки плат ESP32. Как установить этот пакет, подробно рассказывается в нашем уроке: Настройка Arduino IDE для ESP32
2. Скачать архив с модулем по ссылке:
https://github.com/me-no-dev/arduino-esp32fs-plugin/releases/
3. Создать папки tools/ESP32FS/tool в домашней папке со скетчами. Узнать путь до домашней папки можно в настройках Arduino IDE, в поле «Размещение папки скетчей». В результате должна появиться такая структура папок:
С:/Users/имя_пользователя/Documents/Arduino/tools/ESP32FS/tool/
4. Скопировать в эту папку файл esp32fs.jar, взятый из архива.
5. Перезапустить Arduino IDE. Готово!
Загрузка файлов в SPIFFS
Файлы, которые требуется записать в память контроллера необходимо скопировать в папку «data» внутри папки скетча. Например, будет такой путь:
C:\Sketches\my_sketch\data
Затем, в меню Инструменты выбираем пункт: ESP32 Sketch Data Upload
и в появившемся списке выбираем пункт SPIFFS.
В строке состояния появится сообщение:
SPIFFS Uploading Image...
А в консоли побегут строчки сообщений о ходе процесса:
[SPIFFS] data : C:\Sketches\my_sketch\data
[SPIFFS] offset : 0
[SPIFFS] start : 2686976
[SPIFFS] size : 1408
[SPIFFS] page : 256
[SPIFFS] block : 4096
->/nasalization24.vlw
->/nasalization48.vlw
[SPIFFS] upload : C:\Users\Zeus\AppData\Local\Temp\arduino_build_164362/my_sketch.spiffs.bin
[SPIFFS] address: 2686976
[SPIFFS] port : COM3
[SPIFFS] speed : 921600
[SPIFFS] mode : dio
[SPIFFS] freq : 80m
->esptool.py v4.5.1
->Serial port COM3
->Connecting....
->Chip is ESP32-D0WD (revision v1.0)
->Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
->Crystal is 40MHz
->MAC: 40:f5:20:78:ce:6c
->Uploading stub...
->Running stub...
->Stub running...
->Changing baud rate to 921600
->Changed.
->Configuring flash size...
->Auto-detected Flash size: 4MB
->Flash will be erased from 0x00290000 to 0x003effff...
->Compressed 1441792 bytes to 78066...
->Writing at 0x00290000... (20 %)
->Writing at 0x002a6111... (40 %)
->Writing at 0x002c0a1b... (60 %)
->Writing at 0x002e3489... (80 %)
->Writing at 0x003088a2... (100 %)
->Wrote 1441792 bytes (78066 compressed) at 0x00290000 in 7.1 seconds (effective 1629.1 kbit/s)...
->Hash of data verified.
После загрузки файла в строке состояния Arduino IDE появится сообщение:
SPIFFS Image Uploaded
Готово! Теперь контроллер в любой момент подгружать файлы из SPIFFS и работать с ними, как если бы они находились на SD-карте.
Возможные проблемы
На момент написания данного урока, данный модуль расширения не работал для плат ESP32-S3. Для решения этой проблемы рекомендуется установить модифицированный модуль по ссылке:
В arduino ide 2 работает?