Установка загрузчика файловой системы arduino esp32

Обновлено: 04.07.2024

В этом руководстве мы расскажем, как использовать SPIFFS платы ESP32: как с ее помощью загружать файлы на flash-память ESP32, как считывать данные с этих файлов, а также записывать и добавлять данные к этим файлам.

Введение в SPIFFS

SPIFFS расшифровывается как «serial peripheral interface flash file system», т.е. «файловая система для flash-памяти, передающей данные через SPI». Соответственно, SPIFFS – это упрощенная файловая система, предназначенная для микроконтроллеров с flash-чипами, передающими данные по шине SPI (вроде flash-памяти ESP32).

SPIFFS обеспечивает доступ к flash-памяти примерно по тому же принципу, что и обычная файловая система ПК, но она проще и имеет ряд ограничений. Она позволяет осуществлять считывание, запись, закрытие и удаление файлов. На момент написания этой статьи SPIFFS не поддерживает директории, так что все сохраняется в одном месте (т.е. создавать папки нельзя).

Области применения SPIFFS

SPIFFS наиболее полезна для использования с ESP32 в следующих ситуациях:

  • Создание файлов для хранения настроек;
  • Постоянное хранение данных;
  • Создание файлов для хранения небольшого количества данных (вместо использования для этого карты MicroSD);
  • Хранение HTML- и CSS-файлов для создания веб-сервера.

В других руководствах (вроде этого) мы писали HTML- и CSS-код для веб-сервера прямо в скетче для IDE Arduino. Но SPIFFS дает возможность писать его в отдельный файл, а затем сохранять его в файловой системе.

Устанавливаем загрузчик SPIFFS

Создавать, сохранять и записывать данные в файлы, хранящиеся в файловой системе ESP32, можно прямо при помощи кода в скетче IDE Arduino, но это не слишком удобно.

К счастью, для IDE Arduino есть плагин, позволяющий загружать файлы прямо в файловую систему ESP32 из папки на вашем ПК. Это очень упрощает работу с файлами. Давайте его установим.

Во-первых, убедитесь, что у вас установлена самая новая версия IDE Arduino, а в нее установлен аддон для ESP32. Далее проделайте следующее:

  • Зайдите на эту страницу и скачайте архив «ESP32FS-1.0.zip»
  • Перейдите в папку, куда установлена IDE Arduino, и откройте в ней папку «tools».
  • Распакуйте скачанный в 1 пункте ZIP-архив в папку «tools». В результате должен получиться путь как на скриншоте ниже.

Esp32fs spiffs arduino tools folder 1.PNG

Примечание: Дальнейшие инструкции можно найти по этой ссылке.

Чтобы проверить, успешно ли установился плагин, откройте IDE Arduino и выберите плату ESP32. Далее кликните на «Инструменты» (Tools) и проверьте, есть ли в этом меню пункт «ESP32 Sketch Data Upload».

Esp32 arduino scetch data upload 1.PNG

Загружаем файлы при помощи загрузчика SPIFFS

Чтобы загрузить файлы в файловую систему ESP32, нужно сделать следующее:

  • Создайте скетч IDE Arduino и сохраните его. В демонстрационных целях можно просто сохранить пустой скетч;
  • Откройте папку скетча. Это можно сделать, кликнув в IDE Arduino на «Скетч» > «Показать папку скетча» (Sketch > Show sketch folder). В результате должна открыться директория, куда вы сохранили свой скетч.
  • Внутри этой папки создайте новую папку под названием «data».
  • Внутри папки «data» нужно поместить файлы, которые вы хотите сохранить в файловую систему ESP32. Например, создайте файл «.txt» под названием «test_example» и сохраните в нем любой произвольный текст.
  • Затем, чтобы загрузить файлы, кликните в IDE Arduino на «Инструменты» > «ESP32 Sketch Data Upload» (Tools > ESP32 Sketch Data Upload).

Esp32 arduino scetch data upload 1.PNG

Esp32 spiffs image uploaded 1.PNG

Тестируем загрузчик SPIFFS

Теперь давайте проверим, сохранился ли наш файл на файловой системе ESP32. Просто загрузите на ESP32 код ниже.

Загрузив скетч, откройте монитор порта на скорости 115200 бод. Затем нажмите на ESP32 на кнопку EN. В результате в мониторе порта должно быть напечатано содержимое файла «.txt».

Esp32fs spiffs test read file 1.PNG

Поздравляем! Вы успешно загрузили файлы в файловую систему ESP32 при помощи плагина.

Как манипулировать файлами в файловой системе

