私の入門記録であって、入門者向け解説サイトではありません。

ESPAsyncWebServer

  • 投稿日:
  • Category:

というわけで、ESP32の非同期 Webサーバーライブラリ ESPAsyncWebServer の実験。導入手順は以下が詳しいので参考にさせてもらった。

ESP32でWebサーバーを立てよう

但しこれは ESP32自体をルーターとして動作させ、その中に Webサーバーを置く形になるので注意が必要だ(私は最初、家庭内のルーターに接続させるものと誤解していた)。また前記事ではスケッチ内で HTMLを生成していたが、今回のものは ESP32のフラッシュメモリに HTMLファイルを書き込む形となる。手順はその分増えるが、スケッチと HTMLを分離出来るのでメンテ面では楽になる。

概略手順は以下の通り
  1. ライブラリのインストール(ESPAsyncWebServer, AsyncTCP, Sketch data upload)
  2. スケッチ及び HTML類の準備
  3. ESP32にスケッチ及び HTML類を書き込み
  4. PC(又はスマホ等)を ESP32に Wi-Fi接続
  5. ブラウザで動作確認

[ スケッチ:Esp32_AsyncWebServer ]

// ESP32 を Wi-Fiルーターとして動かす
// Hello World!
#include <WiFi.h>
#include "ESPAsyncWebServer.h"
#include "SPIFFS.h"
const char ssid[] = "ESP32AP-TEST";   // ここは家庭内ルーターIDでなく任意
const char pass[] = "12345678";       // パスワードは8文字以上
const IPAddress ip(192,168,3,17);
const IPAddress gateway(192,168,1,1);  // デフォルトゲートウェイ
const IPAddress subnet(255,255,255,0);
AsyncWebServer server(80);            // ポート設定
void setup()
{
  Serial.begin(115200);
  // SPIFFSのセットアップ
  if(!SPIFFS.begin(true)){
    Serial.println("An Error has occurred while mounting SPIFFS");
    return;
  }
  WiFi.softAP(ssid, pass);           // SSIDとパスの設定
  delay(100);                        // このdelayを入れないと失敗する場合がある
  WiFi.softAPConfig(ip, ip, subnet); // IPアドレス、ゲートウェイ、サブネットマスクの設定
  IPAddress myIP = WiFi.softAPIP();  // WiFi.softAPIP()でWiFi起動
  // 各種情報を表示
  Serial.print("SSID: ");
  Serial.println(ssid);
  Serial.print("AP IP address: ");
  Serial.println(myIP);
  // GETリクエストに対するハンドラーを登録
  // rootにアクセスされた時のレスポンス
  server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send(SPIFFS, "/index.html");
  });
  // style.cssにアクセスされた時のレスポンス
  server.on("/style.css", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send(SPIFFS, "/style.css", "text/css");
  });
  // サーバースタート
  server.begin();
  Serial.println("Server start!");
}
void loop() {}

index.html、style.css は記事の通り

ESP32に書き込みが完了したら、PC(又はスマホ等)の Wi-Fi設定から上記ssid,passで接続し、ブラウザでIPアドレスのページを表示すると以下のようになる。

Image1.png

このソフトAP方式は ESP32自体をルーターに仕立てるので、自宅外で Wi-Fi環境の無い場所で運転する際などには有用と思われる。