2022 年 3 月,稚晖君(彭稚晖)发了一条视频:自制一只能摆手、转腰、晃脑袋的桌面小机器人,圆脸上还能显示画面。USB 插上电脑,就能投表情、控关节。外观灵感来自电影里的 EVE,B 站标题是《我做了个能动的电脑配件》——说的是用法,本体仍是一台开源桌面机器人。

很多人把它当成可爱摆件。实际上这是 自研结构 + 多块 PCB + 魔改舵机 + 主机固件 + 上位机 SDK 的整机:原理图、Gerber、固件、CAD、表情资源、Unity 工程,一个人摊开。仓库在 GitHub 长期 9k+ 星,社区后来又有语音版、ESP32 + 小智 AI 等二创。

原视频:【自制】我做了个能动的电脑配件
仓库:github.com/peng-zhihui/ElectronBot

1. 它到底是什么

一句话:ElectronBot = 开源桌面机器人——连上电脑就能改表情、摆姿势。

维度内容
形态桌面摆件级体积;圆脸屏 + 可动关节
自由度6 轴:左手 roll/pitch、右手 roll/pitch、颈部、腰部(各一)
主控头部 STM32F405 + 圆屏 GC9A01 + USB-HS(外挂 PHY)
传感/扩展腹部 SensorBoard:手势、MPU6050、USB-HUB、舵机总线、可选 USB 摄像头
舵机自研 ServoDrive 板魔改 RC 舵机,角度可回传(I2C)
和电脑怎么连USB 自定义协议;SDK + ElectronStudio(Unity)上位机
结构Fusion360 / STEP;推荐尼龙等精密打印

和「只能播表情的桌宠」比,它多了两件硬东西:关节能闭环回传角度,以及 整机开源、电脑上有 SDK 可改。
在这里插入图片描述

2. 难在哪里

难点一:结构不是「能转就行」。
体积压到极限:手臂 pitch 用齿轮,roll 用推杆;腰部要转还得靠柔性排线连底座 Type-C。轴承、半牙螺丝、推杆挡块,差一毫米就卡死或顶壳。打印精度不够,整机手感直接崩。

难点二:舵机不是「接 PWM 就完」。
作者拆掉原厂驱动板,换成自研小板:ADC 读电位器、PWM 驱电机、PID 闭环,再经 I2C 挂到主机。多机地址、上电先后、广播地址 0——任一环节不对,总线堵、程序卡。仓库明确提醒:先单功能验证,再联调;未通舵机前别乱发收发指令。

难点三:USB 不是「插上就能当 U 盘」。
头部走 USB-HS 外挂 PHY,实现自定义设备协议;电脑端要装驱动、跑 SDK。舵机、屏幕、HUB、摄像头共享一条拓扑——调试顺序错了,现象会「像硬件坏了」。

一句话:难的不是「做出一个会动的摆件」,而是 机械、总线、显示/遥控三条线同时闭环。

3. 技术栈怎么串

从结构到上位机,可以粗分成下面几层:

层次关键技术在本项目里
结构齿轮、推杆、轴承、3D 打印六轴本体 + 收纳盒
电路多块 PCB、FFC、USB-HUBElectronBot / SensorBoard / Base / ServoDrive
关节固件ADC、PWM、PID、I2C 从机ServoDrive-fw(HAL / LL)
主机固件圆屏、USB 自定义设备、舵机主站ElectronBot-fw(F405)
协议I2C 指令表、上电时序ID + 广播地址 0
电脑 SDKLowLevel → Player → UnityBridgeElectronStudio、sample.cpp
应用表情序列、视频投屏、姿态控制视频里的 demo;社区语音/AI 二创

上电到能动,大致是:

  1. 舵机从机先就绪(主机固件里常有延时等待)
  2. F405 起屏、起 USB、轮询关节
  3. 电脑识别设备 → SDK 下发姿态 / 画面
  4. 表情「进入–循环–退出」片段无缝衔接
    在这里插入图片描述

3.1 硬件与结构

仓库 Hardware 里主要有四类板:

  • ElectronBot:头部主控 F405、GC9A01 圆屏、USB3300 PHY、SD
  • SensorBoard:手势、USB-HUB、多路 I2C 舵机口、MPU6050;摄像头焊在这板
  • BaseConnector:底座 Type-C,8-Pin FFC 连腹部(为腰转让路)
  • ServoDrive / DK:塞进舵机壳的驱动板(一轴一块);DK 版接插件方便调试

结构侧注意:肩膀轴承约 6×10×3,腰部约 25×32×4;脸部透明件可用表蒙子。安装有社区入门视频,仓库 README 有链。