Здесь мы расскажем, как манипулировать файлами в файловой системе SPIFFS при помощи кода для IDE Arduino. Мы научимся записывать данные в файлы, добавлять данные в файлы, считывать содержимое файлов, удалять файлы, создавать новые файлы и узнавать размер файлов. Все это будет продемонстрировано в скетче ниже.

Примечание: О более продвинутых способах манипуляции с файлами можно узнать из скетчей-примеров библиотеки «SPIFFS». В ней есть несколько функций для этого. Некоторые из них можно найти в этом скетче.

Теперь давайте разберем этот код. В нем используются библиотеки «SPIFFS» и «FS».

Сначала создаем объект класса «File» для манипуляции с файлом. В этом скетче он назван «myFile», но вы можете назвать его как угодно.

Создаем указатель на тип «const char*» для пути к файлу.

В блоке setup() инициализируем монитор порта и SPIFFS.

Записываем данные в файл

Чтобы записать данные в файл, сначала при помощи метода open() открываем файл в режиме записи. Первым параметром в этом методе служит путь к файлу. Второй параметр – это значение «FILE_WRITE», с помощью которого задается открытие файла в режиме записи.

Примечание: Если файла не существует, он будет автоматически создан.

Чтобы записать текст в файл, используем метод print() на объекте «File».

Добавляем данные в файл

Чтобы добавить данные в файл, открываем его в режиме добавления данных.

Затем записываем данные в файл при помощи метода print().

Считываем содержимое файла

Чтобы прочесть содержимое файла, открываем его в режиме чтения:

Затем при помощи метода read() считываем байты из файла. Если в файле есть какие-то байты, которые можно прочесть, печатаем их в мониторе порта.

Узнаем размер файла

При помощи метода size() узнаем размер файла.

Удаляем файл

Чтобы удалить файл, используем метод remove(), а в его параметре пишем путь к файлу.

Тестируем код

Загрузив код на ESP32, открываем монитор порта на скорости 115200 бод и нажимаем на кнопку EN на ESP32. В результате в мониторе порта должно напечататься следующее:

ESP32 содержит флэш-файловую систему с последовательным периферийным интерфейсом (SPIFFS). SPIFFS - это легкая файловая система, созданная для микроконтроллеров с флеш-чипом, которые соединены шиной SPI, как флеш-память ESP32. В этой статье мы покажем, как легко загружать файлы в файловую систему ESP32 с помощью загрузчика для Arduino IDE.


Знакомство с SPIFFS

SPIFFS позволяет вам получить доступ к флэш-памяти, как если бы вы делали это в обычной файловой системе на вашем компьютере, но более проще и с ограничениями. Вы можете читать, писать, закрывать и удалять файлы. На момент написания этой статьи SPIFFS не поддерживает каталоги, поэтому все сохраняется в плоской структуре.

Использование SPIFFS с платой ESP32 особенно полезно для:

Создания конфигурационных файлов с настройками;
Постоянного хранения данных;
Хранения небольших объемов данных вместо использования карты microSD;
Хранения файлов HTML и CSS для создания веб-сервера ;
Хранения изображений, рисунков, иконок ;
И многого другого.
В большинстве проектов веб-серверов HTML-код пишется в виде кода непосредственно в скетче Arduino. С помощью SPIFFS вы можете записать HTML и CSS в отдельный файл и сохранить их в файловой системе ESP32. Отдельно будет статья, как создать веб-сервер с файлами, хранящимися в файловой системе ESP32.

Установка загрузчика файловой системы Arduino ESP32
Есть такой плагин для Arduino IDE, который позволяет загружать файлы прямо в файловую систему ESP32 из папки на вашем компьютере. Это позволяет легко и просто работать с файлами. Для начала установим его.

Во-первых, убедитесь, что у вас установлена ​​последняя версия Arduino IDE и в менеджере доступна плата ESP32. Если ее там нет, следуйте одному из следующих руководств, чтобы установить его:
Инструкции для Windows, Mac и Linux - Установка платы ESP32 в Arduino IDE

Выполните следующие шаги для установки загрузчика файловой системы:

1) Перейдите на страницу github и скачайте файл ESP32FS-1.0.zip

ВНИМАНИЕ. Для ESP8266 нужно скачать этот архив. Остальные действия по установке идентичны.


2) Перейдите в каталог Arduino IDE и откройте папку Инструменты.


3) Разархивируйте содержимое папки .zip в папку Tools. У вас должна быть похожая структура папок:

<home_dir> / Arduino-<ваша версия> / tools / ESP32FS / tool / esp32fs.jar


