由稚晖君开源的 ElectronBot。它不只是桌面摆件,而是一台能动的电脑配件。
ElectronBot 是一款桌面级小机器人,外观设计的灵感来源是《机器人总动员》WALL-E 里面的伊娃。它通过 USB 直连电脑,把圆形屏幕、USB 摄像头、六轴舵机、AI 识别全部塞进一个巴掌大的机身里,开源 5 天就在 GitHub 收获近 3000 Star,如今已积累约 9.5k Star,被 HelloGitHub 收录为第 72 期精选开源项目。
机器人具备6 个自由度,使用自己修改的特制舵机,支持关节角度回传。项目提供全套开发资料和配套 SDK 以供二次开发。硬件配置非常齐全,简单来说,ElectronBot 把"眼睛、嘴巴、表情、四肢"配齐了,算力则完全借力于你的电脑——这也是它敢叫"电脑配件"的原因。
01 技术架构:结构 + 电路双线设计
ElectronBot 的硬件分为结构和电路两条设计线,每条线都藏着不少巧思。
结构设计:3D 打印 + 巧妙的传动机构
结构件全部采用 3D 打印加工。因为包含齿轮等精密部件,作者推荐使用 HP 尼龙打印,传统 FDM 打印精度不太理想,光固化则存在支撑和强度问题。
手臂的驱动原理是整台机器最精妙的部分:pitch 方向运动很好理解,是齿轮传动;roll 方向则设计了一个T 型推杆,由 M2 螺丝帽和挡块限制,当黄色组件转动时带动推杆左右移动,将动力传递到转轴,力矩可以双向传递。
电路设计:四块板子各司其职
硬件电路一共四块板子,分工明确:
ElectronBot:头部主控板,集成主控 STM32F405RGT6、圆形屏幕 GC9A01、USB-HS 的 PHY 芯片 USB3300 以及 SD 卡
SensorBoard:肚子里的传感器板,包含手势传感器、USB-HUB 芯片、5 个 I2C 舵机接口、MPU6050 加速度计陀螺仪,USB 摄像头也连接到这块板
BaseConnector:底座上的 USB Type-C 插座,通过 8-Pin 的 FFC 柔性排线和 SensorBoard 连接——因为机器人本体需要旋转,所以特意用了柔性排线
ServoDrive:用于魔改舵机替换舵机驱动板的电路,通过 I2C 总线接口与 SensorBoard 及头部主控连接
值得提一下的是 USB-HUB 的拓扑,它用的是一拖四的 HUB 芯片,目前使用了三个口,还剩一个口——作者透露,其实可以再集成一个 USB 麦克风,这样 ElectronBot 也能当作电脑的麦克风使用,留给玩家一定的扩展空间。
三大核心能力
运动交互:6 自由度运动 + 关节角度回传,动作精准可编程
USB 通信显示:USB 直连电脑,上位机实时驱动表情与画面
开放编程:完整 SDK + 全部固件源码,支持 C/C++ 与 Unity 开发
02 硬件模块:从齿轮到舵机,处处是细节
手臂驱动:齿轮 + T 型推杆的组合拳
整台机器人 6 个自由度中,双手各有 roll 和 pitch 两个方向,加上颈部与腰部各一个自由度。pitch 方向用齿轮传动实现,roll 方向则依赖自研的 T 型推杆——一个 M2x25mm 半牙螺丝配合小挡块,就能把旋转运动转化为直线推拉,结构简洁还支持双向传力。
安装时要稍微注意,因为机身体积太极限,几个舵机的安装架需要剪短一边才能塞下;手臂推杆稍微打磨并加上润滑脂,推动会更顺畅。
舵机魔改:小成本实现角度回传
普通 RC 舵机用电位器测量绝对角度,ElectronBot 的魔改舵机在驱动板里用 ADC 读取电位器电压值换算成角度反馈,驱动芯片选用封装最小的 FM116B。整套舵机驱动方案可以在 GitHub 找到固件源码,支持 PID 闭环算法。
摄像头方面,作者选用了一款淘宝在售的 USB 摄像头,直接拆掉接线焊在 SensorBoard 上;大家当然也可以根据需求替换成黑白的、高帧率的,只要能够装下就可行。
舵机 I2C 协议:主-从机一问一答
魔改后的舵机通过 I2C 接口和控制板通信,STM32F4 主板为主机,舵机为从机。通信始终由主机发起:先下发位置、参数等指令,再即时取回数据,完成一个通信来回。
每个舵机作为从机接收两个地址的指令:自己的 ID 号以及 0 号广播。广播用于舵机刚烧写完固件、Flash 里还没存 ID 时的通配地址。这里有个坑需要提醒:舵机和主机上电要有先后顺序,必须等从机初始化完成再让主机发指令,否则总线阻塞会导致程序卡住——所以主机的固件代码里特意留了 2 秒延时,等舵机全部上电初始化完成再开始通信。
03 软件开发:SDK 四层架构 + AI 玩法
上位机 ElectronStudio:看得见的控制台
ElectronBot 的魅力一半在硬件,一半在软件。项目提供了视频里演示的上位机软件 ElectronStudio 的 Unity 工程源码——用鼠标拖拽就能让机器人做出各种动作、显示自定义表情,还可以加载图片和视频到圆形屏幕上播放,桌面机器人秒变第二块屏幕。
SDK 四层架构:从底层到应用层层开放
SDK 的库层级关系由下至上分别是:
ElectronBotSDK-LowLevel:底层通信库,封装 USB 协议
ElectronBotSDK-Player:动作与表情播放层
ElectronBotSDK-UnityBridge:C++ 与 Unity C# 的桥接层
ElectronStudio:上层应用,开箱即用的可视化控制台
固件工程是基于 STM32HAL 实现,作者提供了 .ioc 文件,可以自行用 STM32CubeMX 生成 Keil 或 STM32IDE 工程;作者本人则用 CLion 进行编译和下载,把 CLion 变成 STM32 的 IDE。
AI 玩法与开源生态
ElectronBot 最出圈的能力,是借力电脑算力实现各种 AI 识别:基于 OpenPose 的人体关键点检测、手势识别,都能让机器人"看懂"你的动作并实时反馈在表情上。
表情包动画系统也做得很讲究:每个表情包含"进入-循环-退出"三个片段,可以无缝衔接,方便用代码调用组合出无数种效果,社区里甚至有人把表情包做成了 Flappy Bird 之类的小游戏。
开源生态还在不断壮大:社区贡献了语音识别版 ElectronBot-Voice,让机器人开口说话;B站网友还做了胎教级的安装教程;仓库里也提供单独的 USB 通信功能测试工程和预编译文件,新手可以先烧录 hex 文件跑通最小系统,再逐步调试舵机。
04 写在最后
ElectronBot 最大的价值,在于它把玩具做成了教材:从 3D 打印结构件、魔改舵机、四块 PCB,到 STM32 固件、四层 SDK、Unity 上位机,再到 OpenPose 人体关键点检测——一条完整的"嵌入式 + 机器人 + AI"学习链路,全部开源,全部可循。
稚晖君用"软核"的思路证明了一件事:AI 交互不一定需要昂贵的硬件,把开放硬件和电脑算力组合起来,一样能做出有温度、有灵魂的作品。真正的动手乐趣,从来不在成品本身,而在于"自己把它造了出来"。
开源地址:github.com/peng-zhihui/ElectronBot
B站胎教级安装教程:bilibili.com/video/BV1sY4y1Y7t6