ソースに絡まるエスカルゴ

貧弱プログラマの外部記憶装置です。

【ESP32】設定管理ライブラリ(不揮発性領域の書き込みと読み込み)について

 今回はタイトルにある通り「ESP32での不揮発性領域」についてです。ESP32で電源を切っても保存される領域の利用方法について調べてみると、jsonファイルだったりをアップロードして云々とある方法が多かったのですが、簡単にできる方法を紹介している記事を見つけました。そこからのほぼ引用ですが、備忘録として残して起きます。


1:設定管理ライブラリの使い方
 基本的には以下のような記述でできます。

#include <Preferences.h>

Preferences preferences;

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

  // 不揮発性領域「my-app」へのアクセス開始
  // 第2引数は「trueの場合は読み込みのみ、falseの場合は書き込みOK」
  preferences.begin("my-app", false);

  // 指定したキーの値を取得する(第二引数はそのキーが存在しない場合の戻り値)
  int val = preferences.getInt("value", 0);
  Serial.print("val: ");
  Serial.println(val);

  val++;  // カウントアップ

  // 指定したキーに値を書き込む(第二引数は書き込む値)
  preferences.putInt("value", val);
  // 閉じる
  preferences.end();

  Serial.println("Restarting in 2 seconds...");
  delay(2000);

  // Restart ESP
  ESP.restart();
}

void loop() {

}

 上記のプログラムでは「my-app」というnamespaceの「value」というキーを取得してカウントアップし、再設定しています。setupの最後で再起動がかかりますが、valueの値はリセットされることなくカウントアップされつづけます。


2:Preferences.hについて
 Preferences.hはArduino core for the ESP32に含まれています。1での読み込み、書き込みに使った関数は型ごとに定義されています。

 以下がPreferences.hファイルの中身なので、ここから使う関数を選んでください。
github.com


 以上が設定管理ライブラリの使い方になります。参考資料に示した記事にも詳しい内容が書かれてあります。


・参考資料
ESP32の設定管理ライブラリの紹介 - KERI's Lab