arduino-serial-monitor について
arduino-serial-monitor は、組み込みデバッグ向けに Arduino のシリアル出力を監視・分析するスキルです。コマンドラインスクリプトでログ記録、フィルタリング、形式処理、エラー表示を行います。
主な機能
- 01シリアル出力をリアルタイム監視
- 02タイムスタンプ付きログの保存
- 03キーワードや正規表現でフィルタリング
- 04text、JSON、CSV、binary の処理
- 05一般的なエラーの強調表示
活用シーン
- 01Arduino の起動・リセット出力の確認
- 02センサー値や通信エラーの抽出
- 03後からタイミングを分析するためのログ保存
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ wedsamuel1230/ arduino-skills --skill arduino-serial-monitorインストール後、Claude Code で/arduino-serial-monitorを入力して読み込まれたか確認します。
同梱ファイルscripts/monitor_serial.py
詳細
Arduino Serial Monitor
このスキルは、Arduino ボードのシリアルモニターのデータを読み取り、分析するための高度なツールを提供し、基本的な Arduino IDE のシリアルモニターを超えるデバッグ体験を実現します。
機能
- リアルタイムのシリアルモニタリング:Arduino のシリアルポートに接続し、データをリアルタイムで表示します
- データのログ記録:後で分析できるよう、シリアル出力をタイムスタンプ付きでファイルに保存します
- フィルタリングとパターンマッチング:キーワード、正規表現パターン、またはデータ型で出力をフィルタリングします
- エラー検出:一般的なエラーパターンや警告を自動的に強調表示します
- 複数の形式に対応:さまざまなデータ形式(text、JSON、CSV、binary)を処理します
- クロスプラットフォーム: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 スキル仕様を使用します。前提条件、必要なツールとバージョン、実装手順、証拠の段階ごとのテスト/証拠、既知の制限事項、復旧/セキュリティに関する注意事項を明記してください。
コメント
Markdown 対応