叶片滚轴乒乓球收集机器人
开源一个遥控乒乓球收集机器人:STM32F407 + 三叶片收球机构 + 自研 Android 蓝牙控制台
项目地址:https://github.com/pixutian/PingPong-Ball-Collector
开源内容:机械 CAD/STL、Keil 固件工程、Android App 源码与 APK、接线与装配文档
标签:STM32 / 机器人 / 开源 / 嵌入式 / 蓝牙 / 3D 打印
一、为什么做这个
乒乓球训练时,散落在场地上的球需要反复弯腰拾取,效率低、体验差。我们希望做一台低成本、可制造、可复现的收集机器人:先用成熟底盘把“移动 + 收球 + 储球”跑通,再逐步加入视觉与自主能力。
当前开源的是遥控版:操作者通过手机蓝牙控制前进、后退、转向,前端机构把球拨入后置储球箱。带摄像头的自动收集版本(YOLO / OpenCV 路线)正在后续开发中,完成后会继续在本仓库更新。
二、整体方案
系统按“机械—电气—嵌入式—上位机”四层组织:
- 机械层:自研三叶片拨送机构、左右收拢爪、前壳体、后置储球箱与支架;
- 电气层:淘宝购置的轮趣 R1 四驱小车底盘(电机、车轮、车底板)+ C30D(STM32F407VET6)主控 + TB6612 叶片驱动;
- 嵌入式层:200 Hz 四轮速度环、7 档车速、7 档叶片调速、OLED 状态显示;
- 上位机层:自研 Android 控制台 V3.2(圆盘摇杆、档位加减、停车、状态回传)。

三、机械设计:除底盘外全部自研
收球路径很直接:
左右弧形爪收拢 → 三叶片旋转拨送 → 沿导流面进入后箱储存
主要自研件包括三叶片、左右收拢爪、前壳体、后置储球箱、前挡顶、单/双支架、拱顶、盒盖、叶片轴与地板。
材料选择:
| 零件 | 材料 | 说明 |
|---|---|---|
| 后置储球箱 | 9600 树脂 | 强度与韧性平衡 |
| 左右收拢爪 | 3201PA-F | 抗冲击、有一定延展性 |
| 三叶片 | PA12 尼龙 | 耐摩擦、抗连续冲击 |
| 自由端支承 | 605ZZ 轴承(5×11×5) | 降低旋转阻力 |
紧固件按位置分配(装配用量约 36 套):
| 位置 | 规格 | 数量 |
|---|---|---|
| 盒盖 | M3×10 | 2 |
| 叶片驱动电机处 | M3×25 | 2 |
| 前挡顶 | M3×7 | 4 |
| 拱顶 | M3×6 | 8 |
| 左右夹爪 | M3×12 | 6 |
| 其他固定处 | M3×10 | 按需,装配后实测 |
两个真实的坑
1)前端打印件变形
前壳体、收拢爪这类较大打印件在打印时可能出现翘曲或孔位偏移,装配时与支架干涉。我们的样机就遇到了,现场采用局部断开干涉处 + 铁丝绕孔固定:

这是临时方案。后续改进方向:优化支撑与打印方向、加厚或增加加强筋、大件分件打印、孔位预留 0.3–0.5 mm 装配余量。
2)导流爪与叶片之间卡球
球可能卡在导流爪与叶片扫掠面之间的空隙,影响连续收球。当前在左右导流爪上加装弯折铁丝隔断,阻断容易卡球的位置:

后续改进建议延长导流爪的直杆段,减小该处空隙,并让爪内侧与叶片扫掠面更连续。
四、电气与接线
底盘为淘宝购置的轮趣 R1 小车底盘,主控为轮趣 C30D(STM32F407VET6)。叶片电机是 5 V 直流电机,通过 TB6612FNG 驱动:
| 连接 | 说明 |
|---|---|
C30D PC6(TIM8_CH1)→ TB6612 PWMA | 叶片调速 PWM |
C30D 3V3 → TB6612 STBY | 使能 |
C30D 5V → TB6612 VM | 叶片电机电源 |
AIN2 → GND | 固定方向 |
AO1/AO2 → 叶片电机 | 转向按需对调 |
蓝牙模块 TXD/RXD → PD6/PD5 | USART2,9600 8N1,交叉连接 |
上电前先用万用表确认 5 V / 12 V 无短路;首次测试架空车轮。
五、固件设计
固件是完整的 Keil 工程(firmware/Fusion_OpenCar),核心结构:
App/:档位管理、方向映射、四轮 PI、蓝牙帧解析、主循环;Hardware/:电机 PWM、编码器、ADC、OLED、IMU、串口;Driver/:ST 标准外设库(原样保留,按 ST 许可使用)。
关键参数:
| 项目 | 值 |
|---|---|
| 控制周期 | TIM7 5 ms(200 Hz) |
| 编码器 | 30 减速比 × 13 线 × 4 倍频 = 1560 计数/圈 |
| 速度环 | 增量式 PI,Kp=5.0,Ki=1.6 |
| 底盘档位 | 7 档,400 ± 100 r/min(100–700) |
| 叶片档位 | 7 档,70%–100%,每档 5% |
| 叶片 PWM | TIM8,ARR=9999,约 16.8 kHz |
档位换算:
/* 底盘:第 3 档为中间档,越界回落 */
SpeedSet = 400 + (gear - 3) * 100;
/* 叶片:第 3 档 85%,上电第 6 档 100% */
duty = 100 - (6 - gear) * 5;
X/Y(底盘)与 T/U(叶片)在固件侧有 200 ms 去抖:按住连发时,两次按键间隔小于 200 ms 的会被忽略。这一点在写上位机时一定要注意。
六、Android 控制台
自研 App(app/,包名 com.pxt.carcontrol,V3.2)不是串口调试器,而是按操控台设计的:
- 圆形方向盘:8 个 45° 扇区,带死区与扇区高亮,松手立即停止;
- 底盘/叶片各一条 7 点档位条,加减键支持按住连发;
- 独立“停止”按钮;
- 解析车端
{A/B/C/D}状态帧,显示轮速、电量、航向; - 260 ms 指令队列:避开固件 200 ms 去抖,避免“App 加一档、车端没加”;
- 自动选中名称含 HC / JDY / BT 的已配对设备。
| App 操作 | 发送 | 固件行为 |
|---|---|---|
| 圆盘 8 方向 | A–H | dirkey = recv - 0x40 → 1–8 |
| 松手 / 停止 | S | 落入 default,四轮目标清零 |
| 底盘 +/- | X / Y | 7 档循环升降 |
| 叶片 +/- | T / U | 7 档循环升降,每档 5% |
指令均为单字节、无换行;用第三方串口工具调试时不要勾“发送新行”。

