2022年1月3日月曜日

PlatformIOを通してESP32でSPIFFSを使いファイルを扱う


背景

ESP32にはFlashメモリにSPIFFSという、ファイル操作が可能な領域があります。
4MBフラッシュの標準設定だと約1.5MBがSPIFFSの領域です。

調べて試してみたところ、PC上のファイルをアップロードしてESP32で利用できると分かりました。
備忘録を兼ねて使い方を記事として残します。

使ったもの

ESP32開発ボード
ESP32にプログラムを書き込めるPC
PlatformIO + VSCode

ファイルを準備

PlatformIOのプロジェクトにdataというディレクトリを作り、その中にESP32にアップロードしたいファイルを置きます。

今回はdataディレクトリの中にwebディレクトリを作り、その中にbootstrap.min.cssファイルを置きました。
[PlatformIOのプロジェクト]
|- data
|- web
|- bootstrap.min.css

data内のディレクトリ名がstaticだとエラーになってアップロードできないので注意です。

PlatformIOを利用してESP32にファイルを書き込み

ESP32をPCに接続した状態で、プロジェクトのディレクトリ内でuploadfsを指定してPlatformIOのコマンドを実行するとファイルを書き込めます。
pio run -t uploadfs

ESP32のプログラムでFPIFFSを呼び出してファイルを確認

操作例はSPIFFSのサンプルプログラムが参考になります。

下記のプログラムでファイルの一覧を10秒ごとに表示できます。
#include <Arduino.h>
#include <SPIFFS.h>

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

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

void loop() {
static unsigned long printedAt = 0;
if (millis() - printedAt > 10000UL) {
printedAt = millis();
auto root = SPIFFS.open("/");
auto file = root.openNextFile();
while (file) {
Serial.println(file.name());
file = root.openNextFile();
}
Serial.print("at ");
Serial.println(millis());
}
delay(20);
}

成功していればシリアルモニタで下記のような情報を確認できます。
/web/bootstrap.min.css
at 20464

終わり

PlatformIOを利用してESP32のSPIFFS領域にファイルを書き込み、プログラムで確認できました。

0 件のコメント :