3.2 关节层:魔改舵机 + I2C

  • 主机(F405)发位置/参数,即时读回角度
  • 每个舵机认 自己的 ID 和 0 号广播(新烧录、未写 ID 时用)
  • 先从机后主机;多舵机地址冲突会拖死总线
  • F0 舵机 MCU 可替换(ADC + 双 PWM + I2C;Flash/SRAM 看你是否砍 HAL/C++)

调试建议:一次只挂一只舵机,注释掉其他通信路径。

3.3 主机固件与 USB

ElectronBot-fw 负责:

  • 驱动圆屏显示
  • USB 自定义设备(仓库提供最小 USB 显示测试工程与预编译)
  • 作为 I2C 主站调度关节

CubeMX 重新生成工程时,USB 相关文件容易被覆盖——仓库提醒要备份再替换。

3.4 电脑侧 SDK:像驱动外设一样驱动机器人

层级(自下而上):

ElectronBotSDK-LowLevel → Player → UnityBridge → ElectronStudio

对照 sample.cpp 就能上手;Unity 工程依赖的 DLL 要放到指定 Plugins 目录。注意选图片/视频路径目前对中文不友好。表情动画按「进入–循环–退出」三段组织,方便代码拼接。

4. 怎么学

不必一上来复刻整机。按开源路线把 单舵机闭环 → USB 显示最小工程 → SDK 发一条姿态 走通,收获已经很大。

原仓(主体)

  • https://github.com/peng-zhihui/ElectronBot
  • 含 Hardware / Firmware / Software / CAD / Docs

社区延伸(学完原仓再碰)

  • 语音版:jinsonli/ElectronBot-Voice
  • ESP32 + 小智 AI 二创:搜索 electronBot-AI / xiaozhi electron-bot 板级支持(和原版 STM32 路线不同,别混着抄)

建议五步

  1. 看原视频 BV1ka411b76m,建立功能边界
  2. 烧录仓库里的 USB 显示最小测试,确认屏与线材
  3. 只改 / 只挂 一只舵机,走通 I2C 读写角度
  4. 装驱动,跑 sample.cpp 或 Studio,发一条已知安全姿态
  5. 再上完整装配;卡住时先翻 Issues(作者强调:灌水去 Discussions)

自检:你卡在哪一层?

卡住的感觉多半在哪一层
转不动、顶壳、齿跳结构 / 打印精度
一只舵机抖、不闭环ServoDrive / 电机线序 / PID
多舵机一上电就卡I2C 地址 / 上电顺序
电脑不认设备、无画面USB PHY / 驱动 / 最小测试工程
能动但上位机控不了SDK / 驱动签名 / 路径

5. 别和这几条线搞混

搜「稚晖君机器人 / 桌面电子狗 / 小智」常会撞车:

ElectronBot桌面电子狗材料包Linux 小电视 / Quarkxiaozhi-esp32
芯片STM32F4 + F0 舵机板多为 ESP8266/ESP32 入门板全志 H3 + LinuxESP32-S3 等
软件栈裸机/HAL、USB 自定义、C++ SDKArduino/IDF 小 demoU-Boot / DT / DebianIDF + 云端大模型
适合学关节总线、USB 外设、整机联调舵机入门、表情屏板级 Linux Bring-up语音 AI、MCP
仓库peng-zhihui/ElectronBot分散、无统一权威仓Project-Quantum78/xiaozhi-esp32

ElectronBot 的定位记一句:开源桌面机器人,插电脑是为了投屏和遥控;不是 Linux 小主机,也不是材料包入门电子狗。

6. 小结

  1. 整机是叠出来的:结构、舵机闭环、主机固件、USB、SDK 必须对齐同一套本体。
  2. 难在关节与总线:魔改舵机 + I2C 时序,比「PWM 摆臂 demo」厚一个数量级。
  3. 可复用的是链路:视频定边界 → 最小 USB 测试 → 单舵机 → SDK;二创(语音 / 小智)建立在读懂原仓之后。

参考与链接

  • 原视频:https://www.bilibili.com/video/BV1ka411b76m/
  • 仓库:https://github.com/peng-zhihui/ElectronBot
  • 安装参考(社区):绿荫阿广、数码甲鱼等 B 站教程(见仓库 README)
  • 语音版:https://github.com/jinsonli/ElectronBot-Voice
  • 作者 GitHub:https://github.com/peng-zhihui
  • 同作者可对照:Linux 小电视 / Project-Quantum、HoloCubic(别混线路)
    在这里插入图片描述
Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