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情報の伝達ができてしまいました。
いい時代になったものです。