ESP-IDFを使ってみる

WiFi Manager


ESP-IDF V5で動くWiFi Managerがこちらに公開されて い ます。
オリジナルのレポはこちらで すが、ESP-IDF V5に対応していません。
ESP32をステーションモードで使う場合、ルーターの情報はmenuconfigで指定してファームをリビルドするのが普通ですが、
WiFi Managerを使うと、ルーターを変えるときにもファームをリビルドする必要が無くなります。

こ ちらのデモをビルドしてみました。
初期設定を行うメニューの位置がComponent config→Wifi Manager Configurationとなっています。
WiFi Managerは最初はアクセスポイントモードとして動きます。
APモードのSSID、パスワード、IPなどを指定することができますが、特に変える必要はありません。


ファームをビルドして書き込むと、esp32の無線アクセスポイントが出現します。
デフォルトのパスワードは「esp32pwd」です。
WindowsやLinuxから、このアクセスポイントに接続すると、ブラウザーから10.10.0.1にアクセスできるようになります。
この様にルーターの一覧が表示されます。


ルーターを選ぶとルーター接続時のパスワードを指定します。


ルーターへの接続が成功するとこの様に表示されます。


OKボタンを押すと接続中のルーターを表示します。


接続中ルータの情報はNVS領域に書き込まれるので、これ以降ESP32はステーションモードで動きます。


FLASHを全て消去(idf.py erase_flash)すると、NVS領域がクリアされます。
再びビルドして実行するとアクセスポイントモードに戻ります。




Provisioningを行う公式サンプルがこ ちらに公開されています。
Provisioningとは「必要なものを提供する」というような意味ですが、ESP-IDFではWiFiアクセスのために必要な情報 (SSIDとパスワード)を
提供する機能として使われています。

このサンプルはスマートフォーンを使ってWiFiルーターの情報(SSIDとパスワード)をESP32に登録します。
このサンプルはスマートフォーンとの通信に、BLEかSoftAPのプロトコルを使用します。
こ ちらのREADMEに従って、Android/iOS用のアプリをダウンロードしておく必要が有ります。
私はAndroid用のSoftAPアプリを使いました。

ファームをビルドする前にFLASHをクリアしておく必要が有ります。
$ idf.py erase-flash

$ idf.py menuconfig

menuconfigを使って、スマートフォーンとの通信に使用するトランスポートを選択します。


ファームをビルドするとこの様なQRコードが表示されますが、日本語の環境では文字化けするのでQRコードとして認識できません。


そこで、その下に表示されているURLをコピーしてブラウザーのアドレスバーにペーストします。


ブラウザーにQRコードが表示されます。


スマートフォーンのアプリを起動して、このQRコードを読み取ります。
WiFiアクセスポイントの一覧が表示されますので、使用するアクセスポイントを選んでパスワードを入力します。
パスワードが正しいと、アクセスポイントへの接続が完了します。
アクセスポイントのSSID、パスワードはNVSに記録されるので、次回からは直ちにアクセスポイントに接続します。


続く...