インフォメーション

2009年02月 ブログ運用開始(玄箱,Web Diary Professional 使用)

2012年10月 ブログシステムをfreoに移行

2015年05月 サーバを「Cubieboard」に移行し運用開始

2018年10月20日 なんちゃって百葉箱(後に「な!百葉箱」と命名)の運用開始(HomeWeather)

2019年09月01日 な!百葉箱(第2版)運用開始

2023年03月04日 NOAA受信システムの運用開始

2024年06月09日 システムダウンにより新サーバにて復旧作業中(6/20現在も本Blogは更新不可)

2024年06月10日 サーバ移行開始(6/29復旧)

2025年08月13日 最後となったNOAA19が11日に運用を終了した模様(暫くゴミ画像)

2025年10月23日 「な!百葉箱」はダウン中(11/23復旧)

2025年12月01日 新居浜市受信のADS-Bを正式公開

2025年12月12日 ひまわりの画像は国立情報学研究所(NII)が提供するデジタル台風という公開データベースから取得

 

注)本ブログをスマホやタブレットで閲覧する場合はブラウザをPCモードにすると見易くなります

エントリー

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台となっているため最大数を増やすか運用で接続断をする必要がある

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

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

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

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

  • 未対応箇所

パスワード対応

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

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

昨日「な!百葉箱」で40℃を記録

昨日,当家の気象台である「な!百葉箱」で,最高気温が遂に40℃を超えた

Screenshot_2026-08-03-11-44-15-156_org.mozilla.firefox.png

強制通風筒化しているとはいえ正規の物ではないので参考気温となる

新居浜のアメダスでは最高気温37.6℃(15:00)だった

(過去一週間の最高気温)

Screenshot_2026-08-03-11-44-45-488_org.mozilla.firefox.png

「な!百葉箱」のESP8266は埃除けでカバーしたせいか50℃を超えているようだ

Screenshot_2026-08-03-11-44-15-157_org.mozilla.firefox.png

室外サーバは通気を良くした効果があり上が2~3℃下がった感じだ

Screenshot_2026-08-03-11-45-37-396_org.mozilla.firefox.png

みちびきの災害・危機管理通報サービス受信実験

スイッチサイエンスさんで「GPSシールドを使ってみちびき(QZSS)の災害・危機管理通報サービス(DC Report・DCX)を受信してみた。」という記事が公開されていて面白そうなんで試してみる

記事が出た時から気になっていて,地球上の通信はインターネットの普及で有線化されてしまったもんだから,通信(受信も)を楽しむなら地球外だなと思っていたところ,アマチュアレベルでみちびきの情報受信ができるというのは魅力があった訳である

実験といっても既に実装方法が公開されているので,そのまんま利用させてもらい,まずはベースとなる構成の確認となる

IMG_20260629_131422.jpg

購入したのは動作確認が取れている以下の2つ

  • ESPrR Developer C6(ESP32C6)
  • ESPrR Developer用GPSシールド(SAM-M8Q)
ハードウェア

ESP32C6は予備として使用しないでESP32C3 SuperMiniを使う

IMG_20260726_113156.jpg

SAM-M8Qとの接続はSerialだけで良いようなのでESP32C3のSerial1と繋ぐ

SAM-M8QのTXD,RXDはシールド上で切替可能となっており,初期はIO4,IO5に接続されていることに注意

ソフトウェア

必要ライブラリは以下の3つでIDEからインストール

  • SparkFun_u-blox_GNSS_Arduino_Library:V2を使う(ライブラリ名通りで良い)
  • QZQSM:修正する必要はない
  • DCX

メインスケッチは「espr_dev_qzss_drc_drx_decode.ino」をgithubからDLして一部修正

#ifdef ARDUINO_ESP32C6_DEV
const int rxPin = 15;
const int txPin = 21;
#elif ARDUINO_ESP32C3_DEV //Super Mini
const int rxPin = 20;
const int txPin = 21;
#elif ARDUINO_ESP32S3_DEV
const int rxPin = 40;
const int txPin = 35;
#else // ESP32_DEV
const int rxPin = 19;
const int txPin = 21;
#endif
テスト

ビルドでESP32は対応してない旨のメッセージが表示されるが問題なし

ところが最初は動作しなかった(以下がデバッグメッセージ込みの出力)

createFileBuffer: Warning. fileBufferSize is zero. Data logging is not possible.

Sending: CLS:CFG ID:0x0 Len: 0x1 Payload: 1
sendCommand: Waiting for ACK response
waitForACKResponse: TIMEOUT after 1100 msec.
begin: isConnected - second attempt

Sending: CLS:CFG ID:0x0 Len: 0x1 Payload: 1
sendCommand: Waiting for ACK response
waitForACKResponse: TIMEOUT after 1100 msec.
begin: isConnected - third attempt

Sending: CLS:CFG ID:0x0 Len: 0x1 Payload: 1
sendCommand: Waiting for ACK response
waitForACKResponse: TIMEOUT after 1100 msec.
createFileBuffer: Warning. fileBufferSize is zero. Data logging is not possible.

