Loading [MathJax]/extensions/tex2jax.js

ESP32をWi-Fiルーターのように使う

技術開発ESP32

概要

ESP32の使い方を調べると、既存のWi-Fiに接続してルーター経由で使用する記事を多く見かけます。
ただ、この使い方ではSSIDとパスワードを把握したWi-Fiルーターの近くでしか使用できず、またIPアドレスが変わった時に調べなおす必要があります。

そこでESP32をsoftAPモードで起動することでWi-Fiルーターのようにスマホ等を直接接続できるようにします。

参考サイト

実行環境

MCU:ESP32-DevKit C / 30pin (ESP-WROOM-32)
IDE:Arduino IDE 1.8.19

環境構築

詳しくは省略します。Arduino IDEにESP32のボード情報を追加するだけで、ライブラリの追加は不要です。

サンプルプログラム

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
#include <WiFi.h>
#include <WebServer.h>
#define WIFI_SSID "ESP32-softAP" /* SSID */
#define WIFI_PWD "12345678" /* パスワード */
WebServer server(80); /* ポート80で宣言 */
IPAddress ip( 192, 168, 0, 1 ); /* ESP32のIPアドレス */
IPAddress subnet( 255, 255, 255, 0 ); /* サブネットマスク */
void setup() {
/* softAPモードに設定 */
WiFi.mode(WIFI_AP);
WiFi.softAP(WIFI_SSID, WIFI_PWD);
delay(100);
WiFi.softAPConfig(ip, ip, subnet);
/* ルートにアクセスされた時の処理の設定 */
server.on("/", []() {
server.send(
200,
"text/html",
"<h1>Hello! Web Server!</h1>");
});
/* Webサーバーの起動 */
server.begin();
}
void loop() {
/* クライアントからアクセスがあった時の処理 */
server.handleClient();
}
#include <WiFi.h> #include <WebServer.h> #define WIFI_SSID "ESP32-softAP" /* SSID */ #define WIFI_PWD "12345678" /* パスワード */ WebServer server(80); /* ポート80で宣言 */ IPAddress ip( 192, 168, 0, 1 ); /* ESP32のIPアドレス */ IPAddress subnet( 255, 255, 255, 0 ); /* サブネットマスク */ void setup() { /* softAPモードに設定 */ WiFi.mode(WIFI_AP); WiFi.softAP(WIFI_SSID, WIFI_PWD); delay(100); WiFi.softAPConfig(ip, ip, subnet); /* ルートにアクセスされた時の処理の設定 */ server.on("/", []() { server.send( 200, "text/html", "<h1>Hello! Web Server!</h1>"); }); /* Webサーバーの起動 */ server.begin(); } void loop() { /* クライアントからアクセスがあった時の処理 */ server.handleClient(); }
#include <WiFi.h>
#include <WebServer.h>

#define WIFI_SSID "ESP32-softAP"    /* SSID */
#define WIFI_PWD "12345678"           /* パスワード */

WebServer server(80);                   /* ポート80で宣言 */
IPAddress ip( 192, 168, 0, 1 );         /* ESP32のIPアドレス */
IPAddress subnet( 255, 255, 255, 0 );   /* サブネットマスク */

void setup() {
  /* softAPモードに設定 */
  WiFi.mode(WIFI_AP);
  WiFi.softAP(WIFI_SSID, WIFI_PWD);
  delay(100);
  WiFi.softAPConfig(ip, ip, subnet);
  

  /* ルートにアクセスされた時の処理の設定 */
  server.on("/", []() {
    server.send(
      200,
      "text/html",
      "<h1>Hello! Web Server!</h1>");
  });

  /* Webサーバーの起動 */
  server.begin();
}

void loop() {
  /* クライアントからアクセスがあった時の処理 */
  server.handleClient();
}

パスワードなしのWi-Fiに設定した時は、WiFi.softAP()の引数をSSIDのみにします。
WiFi.softAP(WIFI_SSID, WIFI_PWD);
 → WiFi.softAP(WIFI_SSID);

動作確認

スマホやPCでWi-Fi一覧を見ると「ESP32-softAP」が増えているので、これに接続します。
パスワードはdefine WIFI_PWDで設定した文字列です。
無事に接続できたらブラウザで「http://192.168.0.1/」にアクセスします。
ブラウザに「Hello! Web Server!」と表示されれば成功です。