DEEP 41 · 第五辑 · 电路 · LEARN NOTES

收进学习手册 · 2026-09-11 · duck.whatled.com

解读 41 · 硬件方案逆向总览

解读对象:microduck-replica/docs/硬件方案逆向.md(46KB,整机电控逆向总档)
需要的前置:无,本辑开篇。想补读图基本功,先看[什么鸭公开课第 08 课../course/08-看懂电路图.md的读图五步法。

一张图:整机电路长什么样

官方没发布过硬件图纸,这份文档的作者把 Rust 源码当规格书读——运行时要驱动真实硬件,就必须写死设备路径、I2C 地址、波特率。逆向画出的整机结构:

              Radxa Zero 3W(RK3566 四核 A55,65×30mm,Armbian)
                 │ /dev/ttyS2          │ 40-pin i2c3 @400kHz
                 │ 1 Mbps TTL 半双工    │
                 │                Robot HAT(音频 codec 0x18 / ToF 0x29)
    ═════════════╧════ Dynamixel 总线 · Protocol V2 ═════════════
      15 × XL330 舵机(ID 右腿10-14 / 左腿20-24 / 颈头嘴30-34)
      + imu_to_dxl 板(ID 200,内藏 LSM6DSV16X 姿态芯片)

三个关键数字:控制环 50 Hz;一次 sync_read 覆盖 16 台设备(15 舵机 + 1 IMU 板),读寄存器 124–136;电池是 NP-F550 二串锂电,带载 6.6–8.2 V(出处:逆向文档 §一、§五、§六)。

三块板,三种来路

板 在哪 怎么获得
主控 Radxa Zero 3W 头里 ✅ 市售模块直接买(约 $32.9,见电控采购清单)
Robot HAT(65×30mm) 头里,叠在主控上 7.3 mm 📥 官方已开源,下载 Gerber 打样
imu_to_dxl 躯干,不在头里 🔧 全网无公开工程,唯一要自己画的

最容易搞错的是位置:主控、HAT、摄像头都在 MJCF 的 jaw_soft 头部刚体里(robot_walk.xml:235/247),而 IMU 板刚性固连在躯干 trunk_base 上。穿过三自由度脖子的只有两束线:舵机总线和电池供电线。

核心思想:一条总线搞定一切

多数机器人给 IMU 单独留一条 I2C。Microduck 不:imu_to_dxl 板把姿态数据打包,伪装成 200 号"Dynamixel 舵机"挂在总线上,和 15 个真舵机在同一次 sync_read 事务里读回。连电池电压都省了电量计——直接读舵机自报的供电电压(逆向文档 §六:原文 "no fuel gauge and no ADC")。

代价也有:每个舵机出厂应答延迟 500 µs,16 台设备串行应答就是 8 ms,占掉 20 ms 控制周期的 40%(duck-control/src/model.rs:84-86)——所以固件必须把 return_delay_time 写 0。

你带走的收获

  1. 代码即规格书:设备路径、地址、波特率、寄存器布局都在源码里,没有图纸也能逆向出电控架构。
  2. 一条总线的容量要算账:设备数 × 每台应答时间 × 控制频率,和周期预算比一比,超了就得出厂默认值里抠时间。
  3. 板子的位置由物理约束决定:姿态传感器必须和被测刚体刚性固连,头里那颗 BMI088 软件标着 "dormant" 根本不用。
  4. "开源"分层看:同一家的产品,可能软件开源、一块板开源、另一块板闭源——要逐件确认。

延伸

什么鸭 WHATDUCK · 复刻学习笔记 ← 全部手册 · 首页