SERIALFLOW / ANDROID

Android端末をUSB OTG対応のESP32シリアルモニターとして活用し、起動ログの取得、検索・フィルター、コマンド送信、ESPログ解析、数値グラフ表示を行います。

AndroidでESP32をデバッグする方法

ファームウェアを書き込んだだけでは、ESP32の開発は終わりません。再起動後にWi-Fiへ接続できたか、MQTTがなぜ切断されたか、Watchdogリセットの直前に何が起きたか、センサー値が一時的に揺れたのか継続的にドリフトしているのかを確認する必要があります。

Androidスマートフォン、USB OTGアダプター、SerialFlowがあれば、現場でもESP32のシリアルログを確認できます。USBで基板へ直接接続し、流れ続けるログを検索・絞り込みながら、ファームウェアへコマンドを送信できます。

AndroidのESP32シリアルモニターとして動作するSerialFlow

書き込み後にSerialFlowでできること

ESPFlashはファームウェアを書き込むためのアプリです。SerialFlowは、そのファームウェアが実行中に何をしているかを調べる段階を担当します。

Android版SerialFlowには、次の機能があります。

  • Android USB Host/OTGを使ったUSBシリアル接続
  • ボーレート、データビット、ストップビット、パリティ、DTR、RTSの設定
  • 出力の一時停止、自動スクロール、クリア、ログの共有・エクスポート
  • 前後の一致箇所への移動、大文字小文字の区別、正規表現を使った検索
  • 複数ルールを組み合わせたログフィルター
  • テキストまたは16進データの送信と改行コードの選択
  • よく使う操作をクイックコマンドとして保存
  • ESP向けログのデコードと数値テレメトリーのグラフ表示

単に文字列を表示するだけでなく、Android上で一連のUSBシリアルデバッグを進めるためのワークスペースとして利用できます。

Androidだけで書き込みからデバッグまで進める

1. ファームウェアを書き込む

ESPFlashでファームウェアを書き込みます。手順はAndroidとUSB OTGでESP32へ書き込む方法で解説しています。

完了したら、ESPFlash側で切断するか書き込みセッションを終了してください。通常、1つのUSBシリアル機器を同時に利用できるアプリは1つだけです。SerialFlowを開く前にポートを解放します。

2. SerialFlowで基板へ接続する

データ通信に対応したUSBケーブルを使い、必要に応じてOTGアダプターを追加します。SerialFlowを開き、検出されたUSB機器を選択し、AndroidのUSBアクセス許可を承認します。

一覧に表示されない場合は、SerialFlowを開いたまま基板を接続し直してください。充電専用ケーブルではデータ通信できません。

3. シリアル設定を合わせる

設定値はファームウェアと一致させます。

  • ボーレート: ESP32では115200がよく使われますが、ファームウェア側の設定を優先します。
  • データビット: 一般的には8。
  • ストップビット: 一般的には1。
  • パリティ: 一般的にはなし。
  • DTR/RTS: 基板やリセット回路で必要な場合だけ変更します。

文字化けせず読めるログが表示されれば、主要な設定は一致しています。意味のない記号が続く場合は、ボーレートや各ビット設定を確認します。

4. 起動ログ全体を取得する

シリアル接続中に基板をリセットまたは再給電します。起動直後のログには、ブートループ、パーティション、設定読み込み、クラッシュなどの重要な情報が含まれます。

問題を再現する間は自動スクロールを有効にし、異常が出た直後に一時停止します。その位置を保ったまま検索、フィルター、コピー、エクスポートができます。

5. 大量ログから必要な行を探す

ESP32はネットワーク状態、センサー値、タスク、アプリケーションログを高頻度で出力することがあります。SerialFlowでは検索とフィルターを使い分けます。

  • 検索: キーワードの前後の一致箇所へ移動し、大文字小文字の区別や正規表現も利用できます。
  • フィルター: 表示中のストリームを継続的に絞り込み、複数ルールを組み合わせられます。

Wi-FiやMQTTの問題なら、wifimqttdisconnecterrorから始めます。次の正規表現は複数の重大エラー候補をまとめて検索できます。

(Guru Meditation|panic|assert|watchdog)

確認方法を変えるだけなので、診断用にファームウェアを再ビルドする必要はありません。

6. ファームウェアへコマンドを送る

シリアルコンソールを実装したファームウェアには、SerialFlowからテキストまたは16進バイトを送信できます。応答がない場合は、パーサーがLF、CR、CRLF、あるいは改行なしのどれを要求しているか確認してください。

たとえばstatusを入力し、正しい改行コードを選んで送信します。statusrebootwifi scan、固定プロトコルフレームなどはクイックコマンドとして保存できます。

7. ESPログを解析し、数値をグラフ化する

ESPログデコーダーを使うと、ESP系の出力を整理して確認できます。ファームウェアが一定形式で数値を出力している場合は、グラフ表示で時間変化を観察できます。

センサーのスパイク、周期的な振動、緩やかなドリフト、タイミング異常は、数値の羅列より波形のほうが見つけやすいことがあります。センサー、モーター制御、電力、温度、周期制御の調整に有効です。

8. 再現可能なログを共有する

異常を取得したら出力を一時停止し、ログを共有またはエクスポートします。ファームウェアのバージョン、基板、シリアル設定、問題を発生させた操作も添えてください。

関係する行へ絞った短いログのほうが、無関係な数百行のスクリーンショットより解析しやすくなります。

例:MQTT切断を調査する

  1. ESPFlashで対象ファームウェアを書き込み、USB接続を解放する。
  2. ファームウェアと同じ設定でSerialFlowから開く。
  3. 基板をリセットして起動ログ全体を取得する。
  4. wifimqttheaperrorwatchdogをフィルターへ追加する。
  5. (disconnect|timeout|panic|assert)を検索する。
  6. 必要な改行コード付きでstatusを送信する。
  7. 切断直後に一時停止してログをエクスポートする。

これにより、Wi-Fi接続、Broker接続、メモリ状態、エラー、リセット理由を時系列で確認できます。

Android USBシリアルのトラブルシューティング

症状 確認する内容
USB機器が表示されない Android端末のUSB Host/OTG対応、データケーブル、再接続、USBアクセス許可を確認します。
書き込み後にポートが使用中になる ESPFlashを切断または終了し、USB機器を接続し直してからSerialFlowを開きます。
文字化けする ボーレート、データビット、ストップビット、パリティを合わせます。
接続済みだが出力がない 基板をリセットし、正しいUSBインターフェースを選択し、対象ポートへログが出ているか確認します。
基板が再起動・切断する ケーブルと電源の安定性、DTR/RTSの動作を確認します。
コマンドに応答しない テキスト/16進モードと、パーサーが要求する改行コードを確認します。

書き込みとデバッグをAndroidにまとめる

ESPFlashはファームウェアをインストールし、SerialFlowはその後の動作を確認します。2つを使うことで、Androidだけで書き込みからログ解析まで進められます。

機能の詳細はSerialFlow製品ページで確認できます。Google PlayからSerialFlowをインストールすることもできます。書き込みにはGoogle Play版ESPFlashを利用できます。