七、实地测试
在木地板与球台旁做了实地收球测试:机器人从场地一侧出发,前端左右收拢爪把散球聚向入口,三叶片旋转拨入后置储球箱。下面两张为现场实拍:

图:场地实测——前端收拢爪把球聚向入口,后箱已收集到球

图:球台旁实测——散球被导入前端,叶片拨送进箱
八、成本
第五周补充采购与加工合计 499.39 元:
| 类别 | 金额(元) | 占比 |
|---|---|---|
| 3D 打印件 | 414.08 | 82.9% |
| 紧固件 | 44.60 | 8.9% |
| 电控与驱动(TB6612×2 + 运费) | 14.80 | 3.0% |
| 尼龙扎带及运费 | 12.58 | 2.5% |
| 线材 | 10.87 | 2.2% |
| 轴承 605ZZ | 2.46 | 0.5% |
3D 打印是成本主体,其中车前端(120.64)与后备箱(127.01)两件大件合计 247.65 元,约占物料成本一半。降本可以从三处入手:打印件合并排版/减薄壁厚、非受力件换材料、紧固件与扎带按整包采购。
以上不含赛前采购的 C30D 主控板、底盘套件与锂电池,也不含人工与设备折旧。
九、开源了什么
PingPong-Ball-Collector/ ├─ firmware/Fusion_OpenCar/ # 完整 Keil 工程(App / Hardware / Driver) ├─ app/ # Android 源码 + 已签名 APK + 构建脚本 ├─ hardware/ # BOM、装配说明、CAD 源文件、STL、工程图 ├─ docs/ # 协议、接线、快速上手、兼容性、排障 ├─ media/ # 实物、装配、接线、问题特写 ├─ README.md / README.zh-CN.md └─ LICENSE* # MIT / CERN-OHL-P-2.0 / CC BY 4.0
- 代码(
App/、Hardware/、app/src):MIT - 硬件设计(CAD/STL):CERN-OHL-P-2.0
- 文档与图片:CC BY 4.0
Driver/为 ST 标准外设库,按其原许可使用(SLA0044),不重新授权
十、如何复现
- 淘宝购买轮趣 R1 四驱小车底盘与 C30D 主控板,按厂家手册完成基础连接;
- 按
hardware/assembly.md打印、装配收球机构,检查叶片间隙与紧固件; - 按
docs/wiring.md接线,先空载测试方向与急停; - Keil 打开
firmware/Fusion_OpenCar/Fusion_OpenCar.uvprojx,编译下载; - 手机安装
app/CarControl-v3.2.apk,系统蓝牙先配对模块,再连接; - 架空测试八方向与档位,再落地做收球测试。
十一、已知问题与后续计划
已知问题
- 前端打印件可能变形,需要局部修正或优化打印参数;
- 导流爪与叶片之间可能卡球,当前用铁丝隔断;
- 固件暂无通信超时停车:蓝牙断开后会保持最后方向;
- 叶片只有占空比控制,没有转速反馈;
- App 暂无断线自动重连。
后续计划
- 带摄像头的自动收集版:USB 摄像头 + YOLO / OpenCV 球体检测 → 目标选择 → 底盘对准 → 自动收集;
- 固件增加通信超时停车、
{D}档位回传; - App 增加断线重连与指令校验;
- 可选:叶片改 13 档,保持 40%–100% 全范围。
十二、许可与边界
- 底盘(电机、车轮、车底板)与 C30D 主控板为轮趣科技采购件,不是本项目原创设计;
- 除底盘外的收球机构机械结构、固件与 App 均为自行编写/设计;
- 仓库不包含厂家 CAD、原理图、手册、示例工程或厂家蓝牙 App;
- 本项目与轮趣科技没有官方隶属或背书关系;
- 开源许可只覆盖明确标注为原创的内容。
结语
这个项目最有价值的部分不是某个零件或某段代码,而是把机械、电气、固件和手机端串成了一条能跑通的链路,并且把踩过的坑(打印变形、卡球、去抖、显示不同步)都记录了下来。
仓库地址:https://github.com/pixutian/PingPong-Ball-Collector
如果对你有帮助,欢迎 Star;有问题可以提 Issue,附上固件版本、App 版本与接线情况,我会尽量回复。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)