Progress Log: ビルドフラグ整理と実機検証計画¶
Task Description¶
v1.8.2リリース(WiFi APIリファクタリング完了)後、プロジェクト全体のコンパイル時フラグの状態を整理し、WiFi機能導入に伴う実機検証要件を検討。
目的:
- 現在のビルドフラグ一覧化(ENABLE_WIFI、STREAM_FORMAT、ENABLE_BME280等)
- フラグ間の相互作用を把握
- WiFi有効時の実機検証が必要な項目を特定
- 本番デプロイ前に実施すべきハードウェアテスト計画を策定
現状のビルドフラグ環境¶
実装済みフラグ一覧¶
WiFi関連:
ENABLE_WIFI=0|1- WiFi APモード+埋め込みWeb UI(v1.8.0追加、約150-200KB追加)
データストリーム形式(相互排他):
STREAM_FORMAT=0- SSV(スペース区切り)- デフォルト、本番用STREAM_FORMAT=1- TSV(タブ区切り)STREAM_FORMAT=2- CSV(カンマ区切り+ヘッダ)STREAM_FORMAT=3- JSONL(JSON Lines形式)
センサデータ選択:
ENABLE_BME280=0|1- 環境センサ(温度・気圧・湿度)の含有ENABLE_TIMESTAMP=0|1- uptime_ms、duration_usフィールド含有ENABLE_GPIO_ABSTRACTION=0|1- GPIO HAL API(v1.6.8+)vs直接レジスタアクセス
通信プロトコル選択:
ENABLE_TEXT_PROTOCOL=0|1- テキストコマンド vs バイナリプロトコル(相互排他)
検出・デバッグ:
DEBUG_DETECTION_MODE=0|1- 定期モード(ベンチ用)vs 通常検出
その他メモリ関連:
DETECT_POLL_COUNT- 検出周期あたりのGPIOポーリング数(デフォルト100)
v1.8.2での4つのビルドプロファイル¶
esp32dev-release:
- リリースタイプ:本番用(-O2最適化)
- WiFi:無効
- テキストコマンド:無効
- 検出モード:通常
- フラッシュ使用率:22.6%(925KB/4MB)
- 用途:フィールド展開
esp32dev-debug:
- リリースタイプ:デバッグ用(-Ogシンボル付き)
- WiFi:無効
- テキストコマンド:無効
- 検出モード:通常
- フラッシュ使用率:22.9%
- 用途:本番トラブルシューティング
esp32dev-dev:
- リリースタイプ:開発用(-O2最適化)
- WiFi:有効
- テキストコマンド:有効
- 検出モード:定期モード
- フラッシュ使用率:25%
- 用途:通常開発
esp32dev-wifi:
- リリースタイプ:開発用(-O2最適化)
- WiFi:有効
- テキストコマンド:有効
- 検出モード:定期モード
- フラッシュ使用率:26.8%(1093KB/4MB)
- 用途:WiFi機能フォーカス開発
メモリ使用率¶
- ベースライン(esp32dev-release):925KB(22.6%)
- WiFi追加分:約168KB(4.2%)
- 合計(esp32dev-wifi):約1093KB(26.8%)
- 残り容量:73.2% ✓ 十分な余裕あり
フラグ組み合わせと検証状態¶
v1.8.2で検証済みの組み合わせ¶
✅ 確認済みビルド構成:
- esp32dev-release - STREAM_FORMAT=0、ENABLE_BME280=1、ENABLE_TIMESTAMP=0、ENABLE_WIFI=0
- esp32dev-debug - releaseと同じ、デバッグシンボル付き
- esp32dev-dev - ENABLE_TEXT_PROTOCOL=1、DEBUG_DETECTION_MODE=1、ENABLE_TIMESTAMP=1
- esp32dev-wifi - ENABLE_WIFI=1、ENABLE_TEXT_PROTOCOL=1、STREAM_FORMAT=3(JSONL)
検証が必要な未テスト組み合わせ¶
🔄 実機検証が必要な組み合わせ:
WiFi+通常検出:
- ENABLE_WIFI=1 + 通常検出モード - WiFiが宇宙線検出を邪魔しないか
- ENABLE_WIFI=1 + ENABLE_GPIO_ABSTRACTION=1 - 抽象化層の重複による影響
データフォーマット組み合わせ:
- STREAM_FORMAT=1,2,3 + ENABLE_TIMESTAMP=1 - TSV/CSV/JSONLにタイムスタンプ付き
- STREAM_FORMAT=3(JSONL)全フィールド - ArduinoJsonのメモリ使用量
環境センサ+WiFi:
- ENABLE_WIFI=1 + ENABLE_BME280=0 - WiFiのみ(サイズ最適化)
- ENABLE_WIFI=1 + ENABLE_BME280=1 - フルセンサスイート(現在のesp32dev-wifi)
実装必要なハードウェア検証項目¶
2025-11-22-wifi-evaluation.mdの分析に基づく¶
WiFiハードウェア導入時の3つの主要リスク:
1. 宇宙線検出への電磁干渉(EMI/RF) ⚠️ 最優先¶
リスク内容:
- WiFi電波(2.4GHz)が以下に誘導ノイズを引き起こす可能性
- ADC読み値(GPIO32)への影響
- GPIO検出入力(GPIO12、GPIO19、GPIO27)への影響
- 電源カップリング経由の影響
必要なテスト内容:
- 基準値測定(WiFi OFF時)
- 各検出ピンで100個の連続サンプル取得
- ノイズフロアと標準偏差を計算
-
1分間のADC読み値記録
-
WiFi有効時の測定
- WiFi AP常時ブロードキャスト中に同じ測定実施
- ベースライン比較でSNR悪化度を評価
-
受入基準:ΔSNR < 5% またはノイズ増加 < 2σ
-
WiFi通信中の測定
- ブラウザから継続的なAPI呼び出し(1回/秒)
- スレッショルド値を繰り返し測定
- データ破損や誤検出の有無確認
2. 電源供給の安定性 ⚠️ 最優先¶
リスク内容:
- WiFiスイッチング電流(50-150mAのピーク)による
- VCC低下(sag)がADC精度に影響
- グラウンドバウンスがGPIOロジックレベルに影響
必要なテスト内容:
- 電源レール測定(WiFi ON vs OFF)
- オシロスコープでVCC波紋を測定
- 波紋の大きさが±100mV以内か確認
-
ESP32データシート推奨値との比較
-
WiFi負荷下でのADC安定性
- GPIO32(ADC)の読み値をWiFi活動前後で記録
- WiFi送信とADCノイズの相関確認
- 目標:ADC読み値の分散 < 50 LSB
3. ファームウェアサイズとメモリ制約 ⚠️ 中優先¶
リスク内容:
- 未テストのフラグ組み合わせがメモリ上限を超える可能性
必要なテスト内容:
- 全フラグ組み合わせのビルドサイズ監査
- 各フラグ有効時のバイナリサイズ測定
-
受入基準:全フラッシュ < 80%(3.2MB)
-
実行時メモリプロファイリング
- WiFi操作中のピークヒープ使用量
- 長時間運用時のメモリリーク確認
- 目標:RAM < 70%(224KB以下)
テスト計画と実機検証フロー¶
フェーズ1:オフラインビルド検証(2025-11-23~24)¶
目標:すべてのフラグ組み合わせが正常にコンパイルできることを確認
テスト対象:
- ✓ esp32dev-release(ベースライン、既に確認済み)
- ✓ esp32dev-dev(既に確認済み)
- ✓ esp32dev-debug(既に確認済み)
- ✓ esp32dev-wifi(既に確認済み)
フラグオーバーライドテスト:
- STREAM_FORMAT=1(TSV)+ ENABLE_TIMESTAMP=1
- STREAM_FORMAT=2(CSV)+ ENABLE_TIMESTAMP=1
- STREAM_FORMAT=3(JSONL)+ ENABLE_TIMESTAMP=1
- ENABLE_WIFI=1 + ENABLE_GPIO_ABSTRACTION=1
- ENABLE_WIFI=1 + ENABLE_BME280=0(最小WiFi構成)
成功基準:
- すべてのビルドがエラーなくコンパイル
- 全組み合わせでフラッシュ使用率 < 80%
- バイナリサイズが想定範囲内
フェーズ2:実機検証 - 検出性能(2025-11-25~27)¶
必要な実験機器:
- OSECHIプロトタイプ(完全なセンサスイート搭載ESP32開発ボード)
- オシロスコープまたはUSBロジックアナライザ
- 宇宙線検出セットアップ(ミューオン源またはバックグラウンド)
- 電源供給(USB or ラボ用電源、電流測定可能なもの)
テストシーケンス:
- ベースライン測定(WiFi OFF)
- esp32dev-releaseをアップロード
- GPIO12、19、27から100サンプル採取(入力信号なし)
- GPIO32(ADC)を1分間継続測定
- ノイズ統計計算(平均値、σ、最小値、最大値)
-
結果記録:baseline_wifi_off.log
-
WiFi有効・待機状態
- esp32dev-wifiをアップロード
- WiFi APはブロードキャストするがクライアント接続なし
- GPIO/ADC測定を繰り返し
- ベースラインとの比較 → SNR悪化度を計算
-
結果記録:baseline_wifi_idle.log
-
WiFiアクティブ通信中
- ブラウザクライアントをWiFi APに接続
- 継続的なAPI呼び出し(1回/秒、5分間)
- WiFi通信中のGPIO/ADC測定
- 誤検出や見落とし検出の有無確認
-
結果記録:baseline_wifi_traffic.log
-
宇宙線検出テスト(ミューオン源がある場合)
- 検出ピンに信号注入
- WiFi ON vs OFF での検出信頼性を測定
- 誤検出数、見落とし数をカウント
- 受入基準:エラー率 < 1%の差
フェーズ3:電源・EMI検証(2025-11-27~28)¶
必要な実験機器:
- 電流計(ラボ用電源内蔵or インライン分流抵抗)
- オシロスコープ(最低100MHz帯域幅)
- 50Ω終端ネットワーク(RF結合分析用)
測定項目:
- 消費電力プロファイリング
- WiFi OFF:アイドル時と検出サイクル時の電流
- WiFi ON(待機):WiFi待機状態での電流
- WiFi ON(送信):HTTP応答時のピーク電流
-
タイムドメイン電流波形ログ(1ms分解能)
-
電源レールノイズ解析
- VCC波紋をPCB上3箇所で測定(多層ボード想定)
- 10kHz~10MHz範囲での共振確認
-
ESP32データシートのEMC仕様との比較
-
RF結合性検証
- 検出入力ノード周辺のRF場強度測定
- スペクトラムアナライザ利用(有れば)
- WiFi TX時の2.4GHzピーク場強度記録
フェーズ4:長期安定性テスト(2025-11-28~)¶
期間:24時間連続運用
テスト構成:
- esp32dev-wifiファームウェア、WiFi有効状態
- 定期的なブラウザAPI呼び出し(10秒毎)
- 宇宙線検出動作(バックグラウンドカウント)
- メモリリーク、クラッシュ、接続断の監視
成功基準:
- WiFi切断がない(AP初期ブロードキャスト後)
- メモリリークなし(暖機後のヒープが安定)
- 検出動作の安定性維持
- すべてのAPI応答が一貫
実機検証の成果物¶
必要なドキュメント:
- test-results/2025-11-23-build-flags.log - 全フラグ組み合わせのビルドサイズ
- test-results/2025-11-25-detection-baseline.csv - GPIO/ADC測定(WiFi OFF)
- test-results/2025-11-25-detection-wifi-idle.csv - GPIO/ADC測定(WiFi待機)
- test-results/2025-11-25-detection-wifi-traffic.csv - GPIO/ADC測定(API通信中)
- test-results/2025-11-27-power-profile.csv - 時間軸電流測定
- test-results/2025-11-27-power-noise.log - VCC波紋解析
- test-results/2025-11-28-stability-24h.log - 24時間運用ログ
分析レポート:WiFi ON vs OFF性能比較サマリー
Learnings¶
ビルドフラグアーキテクチャから学んだこと¶
現在の強み:
- モジュール型フラグシステムで機能組み合わせが容易
- platformio.ini環境ベースの設定が整理されている
- 条件付きコンパイル(#if ENABLE_X)でバイナリ肥大化を防止
識別されたギャップ:
- フラグのコンパイル影響についてコード内ドキュメント不足
- フラグ相互作用が形式的に定義されていない(例:STREAM_FORMAT + ENABLE_TIMESTAMP組み合わせ)
- ランタイム検証機構がない(例:ENABLE_BME280=0時のBME280呼び出し防止)
WiFi評価分析から得た洞察¶
重要な知見:
- EMI/RFリスクは現実的で定量化可能(2.4GHzは<100MHz検出回路に結合可能)
- 電源アーキテクチャが重要 - WiFi用と検出用で別レギュレータ推奨
- 完全埋め込みHTML(gzip圧縮)戦略は実行可能(26.8%フラッシュで十分余裕)
- ハードウェア検証は本番デプロイ前に必須 - シミュレーション代替不可
クリティカルパス項目:
- WiFiと検出サブシステム間の電源遮断
- グラウンドプレーン設計(多層PCB+スター接地)
- ESP32 WiFiラジオ周辺のRFシールド
Next Steps¶
直近(2025-11-23~24)¶
- ビルドフラグ監査
- CLAUDE.mdにビルドフラグ包括的ドキュメント追加
- 全フラグ組み合わせをビルドしてフラッシュ/RAM影響測定
-
プロジェクトドキュメントにビルドマトリクス表作成
-
ハードウェアテスト計画最終化
- プロジェクトオーナーと利用可能な機器を確認
- テストスクリプト準備(GPIO サンプリング、API呼び出し)
- 各フェーズの成功/失敗判定基準を定義
短期(2025-11-25~28)¶
- フェーズ1~3ハードウェア検証実施
- ベースライン測定(WiFi OFF)収集
- WiFi干渉テスト実行
-
電源供給安定性測定
-
ドキュメント・分析
- テストデータ解析と比較チャート生成
- 発見された問題と対策方法を文書化
- ハードウェア検証レポート作成
中期(v1.8.3以降の計画)¶
- 問題発見時の設計改善
- ノイズフロア追跡アルゴリズム実装(SNR悪化検出時)
- EMIレベルに基づく動的フィルタチューニング
-
必要に応じたWiFiラジオのパワーゲーティング
-
本番リリース判定基準
- 全フラグ組み合わせの検証と文書化完了
- ハードウェア検証完了&許容結果確認
- EMI/電源課題が対策or文書化済み
- 本番ビルド署名・リリース準備完了