ESP8266 をアクセスポイントとして Web サーバーを実装
前回の記事ではアンドロイド端末をホットスポット (Wifi のアクセスポイント) として、 ESP8266 をそのネットワークに参加させました。
以前の記事はこちら → 「ESP8266 で Web サーバーを実装」
このときの問題点は、ウェブサーバー (すなわち ESP8266) の IP アドレスが自動割り当てに依存して変わるので、クライアントからどこにアクセスすればよいか分からない、ということでした。
前回は Wifi に接続した後に、シリアルモニターに IP アドレスを出力しました。
残念ながらこの方法は、シリアルモニターは実際は動作環境で使えないので実用的ではありません。
既存の Wifi に参加するということ自体は問題ないですが、IP アドレスを知る方法として不適切ですね。
ここでは、その問題点を解決する方法の一つとして、ESP8266 をアクセスポイントとし明示的に IP アドレスを割り当てます。 これによって、そのネットワークに参加する側は既に ESP8266 の IP アドレスは分かります。
尚、ここでは ESP-12 Development Board を利用しました。
アクセスポイントの開始とウェブサーバーの実装
ウェブサーバーの HTTP ハンドラの設定等は 「ESP8266 (NodeMCU) で Web サーバーを実装」 と同様ですので、 そちらをみてください。
ここではアクセスポイントの開始方法に焦点をあてましょう。
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#define WIFI_SSID "..."
#define WIFI_PWD "..."
ESP8266WebServer server( 80 );
IPAddress ip( 192, 168, 10, 1 );
IPAddress subnet( 255, 255, 255, 0 );
void setup() {
WiFi.mode(WIFI_AP);
WiFi.softAPConfig(ip, ip, subnet);
WiFi.softAP(WIFI_SSID, WIFI_PWD);
server.on("/", [](){
server.send(
200,
"text/html",
"<h1>Hello! Web Server!</h1>");
});
server.begin();
}
void loop() {
server.handleClient();
}
WIFI_SSID にこれから作成するアクセスポイントの識別名を、WIFI_PWD にパスワードを設定してください。
ここではアクセスポイントの IP アドレスを 192.168.10.1 (サブネットマスク 255.255.255.0) としています。
アクセスポイントを開始するにはまず、WiFi クラスのモードを WIFI_AP にします。
次に softAPconfig メソッドでアクセスポイントの設定を行います。 第一引数から順にローカル IP アドレス、ゲートウェイ IP アドレス、サブネットマスクです。
softAP メソッドでアクセスポイントを有効化します。 引数は第一引数から順に SSID、パスフレーズ、チャネル、SSID ブロードキャストの無効化 (1 または 0) です。SSID 以外は任意設定です。