arduino-serial-monitor について
arduino-serial-monitorは、Arduinoボードのシリアルデータを監視・分析するスキルです。CLIスクリプトでログ記録、フィルタリング、形式の解析、タイムスタンプ付与、エラー表示を行えます。
主な機能
- 01シリアルポートのリアルタイム監視
- 02タイムスタンプ付き出力の保存
- 03キーワードや正規表現による行の絞り込み
- 04テキスト、JSON、CSV、バイナリの解析
- 05よくあるエラーや警告の強調表示
活用シーン
- 01ボードの起動・リセットログの記録
- 02テスト中のセンサー値の絞り込み
- 03シリアル出力されたJSONデータの解析
- 04タイミングや通信エラーの調査
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ wedsamuel1230/ embedded-engineering-skills --skill arduino-serial-monitorインストール後、Claude Code で/arduino-serial-monitorを入力して読み込まれたか確認します。
同梱ファイルreferences/desktop-console.mdscripts/monitor_serial.py
詳細
Arduino シリアルモニター
デスクトップの可視化/ベンチコンソールについては、
デスクトップコンソールのガイダンスを参照してください。ワイヤレス伝送とトレースのセマンティクスはwireless-telemetryに属します。ここでは、そのドライバーや計測ワークフローを重複して記載しないでください。ネイティブのESP-IDFログはシリアル診断の有効な入力であり、Arduinoフレームワークを使用していることを意味するものではありません。
このスキルでは、Arduinoボードのシリアルモニターのデータを読み取り、分析するための高度なツールを提供し、基本的なArduino IDEのシリアルモニターよりもデバッグ体験を向上させます。
機能
- リアルタイムシリアルモニタリング:Arduinoのシリアルポートに接続し、データをリアルタイムで表示します
- データロギング:シリアル出力をタイムスタンプ付きでファイルに保存し、後で分析できます
- フィルタリングとパターンマッチング:キーワード、正規表現パターン、データ型で出力をフィルタリングします
- エラー検出:一般的なエラーパターンや警告を自動的に強調表示します
- 複数の形式に対応:さまざまなデータ形式(テキスト、JSON、CSV、バイナリ)を処理します
- クロスプラットフォーム:Windows、macOS、Linuxのシリアルポートで動作します
構造化されたデバッグワークフロー
- ボード/リビジョン、ファームウェア/イメージ識別子、ツールチェーンとバージョン、ポート、ボーレート、判明している場合はリセット原因、タイムスタンプの情報源を正確に記録します。
t_ms=123 level=INFO event=sensor_read value=...のように、安定したフィールドを持つイベントごとに1行の形式を優先します。出力にシークレットやトークンを含めないでください。- フィルタリングする前に、フィルタリングされていないログを取得します。最初の起動時の行、リセット/ブラウンアウト/ウォッチドッグのメッセージ、症状を再現するまでの遷移を保持します。
- 結論には、ビルド、アップロード、ハードウェア、システム、デプロイのいずれの証拠かを明記します。証明段階ごとに結果を報告してください。シリアルストリームに問題がなくても、ピン、電源、システム全体が正常である証明にはなりません。
- テストマトリックスには
hardware-tddを、次の観測にユーザーが操作するボードが必要な場合はembedded-project-loopを併用します。
推奨するC++イベント形式
Serial.print("t_ms=");
Serial.print(millis());
Serial.print(" level=INFO event=ready board=");
Serial.println(BOARD_ID);
ボードのメモリ予算に適した、固定長で上限のある形式を使用します。Wi-Fiのパスワード、APIキー、証明書、トークン、個人データは記録しないでください。
使い方
基本的なシリアルモニタリング
# Monitor serial port with default settings (9600 baud)
uv run --no-project scripts/monitor_serial.py --port COM3
# Specify baud rate and output file
uv run --no-project scripts/monitor_serial.py --port /dev/ttyACM0 --baud 115200 --output debug.log
# Filter for specific patterns
uv run --no-project scripts/monitor_serial.py --port COM3 --filter "ERROR|WARNING"
高度なデバッグ
# Parse JSON data from serial
uv run --no-project scripts/monitor_serial.py --port COM3 --format json --pretty
# Monitor with timestamp and color coding
uv run --no-project scripts/monitor_serial.py --port COM3 --timestamp --color
# Detect common Arduino errors
uv run --no-project scripts/monitor_serial.py --port COM3 --detect-errors
スクリプトのオプション
--port:シリアルポート(例:COM3、/dev/ttyACM0)--baud:ボーレート(デフォルト:9600)--output:ログの出力ファイル--filter:行をフィルタリングする正規表現パターン--format:データ形式(text、json、csv、binary)--timestamp:出力にタイムスタンプを追加--color:色分けされた出力を有効化--detect-errors:一般的なエラーパターンを強調表示--timeout:接続タイムアウト(秒)
Arduinoの一般的なデバッグシナリオ
メモリの問題
Filter for: "low memory|stack overflow|heap"
センサーデータの検証
Filter for: "sensor|reading|value"
Format as: json
タイミング分析
Enable: --timestamp
Filter for: "start|end|duration"
通信エラー
Filter for: "timeout|failed|error"
Enable: --detect-errors
Arduino CLIとの連携
# Compile and upload, then monitor
arduino-cli compile --fqbn arduino:avr:uno sketch/
arduino-cli upload -p COM3 --fqbn arduino:avr:uno sketch/
uv run --no-project scripts/monitor_serial.py --port COM3
トラブルシューティング
ポートが見つからない
arduino-cli board listで利用可能なポートを確認します- Arduinoが接続されており、ドライバーがインストールされていることを確認します
- 別のポート名を試します(WindowsではCOM1~COM99、Linuxでは/dev/ttyACM*)
データを受信できない
- ボーレートがArduinoスケッチの設定(
Serial.begin(9600))と一致していることを確認します - USBケーブルの接続を確認します
- モニタリング中にArduinoボードをリセットします
権限エラー(Linux/macOS)
# Add user to dialout group
sudo usermod -a -G dialout $USER
# Logout and login again
証拠とプライバシー
ボード、ファームウェア/イメージのバージョン、ツールチェーン、ボーレート、ポート、リセット原因、タイムスタンプの情報源を記録します。対象上で取得した場合に限り、シリアル出力をハードウェアまたはシステムの証拠として分類します。ログを保存または共有する前に、Wi-Fiのパスワード、APIキー、証明書、トークン、個人データを伏せてください。
依存関係
- Python 3.8+
uv0.4+(スクリプト内でpyserialとcoloramaを宣言しています)- 自己完結型のヘルパーを
uv run --no-project scripts/monitor_serial.py --helpで実行します。
使用例
基本的な温度センサーのモニタリング
// Arduino sketch
void setup() {
Serial.begin(9600);
}
void loop() {
float temp = analogRead(A0) * 0.488;
Serial.print("Temperature: ");
Serial.print(temp);
Serial.println(" C");
delay(1000);
}
uv run --no-project scripts/monitor_serial.py --port COM3 --filter "Temperature" --timestamp
JSONデータの解析
// Arduino sketch with JSON output
#include <ArduinoJson.h>
void setup() {
Serial.begin(115200);
}
void loop() {
StaticJsonDocument<200> doc;
doc["temperature"] = analogRead(A0) * 0.488;
doc["humidity"] = analogRead(A1) * 0.146;
doc["timestamp"] = millis();
serializeJson(doc, Serial);
Serial.println();
delay(2000);
}
uv run --no-project scripts/monitor_serial.py --port COM3 --format json --pretty
共通出力契約
共通の Arduino スキル契約を使用してください。 前提条件、必要なツールとバージョン、実装手順、証明段階ごとのテスト/証拠、 既知の制限事項、復旧/セキュリティに関する注記を明記してください。