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情報の伝達ができてしまいました。

いい時代になったものです。