Sending: CLS:CFG ID:0x0 Len: 0x1 Payload: 1
sendCommand: Waiting for ACK response
waitForACKResponse: TIMEOUT after 1100 msec.
begin: isConnected - second attempt

Sending: CLS:CFG ID:0x0 Len: 0x1 Payload: 1
sendCommand: Waiting for ACK response
waitForACKResponse: TIMEOUT after 1100 msec.
begin: isConnected - third attempt

Sending: CLS:CFG ID:0x0 Len: 0x1 Payload: 1
sendCommand: Waiting for ACK response
waitForACKResponse: TIMEOUT after 1100 msec.
u-blox GNSS not detected. Please check wiring. Freezing.

これをSAM-M8Qとの通信であるSerial1の問題だと考え調査

IMG_20260726_125559.jpg

ESP32C3のSerial1テスト(tx:20,rx:21)は問題なし(後で判ったが確認したのは送信だけだったのが失敗)

IMG_20260726_130455.jpg

SAM-M8Qのシリアル出力

IMG_20260726_130507.jpg

こちらも問題なしと思っていて実際は出力ピンを見間違えていた

問題点

実は問題が2点あり解決まで時間が掛かることになる

①SAM-M8Qのシリアル入出力のピンが反対

シールドにTx,Rxと記載されているが動作は反対になっていてRxが出力(どうやら相手側を記載しているようだ)

②ESP32C3 SuperMiniはSerial1のピンの割り当てに制限があり,受信の割り当てピンは20でないと動作しない

これはSAM-M8Qの出力をESP32C3のSerial1(SAM-M8Qから受信)で受信後,Serialで出力したところ何も出力されなかったので,ネットで調べたらSuperMiniでは基板がコンパクトな影響もあって受信が安定していないことが判明

SuperMiniのピンレイアウト図ではRxは21と記載されている(これも接続相手側を示しているならややこしいことだ)

修正点

Rx,Tx指定ピンの変更(上記のスケッチでは修正されている),配線は結果的に修正なしでOKとなる

まずは受信はできるようになったので基本構成は良しで,災害・危機管理通報試験日に情報取得テストを実施する予定

(追加)
情報取得確認

窓際で受信

IMG_20260729_091852.jpg

30秒位してQZSSを受信

IMG_20260729_091824.jpg

IMG_20260729_091831.jpg

IMG_20260729_091836.jpg

受信情報はタブレットのUSB接続にて「Serial USB Terminal」を使い表示(当然スマホでも可)

熊本地震では通信設備の破損などによりスマホが使用できなくなったようだが,みちびきからの受信は可能なので非常時において少ない情報ではあるが参考にはなるだろう

今後の展開

ポータブルならハードケースを作成してスマホのUSB接続で利用可能

固定運用ならDBサーバに送信してWebから参照するようにすれば良い(トップページに最新情報を表示するのも良さそう)

DAISOの遮熱シェードを使ってみた

DAISOの遮熱シェードの効果をYouTubeで知って半信半疑ではあるが使ってみた

IMG_20260725_091124.jpg

感想としては,日中の最高気温時の暑さの軽減は厳しいが,気温が上がりきる前の熱量は抑えることができるようだ

具体的にはクーラーを付けないとヤバいかなっと思う時刻を1~2時間遅らせることができる

IMG_20260725_092321.jpgIMG_20260725_092346.jpgIMG_20260725_092422.jpg

外側に設置のところ左の窓は出窓になっているのでカーテンレールに設置(なので熱を逃がすため窓を少し開けている)

シェードなので外も見え風も通る

室外サーバの冷却に使えないか試す

毎年夏になると室外サーバのケース内温度が気になる

Screenshot_2026-07-14-07-48-32-743_org.mozilla.firefox.jpg

毎日45℃位まで上昇(7/6までは台風の影響で雨天)

リポバッテリーの仕様が55℃までで余裕が10℃未満になっているので,せめて50℃は超えないようにさせないとならない

直射日光を当てないようアルミの反射板とスダレを使っていたのを,試しにDAISOの遮熱シェードに変更してみた

IMG_20260725_092512.jpg

結果は変わらず・・・

改めて考えてみると,もともとはケースを影にして熱を与えず風通しを良くするようにスダレを立てて置いていたのが,雨風で被せたままになってしまっていることに気付く

そこで,手すりの反対側に取り外しできるように突っ張り棒を付け,防水マットで日よけを設置してみた

IMG_20260725_125516.jpg

これでもケース内温度の変化は無いので,ケース台を高くして更に風通りを良くすることも実施予定

また影となる場所を広く作れたので追加策としてペルチェによるクーラーも考えてみようと思う

(2026.7.26 気温35℃時点)

20260726.png

(2026.7.27 追加)

ケース下を空けて風通しを良くするためレンガ(半レンガ4個)を購入

IMG_20260727_110423.jpg

IMG_20260727_111015.jpg

良さそうな高さになったかな

ページ移動

ユーティリティ

検索

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

過去ログ

Feed