mcpField
A
arduino-serial-monitor

arduino-serial-monitor

github.com/wedsamuel1230開発28229 回インストール2 週間前に更新
リポジトリ

arduino-serial-monitor について

arduino-serial-monitor は、組み込みデバッグ向けに Arduino のシリアル出力を監視・分析するスキルです。コマンドラインスクリプトでログ記録、フィルタリング、形式処理、エラー表示を行います。

主な機能

  1. 01シリアル出力をリアルタイム監視
  2. 02タイムスタンプ付きログの保存
  3. 03キーワードや正規表現でフィルタリング
  4. 04text、JSON、CSV、binary の処理
  5. 05一般的なエラーの強調表示

活用シーン

  1. 01Arduino の起動・リセット出力の確認
  2. 02センサー値や通信エラーの抽出
  3. 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 のシリアルポートで動作します

構造化されたデバッグワークフロー

  1. 正確なボード/リビジョン、ファームウェア/イメージ識別子、ツールチェーンとバージョン、ポート、ボーレート、判明している場合はリセット原因、タイムスタンプの取得元を記録します。
  2. t_ms=123 level=INFO event=sensor_read value=... のように、安定したフィールドを使ってイベントごとに1行で記録することを推奨します。出力にシークレットやトークンを含めないでください。
  3. フィルタリングする前に、フィルタリングされていないログを取得します。起動時の最初の行、リセット/ブラウンアウト/ウォッチドッグのメッセージ、症状が再現するまでの遷移を保持してください。
  4. 結論には、ビルド、アップロード、ハードウェア、システム、デプロイのいずれの証拠かを明記します。証拠の段階ごとに結果を報告してください。シリアル出力に異常がないことは、ピン、電源、またはシステム全体が正しいことの証明にはなりません。
  5. テストマトリックスには 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+
  • uv 0.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 スキル仕様を使用します。前提条件、必要なツールとバージョン、実装手順、証拠の段階ごとのテスト/証拠、既知の制限事項、復旧/セキュリティに関する注意事項を明記してください。

コメント