esp32-serial-logging について
esp32-serial-loggingは、マイクロコントローラーのシリアル出力をファイルに記録するデバッグ用スキルです。ESP32などの開発や障害調査に向けて、ログのリアルタイム監視、絞り込み、エラーや再起動の検索方法を説明します。
主な機能
- 01シリアル出力をログファイルに追記
- 02ログのリアルタイム監視
- 03キーワードによるログ絞り込み
- 04クラッシュやエラーの検索
- 05デバイス再起動記録の確認
活用シーン
- 01ESP32の問題再現中にログを記録
- 02デバイスの動作状態をリアルタイムで確認
- 03エラー、クラッシュ、アサーションの検出
- 04デバイス再起動の原因調査
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ h1d/ agent-skills-esp32 --skill esp32-serial-loggingインストール後、Claude Code で/esp32-serial-loggingを入力して読み込まれたか確認します。
詳細
ESP32 シリアルログの監視
概要
ESP32(または任意のマイクロコントローラー)のシリアル出力をファイルに記録し、リアルタイムで監視・分析します。
ESP32 のセットアップ(デバイス側)
ESP-IDF フレームワーク
#include "esp_log.h"
static const char* TAG = "MyComponent";
void my_function() {
ESP_LOGI(TAG, "Info message");
ESP_LOGW(TAG, "Warning: value=%d", some_value);
ESP_LOGE(TAG, "Error occurred");
ESP_LOGD(TAG, "Debug details");
}
Arduino フレームワーク
void setup() {
Serial.begin(115200);
}
void loop() {
Serial.println("Status: running");
Serial.printf("Sensor: %d\n", analogRead(A0));
delay(1000);
}
ホスト側 — ログの記録
# Find serial port
PORT=$(ls /dev/cu.usbmodem* /dev/ttyUSB* /dev/ttyACM* 2>/dev/null | head -1)
echo "Found port: $PORT"
# Configure and start capture
stty -f "$PORT" 115200 raw -echo 2>/dev/null || stty -F "$PORT" 115200 raw -echo
cat "$PORT" >> /tmp/device.log &
echo "Logging to /tmp/device.log (PID: $!)"
ログの監視
# Real-time monitoring
tail -f /tmp/device.log
# Filter specific patterns
tail -f /tmp/device.log | grep -E "ERROR|WiFi|Button"
エラーの検索
# Find crashes and errors
grep -E "ERROR|crash|overflow|panic|assert|Backtrace" /tmp/device.log
# Find reboots (look for boot messages or uptime resets)
grep -E "boot:|rst:|Uptime: [0-9] sec" /tmp/device.log
デバッグのワークフロー
-
問題を再現する前にログを消去します:
> /tmp/device.log -
問題を再現します
-
記録したログを分析します:
cat /tmp/device.log
一般的なボーレート
| デバイス | ボーレート |
|---|---|
| ESP32(デフォルト) | 115200 |
| ESP32(高速) | 460800 |
| Arduino | 9600 |
| STM32 | 115200 |
ログ記録の停止
pkill -f "cat /dev/cu.usbmodem"
pkill -f "cat /dev/ttyUSB"
トラブルシューティング
- ポートが見つからない:USB 接続を確認し、
ls /dev/cu.* /dev/tty.*を試してください - アクセスが拒否されました:ユーザーを
dialoutグループに追加してください(Linux) - 文字化けした出力:ボーレートが正しくありません
コメント
Markdown 対応