4) И перезапустите Arduino IDE.

Чтобы проверить, был ли установлен Uploader, откройте Arduino IDE. Выберите свою плату ESP32, перейдите в Инструменты и убедитесь, что у вас есть опция ESP32 Sketch Data Upload.


Загрузка файлов с помощью загрузчика

Для загрузки файлов в файловую систему ESP32 выполните следующие инструкции.

1) Создайте скетч Arduino и сохраните его. В демонстрационных целях вы можете сохранить пустой файл.

2) Затем откройте папку со скетчами. Вы можете перейти к Sketch > Show Sketch Folder. Папка, в которой сохранен ваш эскиз, должна открыться.


3) Внутри этой папки создайте новую папку с именем data.


4) Внутри папки с данными вы должны поместить файлы, которые хотите сохранить в файловую систему ESP32. В качестве примера создайте файл .txt с текстом с именем test_example.


5) Затем, чтобы загрузить файлы, в Arduino IDE вам просто нужно перейти в Инструменты > ESP32 Sketch Data Upload.




Проверка залитых фалов

Теперь давайте просто проверим, действительно ли файл был сохранен в файловой системе ESP32. Просто загрузите следующий код на свою плату ESP32.

void setup() <
Serial.begin(115200);

if(!SPIFFS.begin(true)) <
Serial.println("An Error has occurred while mounting SPIFFS");
return;
>

File file = SPIFFS.open("/test_example.txt");
if(!file) <
Serial.println("Failed to open file for reading");
return;
>

Serial.println("File Content:");
while(file.available()) <
Serial.write(file.read());
>
file.close();
>

Все. Вы успешно загрузили файлы в файловую систему ESP32 с помощью загрузчика файлов.
Таким образом, использование загрузчика в файловую систему - один из самых простых способов загрузки файлов в ESP32.

Просмотр и редактирования файлов в SPIFFS

Если Вы хотите трогать файлы и видеть информацию о свободном пространстве, то скачайте скетч BRIDGE и прошейте им своё устройство.
Так же скачайте и скомпилируйте кроссплатформенный файловый менеджер A-Explorer

A-Explorer под Windows

Что такое BRIDGE?

BRIDGE – это скетч, а прежде всего одноимённая функция, которая работает с файловой системой SPIFFS и A-Explorer является графической оболочкой для неё. Последний отправляет ту или иную команду, а данная функция её обрабатывает на самом устройстве с использованием библиотек FS и SPIFFS.

.Файловая система SPIFFS в ESP8266 и ESP32

У микроконтроллеров ESP8266 и ESP32 есть своя файловая система SPIFFS (Serial Peripheral Interface Flash File System). Из названия понятно, что она работает по шине SPI.

SPIFFS аналогична файловой системе компьютера , но имеет ряд ограничений. Она позволяет создавать, редактировать файлы в тестовых форматах.
Загрузить можно файлы в формате: "txt", "htm", "html", "js", "json", "c", "h", "cpp", "css", "xml" и другие текстовые документы. Данные документы можно без труда отредактировать удалить. Также можно загрузить графические элементы в формате: "png", "jpg", "gif", "ico" и пр. Что позволяет реализовать веб-интерфейс для управления ESP8266 или ESP32.
В интернет источниках не раз встречал информацию о том, что нельзя создавать директории в файловой системе SPIFFS. Но в уроках Сергея Третьякова по созданию web-интерфейса, используются и папки. Возможно, что ситуация изменилась и создания директорий доработали.
Кстати у Сергея достаточно понятные и доступные видео уроки по созданию web-интерфейся для управления проектом на ESP8266. При желании можно доработать данные примеры и реализовать, что-то подобное на ESP32.

Создать текстовый документ можно напрямую в коде. Но вот для загрузки картинки понадобиться специальный плагин, который устанавливается в Arduino IDE. Для каждой версии ESP свой плагин.

Для установки в папке программы Arduino создайте папку tools. Если ее нет и скопируйте туда содержимое вот из этого архива.
Должно получиться вот так.

Arduino создайте папку tools

Одна папка для работы с файловой системой ESP32, вторая с ESP8266 .
Затем необходимо перезагружаем Arduino IDE.

перезагружаем Arduino IDE

После чего перейдем в пункт меню Инструменты. И у нас должны появиться еще 2 пункта меню. Если у вас нет данных пунктов в меню, попробуйте обновить Arduino IDE до более новой версии.

папке со скетчем создать папку data

