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に記録されるので、次回からは直ちにアクセスポイントに接続します。
続く
...