开源一个遥控乒乓球收集机器人: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×102
叶片驱动电机处M3×252
前挡顶M3×74
拱顶M3×68
左右夹爪M3×126
其他固定处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/PD5USART2,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%
叶片 PWMTIM8,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–Hdirkey = recv - 0x40 → 1–8
松手 / 停止S落入 default,四轮目标清零
底盘 +/-X / Y7 档循环升降
叶片 +/-T / U7 档循环升降,每档 5%

指令均为单字节、无换行;用第三方串口工具调试时不要勾“发送新行”。

Android 控制台


七、实地测试

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

实地测试:前端收拢与后箱集球

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

实地测试:球台旁收球

图:球台旁实测——散球被导入前端,叶片拨送进箱


八、成本

第五周补充采购与加工合计 499.39 元:

类别金额(元)占比
3D 打印件414.0882.9%
紧固件44.608.9%
电控与驱动(TB6612×2 + 运费)14.803.0%
尼龙扎带及运费12.582.5%
线材10.872.2%
轴承 605ZZ2.460.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),不重新授权

十、如何复现

  1. 淘宝购买轮趣 R1 四驱小车底盘与 C30D 主控板,按厂家手册完成基础连接;
  2. 按 hardware/assembly.md 打印、装配收球机构,检查叶片间隙与紧固件;
  3. 按 docs/wiring.md 接线,先空载测试方向与急停;
  4. Keil 打开 firmware/Fusion_OpenCar/Fusion_OpenCar.uvprojx,编译下载;
  5. 手机安装 app/CarControl-v3.2.apk,系统蓝牙先配对模块,再连接;
  6. 架空测试八方向与档位,再落地做收球测试。

十一、已知问题与后续计划

已知问题

  • 前端打印件可能变形,需要局部修正或优化打印参数;
  • 导流爪与叶片之间可能卡球,当前用铁丝隔断;
  • 固件暂无通信超时停车:蓝牙断开后会保持最后方向;
  • 叶片只有占空比控制,没有转速反馈;
  • App 暂无断线自动重连。

后续计划

  • 带摄像头的自动收集版:USB 摄像头 + YOLO / OpenCV 球体检测 → 目标选择 → 底盘对准 → 自动收集;
  • 固件增加通信超时停车、{D} 档位回传;
  • App 增加断线重连与指令校验;
  • 可选:叶片改 13 档,保持 40%–100% 全范围。

十二、许可与边界

  • 底盘(电机、车轮、车底板)与 C30D 主控板为轮趣科技采购件,不是本项目原创设计;
  • 除底盘外的收球机构机械结构、固件与 App 均为自行编写/设计;
  • 仓库不包含厂家 CAD、原理图、手册、示例工程或厂家蓝牙 App;
  • 本项目与轮趣科技没有官方隶属或背书关系;
  • 开源许可只覆盖明确标注为原创的内容。

结语

这个项目最有价值的部分不是某个零件或某段代码,而是把机械、电气、固件和手机端串成了一条能跑通的链路,并且把踩过的坑(打印变形、卡球、去抖、显示不同步)都记录了下来。

仓库地址:https://github.com/pixutian/PingPong-Ball-Collector

如果对你有帮助,欢迎 Star;有问题可以提 Issue,附上固件版本、App 版本与接线情况,我会尽量回复。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