Чтобы загрузить файлы, необходимо в папке со скетчем создать папку data. И поместить туда нужные файлы.
Я бы порекомендовал взять пример для проверки вот от сюда. Здесь реализована работа с файловой системой и плюс визуальный редактор.
Причем скетч адоптирован для обоих плат и для 32 и для 8266.

Скачиваем архив. Заходим в папку FSBrowser. Открываем файл FSBrowser.ino. Ставим все необходимые библиотеки. Они ставятся из менеджера библиотек.
Прошиваем плату и загружаем файлы для этого наживаем на загрузчик.

Прошиваем плату и загружаем файлы для этого наживаем на загрузчик.

Внимание! При прошивке и загрузке файлов на некоторых версиях ESP32 нужно нажимать кнопку boot, которая расположена на плате. Это нужно сделать когда начинается прошивка. Удерживаем ее около 3 сек. После чего побегут проценты загрузки.

После удачной загрузки заходим в монитор порта и смотри наш Ip адрес.

заходим в монитор порта

едактор и список всех загруженных файлов

Возможности данного редактора можно расширить. Если кому интересно пишите на форум. Подскажу или напишу статью, что нужно для этого сделать.

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

Платы ESP 32 оснащены микроконтроллером ESP32-WROOM-32 с интерфейсом Wi-Fi, подключаются к компьютеру через WiFi или USB порт.

О том как установить «Arduino IDE» можно прочитать в статье Wiki - Установка среды разработки Arduino IDE для Windows .

Настройка Arduino IDE:

Писать скетчи под микроконтроллер ESP32 можно в среде разработки «Arduino IDE», но перед загрузкой скетча нужно выбрать тип используемой платы из списка меню «Инструменты» > «Плата», а там по умолчанию нет плат ESP32. Вся настройка сводится к тому, что бы в этом списке меню появились эти платы.

В среде «Arduino IDE» имеется «Менеджер плат» который поможет быстро добавить интересующие платы в список. Для этого нужно выполнить следующие действия:


Откройте «Arduino IDE» и выберите пункт меню: «Файл» > «Настройки»



Запустите «Менеджер плат» выбрав пункт меню «Инструменты» > «Плата» > «Менеджер плат».


В открывшемся окне «Менеджер плат» выберите пункт «esp32 by Espressif Systems» из списка сборок и нажмите на кнопку «Установка» (при желании можно выбрать версию устанавливаемой сборки).


Дождитесь окончания установки сборки.


После успешной установки сборки, в списке, напротив её названия «esp32 by ESP32 Systems» появится фраза «INSTALLED». Закройте «Менеджер плат» нажав на кнопку «Закрыть».

На этом настройка «Arduino IDE» завершена! Теперь в списке плат есть раздел «ESP32 Arduino».

Первая программа:

Самая первая программа для любой платы под управлением микроконтроллера - это «Hello, World!» (вывод строки) или «Blink» (мигание светодиодом). Данная статья не будет исключением, загрузим скетч для мигания светодиодом.


Для работы с платами ESP 32 нужно в пункте меню «Инструменты» > «Плата» > «ESP32 Arduino» выбрать соответствующую плату. В нашем случае это будет Piranha ESP32.


Так же нужно выбрать COM-порт после подключения платы к компьютеру через USB порт. На рисунке выбран порт «COM10», но Вам нужно выбрать тот порт, который появился у Вас в списке доступных портов после подключения платы. Если после подключения платы новый порт не появился, значит не установлен драйвер для чипа CH340C ссылки на драйверы указаны в конце данной статьи.

Осталось загрузить скетч и проверить его работу.


Скетч «Blink» можно загрузить из базовых примеров Arduino в меню «Файл» > «Примеры» > «01.Basic» > «Blink» . Макрос «LED_BUILTIN» содержит номер вывода к которому подключён встроенный в Piranha ESP32 светодиод. Если Вы используете другую плату, то необходимо указать соответствующий вывод в начале скетча, например:

или выбрать плату соответствующую Вашей в пункте меню «Инструменты» > «Плата» > «ESP32 Arduino»


Нажмите левой кнопкой мыши на кнопку загрузки скетча в плату (или на клавиатуре <Ctrl> + <U>). Начнётся компиляция и загрузка двоичного кода в микроконтроллер платы.


В зависимости от конфигурации системы и используемой платы, возможно понадобится перевести плату в режим программирования. Для этого зажмите на плате одновременно RESET и BOOT, а затем отпустите RESET не отпуская BOOT. Через несколько секунд можно отпустить BOOT, начнётся загрузка кода в микроконтроллер платы.

Читайте также: