ESP32 WifiManagerで自動接続できなかった場合の対処法

Arudino core for ESP32 上で WifiManager を使っていて、autoConnect で正しい SSIDとパスワードを設定してみても Connection Resultが WL_NO_SSID_AVAIL = 1 とSSIDが見つからないという理由で接続ができない場合がある。

次の記事によれば 、非揮発性ストレージ(NVS)の内容がおかしくなっている場合があるとのこと。NVSをクリアすることで改善する場合がある。

WiFi connection problem – NVS corrupted

クリアするプログラムは上記の記事にある通りであるが、Arduinoのスケッチ全体を示すと下記の通り。
NVS全体をクリアするので、NVSに記録されている情報が失われる。利用する前に保存しておくべき情報がNVSにないことを確認する必要がある。


[code language="C"]
#include <nvs.h>
#include <nvs_flash.h>

void clearNVS() {
int err;
err = nvs_flash_init();
Serial.print("nvs_flash_init: ");
Serial.println(err);
err = nvs_flash_erase();
Serial.print("nvs_flash_erase: ");
Serial.println(err);
}

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

void loop() {
}
[/code]

実行してエラーがなく、下記のような出力がSerialから得られればうまくクリアできている。