notes
Robotics

ESP32 + zenoh-pico で基板の遠隔デバッグプローブを作る

CAN バスタップ・UART タップ・リセット線制御を ESP32 に載せ、zenoh-pico で無線公開する。対象基板の FW を変更せずにバス健全性・hardfault ログ・遠隔再起動が手に入る

要点: ESP32 (TWAI ペリフェラル + WiFi) に zenoh-pico を載せると、対象基板の FW 無改修で CAN バス監視・UART ログ回収・遠隔リセットができるデバッグプローブになる。

zenoh-pico#

  • MCU 向けの軽量 zenoh クライアント (C 実装)
  • ESP-IDF / FreeRTOS / Zephyr / Arduino で動く
  • pub / sub / queryable が使える。router 機能は無い (クライアント専用)
  • WiFi / Ethernet で zenoh router に接続する

プローブが FW 無改修で取れるもの#

機能実装zenoh 上の公開
CAN バスタップTWAI を listen-only モードprobe/{board}/can/frames
バスエラー計数TWAI のエラーカウンタ読み出しprobe/{board}/can/errors
UART ログ回収基板のデバッグ UART を RXprobe/{board}/uart (hardfault 時の printf がそのまま出る)
リブート検出特定 ID の CAN 沈黙 + 復帰パターンprobe/{board}/alive
遠隔リセット / 焼き直しGPIO でリセット線・BOOT 線を制御queryable probe/{board}/reset
電源計測INA226 (I2C) を追加probe/{board}/power (電圧・電流)

ゲートウェイ構成#

CAN しか持たない基板群を zenoh 面に出す:

基板 (CAN) ──CAN──┐
基板 UART ────────┤── ESP32 プローブ (zenoh-pico, WiFi)
リセット線 ────────┘            │
                               ▼
                     zenoh router (ホスト PC)
                               │
       zenoh-bridge-ros2dds ───┤  (ROS 2 グラフを同じ面に)
                               ▼
                観測系 (watchdog / エージェント / WebUI)

基板 FW を後から拡張する場合も、診断フレームを CAN に足すだけでプローブが zenoh に中継する。FW 側に netifaces は要らない。

制約#

  • WiFi のジッタがあるためデバッグ・観測用途限定。制御ループには使わない
  • zenoh-pico は router を持たないので、ホスト側に zenoh router (zenohd) が必要
  • TWAI は CAN 2.0 まで。CAN-FD バスのタップには外付けコントローラ (MCP2518FD 等) が要る

関連#

  • [[runtime-verification-layers]] — プローブの情報を食わせる監視の設計
最終更新:

On this page