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にないことを確認する必要がある。

#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() {
}

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