ESP32 с VS Code и PlatformIO: загрузка файлов в файловую систему (SPIFFS)

Узнайте, как загружать файлы в файловую систему платы ESP32 (SPIFFS) с помощью VS Code и расширения PlatformIO IDE (быстро и просто). Использование файловой системы с ESP32 может быть полезно для сохранения HTML, CSS и JavaScript файлов при создании веб-сервера, вместо того чтобы записывать всё внутри скетча Arduino.

ESP32 с VS Code и PlatformIO: загрузка файлов в файловую систему SPIFFS

Если вы используете Arduino IDE, следуйте этому руководству: Install ESP32 Filesystem Uploader in Arduino IDE.

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

ESP32 содержит файловую систему Serial Peripheral Interface Flash File System (SPIFFS). SPIFFS — это лёгкая файловая система, созданная для микроконтроллеров с флеш-чипом, подключённым по шине SPI, таким как флеш-память ESP32.

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

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

  • Создания конфигурационных файлов с настройками;

  • Постоянного сохранения данных;

  • Создания файлов для хранения небольших объёмов данных вместо использования microSD-карты;

  • Сохранения HTML, CSS и JavaScript файлов для создания веб-сервера;

  • Сохранения изображений, графиков и иконок;

  • И многого другого.

Загрузка файлов в ESP32 SPIFFS

Файлы, которые вы хотите загрузить в файловую систему ESP32, должны быть помещены в папку с именем data внутри папки проекта. Чтобы вы поняли, как всё работает, мы загрузим .txt файл с произвольным текстом. Вы можете загружать файлы любых других типов.

Если вы не знакомы с VS Code + PlatformIO, сначала следуйте этому руководству:

Создание папки data

Создайте папку с именем data внутри папки вашего проекта. Это можно сделать в VS Code.

С помощью мыши выберите папку проекта, с которой вы работаете. Нажмите на иконку New Folder, чтобы создать новую папку.

Эта новая папка должна называться data, иначе работать не будет.

Создание папки data в VS Code PlatformIO ESP32

Затем выберите только что созданную папку data и создайте файлы, которые хотите загрузить, нажав на иконку New File. В данном примере мы создадим файл с именем text.txt. Вы можете создавать и загружать файлы любых других типов, например .html, .css или .js.

Создание файлов в папке data в VS Code с PlatformIO ESP32

Напишите произвольный текст внутри этого .txt файла.

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

Создание текстового файла в VS Code PlatformIO ESP32

Загрузка образа файловой системы

После создания и сохранения файла или файлов, которые вы хотите загрузить в папку data, выполните следующие шаги:

  1. Нажмите на иконку PIO на левой боковой панели. Должны открыться задачи проекта.

  2. Выберите env:esp32doit-devkit-v1 (название может немного отличаться в зависимости от вашей платы).

  3. Разверните меню Platform.

  4. Выберите Build Filesystem Image.

  5. Наконец, нажмите Upload Filesystem Image.

Загрузка образа файловой системы VS Code PlatformIO ESP32

Важно: для успешной загрузки образа файловой системы необходимо закрыть все последовательные соединения (Serial Monitor) с вашей платой.

Через некоторое время вы должны увидеть сообщение об успешном завершении.

Успешная загрузка образа файловой системы ESP32 VS Code PlatformIO

Устранение неполадок

Вот некоторые типичные ошибки:

Could not open port «COMX» Access is denied

Ошибка Access Denied при загрузке файловой системы ESP32 VS Code PlatformIO

Эта ошибка означает, что у вас открыто последовательное соединение с платой в VS Code или в другой программе. Закройте все программы, которые могут использовать последовательный порт платы, и убедитесь, что вы закрыли все последовательные соединения в VS Code (нажмите на иконку корзины в консоли терминала).

VS Code PlatformIO закрытие окна терминала

Timed out waiting for packet header error

Ошибка Timed out waiting for packet header VS Code PlatformIO

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

Чтобы решить эту проблему навсегда, прочитайте следующую статью:

Тестирование

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

/*********
  Rui Santos
  Complete project details at https://RandomNerdTutorials.com/esp32-vs-code-platformio-spiffs/
*********/

#include <Arduino.h>
#include "SPIFFS.h"

void setup() {
  Serial.begin(9600);

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

  File file = SPIFFS.open("/text.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();
}

void loop() {

}

Посмотреть исходный код

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

File file = SPIFFS.open("/text.txt");

Откройте Serial Monitor, и он должен вывести содержимое вашего файла.

Чтение содержимого файла SPIFFS ESP32 VS Code PlatformIO

Вы успешно загрузили файлы в файловую систему ESP32 (SPIFFS) с помощью VS Code + PlatformIO.

Заключение

В этом руководстве вы узнали, как загружать файлы в файловую систему ESP32 (SPIFFS) с помощью VS Code + PlatformIO. Это быстро и просто.

Это может быть особенно полезно для загрузки HTML, CSS и JavaScript файлов при создании проектов веб-серверов с платами ESP32.

У нас есть аналогичное руководство для ESP8266 NodeMCU: ESP8266 NodeMCU with VS Code and PlatformIO: Upload Files to Filesystem (LittleFS)

Узнайте больше об ESP32 с нашими ресурсами:

Примечание

Источник: Random Nerd Tutorials - ESP32 with VS Code and PlatformIO: Upload Files to Filesystem (SPIFFS). Перевод на русский язык.