ESP32でSPIFFS領域に保存する方法【M5StickC PLUS】
この記事では、M5StickC PLUSでSPIFFS領域にデータを保存する方法を解説します。SPIFFSとは「SPI Flash File System」の略で、ESP32のFlashメモリです。 ですので、本記事で紹介する内容はESP32でも同じく使えます。SPIFFSの容量はあまり多くありませんが、軽いログファイルなら十分でしょう。M5StickC PLUSには、M5StackのようなSDカードスロットがありませんのでSPIFFSを有効活用していきましょう。 ところで、M5StickCはArduino互換機であるESP32をベースとしたM5Stackシリーズ製品のひとつです。バッテリーやLCD、ボタンなどがパッケージングされており、プロトタイピングだけでなく実用的なモバイル端末としておすすめなArduinoです。M5StickC PLUSの使い方は M5StickC PLUSでArduinoをはじめよう! をご覧ください。
▼ 半導体不足のため入手困難な場合は、ひとつ前のモデルのM5StickCも選択に入れてみてください。
M5StickC PLUSのSPIFFSについて
M5StickC PLUSのSPIFFS(SPI Flash File System)について詳しく解説します。 M5StickC PLUSでのSPIFFSの保存容量は、デフォルトで1.5MBのようです。2MBまで拡張する設定もあるようですが今回はやりません。 こちらのESP32のサンプルプログラムを参考に、SPIFFSのテストプログラムを書いてみました。 arduino-esp32/SPIFFS_Test.inoatmaster·espressif/arduino-esp32·GitHub
SPIFFSのテストプログラム
#include <M5StickCPlus.h>
#include "FS.h"
#include "SPIFFS.h"
void readFile(fs::FS &fs, const char * path){
Serial.printf("Reading file: %s\r\n", path);
File file = fs.open(path);
if(!file || file.isDirectory()){
Serial.println("- failed to open file for reading");
return;
}
Serial.println("- read from file:");
while(file.available()){
Serial.write(file.read());
}
file.close();
}
void resetFile(const char * path) {
SPIFFS.remove(path);
File file = SPIFFS.open(path, "w");
if(!file){
Serial.println("- failed to open file for appending");
return;
}
if(file.print("")){
Serial.println("- file initialised");
} else {
Serial.println("- write failed");
}
file.close();
}
const char * FILE_PATH = "/log.txt";
void setup() {
M5.begin();
M5.Axp.ScreenBreath(10);
M5.Lcd.setRotation(3);
if(!SPIFFS.begin(true)){
Serial.println("SPIFFS Mount Failed");
return;
}
resetFile(FILE_PATH);
}
int count = 0;
void loop() {
M5.Lcd.fillScreen(BLACK);
File file = SPIFFS.open(FILE_PATH, "a");
if(!file){
Serial.println("- failed to open file for appending");
return;
}
if(!file.println(count)){
Serial.println("- append failed");
}
count++;
Serial.print("File size: ");
Serial.println(file.size());
file.close();
readFile(SPIFFS, FILE_PATH);
delay(1000);
}
カウントアップされた数字がファイルに追加されましたでしょうか?SPIFFSも一般的なファイルの扱い同じ形で操作できるので結構簡単ですね。 ただし、書き込みが遅いようなので、高速なサンプリングのログの場合には注意が必要です。