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 以外は任意設定です。

ここまでお読みいただき、誠にありがとうございます。SNS 等でこの記事をシェアしていただけますと、大変励みになります。どうぞよろしくお願いします。

© 2024 基礎からの IoT 入門