ESP32 с VS Code и PlatformIO: загрузка файлов в файловую систему (SPIFFS)
Узнайте, как загружать файлы в файловую систему платы ESP32 (SPIFFS) с помощью VS Code и расширения PlatformIO IDE (быстро и просто). Использование файловой системы с ESP32 может быть полезно для сохранения HTML, CSS и JavaScript файлов при создании веб-сервера, вместо того чтобы записывать всё внутри скетча Arduino.
Если вы используете 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 и создайте файлы, которые хотите загрузить, нажав на иконку New File. В данном примере мы создадим файл с именем text.txt. Вы можете создавать и загружать файлы любых других типов, например .html, .css или .js.
Напишите произвольный текст внутри этого .txt файла.
Папка data должна находиться внутри папки проекта, а файлы, которые вы хотите загрузить, должны быть внутри папки data. Иначе работать не будет.
Загрузка образа файловой системы
После создания и сохранения файла или файлов, которые вы хотите загрузить в папку data, выполните следующие шаги:
Нажмите на иконку PIO на левой боковой панели. Должны открыться задачи проекта.
Выберите env:esp32doit-devkit-v1 (название может немного отличаться в зависимости от вашей платы).
Разверните меню Platform.
Выберите Build Filesystem Image.
Наконец, нажмите Upload Filesystem Image.
Важно: для успешной загрузки образа файловой системы необходимо закрыть все последовательные соединения (Serial Monitor) с вашей платой.
Через некоторое время вы должны увидеть сообщение об успешном завершении.
Устранение неполадок
Вот некоторые типичные ошибки:
Could not open port «COMX» Access is denied
Эта ошибка означает, что у вас открыто последовательное соединение с платой в VS Code или в другой программе. Закройте все программы, которые могут использовать последовательный порт платы, и убедитесь, что вы закрыли все последовательные соединения в VS Code (нажмите на иконку корзины в консоли терминала).
Timed out waiting for packet header error
Если вы видите множество точек в окне отладки и загрузка образа файловой системы завершается неудачно, вам нужно нажать встроенную кнопку 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, и он должен вывести содержимое вашего файла.
Вы успешно загрузили файлы в файловую систему 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). Перевод на русский язык.