AP?STA?
ESP8266のモードの話
普段、ESP8266はSTAモードで使っているはず。知らず知らずのうちに。
WiFi.mode(WIFI_STA);
Wi-Fi接続する際に、こういうコードをおまじないのように書いているはず。これがSTAモード。ESP8266がいわゆるWi-Fiの子機(ステーション、STA)になって動作するわけです。
AP+STAモードとは?
言うまでもないですが、STAと振る舞いながら、EPS8266はAP(アクセスポイント、いわゆるWi-Fiの親機)としても振る舞うモード。何に使うのかは別として、簡単にコーディングできます。
#include <ESP8266WiFi.h> #define AP_SSID "xxxx" #define AP_PW "yyyy" #define SOFTAP_SSID "pokio" #define SOFTAP_PW "pokipokio" void setup() { Serial.begin(115200); Serial.println(""); // AP+STAモードの設定 WiFi.mode(WIFI_AP_STA); // APとして振る舞うためのSSIDとPW情報 WiFi.softAP(SOFTAP_SSID, SOFTAP_PW); // STAとして振る舞うための接続先APのSSIDとPW情報 WiFi.begin(AP_SSID, AP_PW); // APへの接続完了待ち while (WiFi.status() != WL_CONNECTED) { delay(100); Serial.print(". "); } Serial.println("connected!"); } void loop() { // do nothing }
ポイントは2点。
WiFi.mode(WIFI_AP_STA);
でAP+STAモードを指定WiFi.softAP(SOFTAP_SSID, SOFTAP_PW);
でAPとして振る舞うの情報を設定
あとはSTAモードと全く同じ。ね、簡単。
実際に動かしてみる
シリアルモニターには接続完了の表示が。
Macのアクセスポイント一覧には pokio
の表示が!AP+STAでちゃんとワークしてそうです。
何に使うのか?
AMAZON DASH BUTTONのハックに便利です。
なにかと面倒なAmazon Dash Buttonハック。パケットを監視するマシン・スクリプトが必要になるわけですが、そのためにRPiやパソコンを使うのは面倒というか、勿体ないわけです。そういう処理こそESP8266にやらせて、幸せになりましょう。