ESP32にSmartConfigでWiFi情報を伝える
WiFiのSSIDとパスワードをどう伝えるか問題
ESP32はWiFiに接続することができますが、ソースコードにWiFiのSSIDとパスワードを書いてしまうと、後から変更できません。
さらに、ソースコードを公開するときは、SSIDとパスワードの部分をいちいち削除しなければならず、けっこう面倒です。
以前はSDカードを使ってWiFi情報を伝える方法を紹介しましたが、これも割と手間でした。
SmartConfigとは、そんな悩みをスマホで解決する機能です。
SmartConfigとは
ESP32のSmartConfig機能は、ESP32がWiFiのアクセスポイントになることで、スマホからWiFi情報を伝えてやろうというものです。
既にESP8266のときからある機能で、スマホのアプリがあります。
使い方
ESP32側
ここでは例によって Arduino core for the ESP32 環境でのやり方を紹介します。
ここに公式のサンプルコードがあります。
SmartConfigの関数はWiFiクラスに宣言されていますので、そのまますぐに使うことができます。
#include "WiFi.h"
void setup() {
Serial.begin(115200); //< シリアルの初期化
// WiFI を AP + STA モードにする
WiFi.mode(WIFI_AP_STA);
WiFi.beginSmartConfig(); //< SmartConfigの初期化
// スマホからのアクセスを待つ
Serial.println("Waiting for SmartConfig.");
while (!WiFi.smartConfigDone()) {
delay(500);
Serial.print(".");
}
// スマホからSSIDとパスワードが送られてきた
Serial.println("SmartConfig received.");
// WiFiに接続
Serial.println("Waiting for WiFi");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
// 接続成功
Serial.println("WiFi Connected.");
}
void loop() {
}
スマホ側
アプリを起動して、WiFiのパスワードを入力するだけです。
まとめ
驚くほど簡単にWiFi情報の伝達ができてしまいました。
いい時代になったものです。