エントリー

ESP32のAP+Web機能を試す

ESP32でネットワークに接続する場合,通常は無線LANのAPに接続するSTA(ステーションモード)を使うが,ESP32をAP(アクセスポイントモード)にしてAPにすることもできる

しかしESP32をAPにして接続してもネットワークにならず,大抵はESP32に接続されたセンサ類の情報をHTTPなどで取り出すようなことになる

そこでESP32をAP+Webサーバにして,性能・問題点など評価のためスマホから接続できれば利用できる独立型審査システムを作ってみた

審査システム

審査システムは何かというと,何らかの発表大会で審査員が審査して点数を付ける簡単な物で,こういった発表の場はそのたびに都合のよい場所で開催される場合が多く,大抵は審査用紙を利用することとなり手間がかかるらしいのを電子化するという試みである

予算があれば簡単に構築できるところを,ESP32とスマホで安価に完結させてやろうとしている(実際の運用ではPC1台は必要かな)

ESP32

コンパクトな「ESP32-C3 Super Mini」は技適マークがないので,技適を取得している「ESP32-WROOM」を使う

IMG_20260813_114536.jpg

後に「Seed studio ESP32-C6」(左)を購入して使用

IMG_20260817_193526.jpg

AP+Web化

まずはESP32のAP化となるが,先駆者の情報が多いので特に問題なく動作した

(例:AP)
#include <WiFi.h>
・・・
static const IPAddress apIP(192, 168, 201, 1);
static const IPAddress apMASK(255, 255, 255, 0);
static const char *WIFIMGR_ssid = "WebGradingSystem";
static const char *WIFIMGR_pass = "xxxxxxxx";
・・・
void setup() {
・・・
WiFi.mode(WIFI_AP);
WiFi.softAP(WIFIMGR_ssid);  //パスワード無
WiFi.softAPConfig(apIP, apIP, apMASK);
・・・
}

次にWeb化では,URLを指定するのにmDNSを利用する手もあるが,接続先が1つしかないのでDNSによる名前解決は全てESP32を返すようにするとAP接続でESP32のトップページが開くので便利になるようだ

(例:Web)
#include <WebServer.h>
・・・
static WebServer webServer(80);
・・・
void setup() {
・・・
webServer.on("/", top);
webServer.onNotFound(top);
webServer.begin();
 ・・・
}

(例:DNS)
#include <DNSServer.h>
・・・
static DNSServer dnsServer;
・・・
void setup() {
・・・
dnsServer.setErrorReplyCode(DNSReplyCode::NoError);
dnsServer.start(53, "*", apIP);
 ・・・
}

(例:mDNS)
void setup() {
・・・
if(!MDNS.begin("esp32")) {
    //回復不能エラーのため停止
    for(;;);    //halt
}
MDNS.addService("http", "tcp", 80);  //サービス登録
・・・
}
画面(参考)

(AP選択)

Screenshot_20260829-105526.png

(TOP画面)→(審査員選択)

Screenshot_20260829-105543.pngScreenshot_20260829-105557.png

(発表者を選択して審査)

Screenshot_20260829-105610.pngScreenshot_20260829-105620.pngScreenshot_20260829-105629.png

(管理者)

Screenshot_20260829-105644.pngScreenshot_20260829-105651.png

(集計)(審査員と発表者の名簿アップロード)(審査初期化)

Screenshot_20260829-105658.pngScreenshot_20260829-105708.pngScreenshot_20260829-105722.png

(デバッグでファイル確認)

Screenshot_20260829-105730.pngScreenshot_20260829-105740.pngScreenshot_20260829-105748.png

システム構成

IMG_20260829_151118.jpg

  • ESP32-C6
  • モバイルバッテリ(省電力なのでスマホのUSBからでも可)
  • 手持ちのスマホ
  • 管理者用にPC(スマホでも可)
スケッチ(参考)

AP-directWeb.txt(SJIS,LF,TAB4)

評価
  • ESP32ではやや厳しい性能も,デュアルコアのC6だとそこそこ使える
  • Web画面がほとんどダイナミック生成になるため大変(LittleFSを活用,もしくはツールが欲しいところだ)
  • メモリが厳しいかと思ったがdataは余裕があった
改善点
  • APの接続数(問題点)

softAPの接続数の最大数は4台となっているため最大数を増やすか運用で接続断をする必要がある

softAP(ssid, password, channel, ssid_hidden, CLIENT_MAX)

channel: 1(def), 6, 11のいずれかが良い
ssid_hidden: 0(公開), 1(非公開)
CLIENT_MAX: 4(def)変更箇所

ハード的にESP32は10台程度,ESP32C6で14台にできることが実証されているようだ

最大数が4台になっているのは性能面の問題があるためのようなので確認が必要

  • csvファイルのコード変換

csvはSJISなのでダウンロードで変換する必要がある

  • ケース

使うなら基板むき出しでなくケースが必要

しかしPCのUSB-Cに刺して使うケースの場合はどうか

  • ダウンロードかSDか

データのやりとりをSDカード(マイクロになる)で行った方が判り易く扱い易いかどうか

  • 未対応箇所

パスワード対応

点数指定を10点と5点に切替できるようにする(当初5点で設計しトグルしてあった)

cssを外部ファイル化(LittleFSにおく)してデザイン変更可能にする

ページ移動

コメント

  • コメントはまだありません。

コメント登録

  • コメントを入力してください。
登録フォーム
名前(ニックネーム)
メールアドレス(必須ではありません)
URL(必須ではありません)
コメント
閲覧制限
投稿キー(スパム対策に、投稿キー を半角で入力してください。)

ユーティリティ

検索

エントリー検索フォーム
キーワード

過去ログ

Feed