1. 项目背景与设计思路第一次接触双核协作的智能小车是在大三的机器人竞赛中当时看到学长用两块STM32实现了机械臂和底盘的协同控制那种行云流水的操作让我印象深刻。这次自己动手选择了STM32F103RCT6和C8T6这对经典组合就像给小车装上了大脑和小脑——RCT6负责底盘运动控制C8T6专注机械臂操作通过IIC协议实现双向通信。为什么需要双核实测发现单核处理多个舵机PWM信号时电机控制会出现明显卡顿。就像人一边跑步一边做数学题难免手忙脚乱。双核架构将计算任务分流RCT6的定时器专注电机PWM生成C8T6的定时器全力驱动5个舵机通过微信小程序发送统一指令两个核心各司其职又紧密配合。2. 硬件系统搭建2.1 核心器件选型主控芯片选型对比表型号闪存RAM定时器串口适用场景F103RCT6256KB48KB85电机控制/复杂运算F103C8T664KB20KB73外设驱动/辅助控制电机选用MG513金属减速电机实测载重可达5kg配合全金属底盘轻松扛起6自由度机械臂。电源方案比较特殊——采用双路供电12V锂电池直接驱动电机通过DC-DC降压模块输出5V给控制电路避免电机启停对控制电路的电压冲击。2.2 机械结构设计采用双层3D打印结构下层是差速驱动底盘上层安装机械臂和显示屏。这里有个坑——最初设计的机械臂重心太靠后急刹时容易后翻。后来在底盘后部加装牛眼轮作为辅助支撑就像给小车装了防倾杆。机械臂也从6自由度简化为5自由度牺牲少许灵活度换来更好的稳定性。3. 双机通信实现3.1 IIC协议改造由于主控板串口全被占用被迫使用IIC通信。标准IIC协议在双机通信时有三个痛点从机地址固定无法动态切换应答机制增加通信延迟多字节传输容易丢数据我的解决方案是三刀流改造去掉从机地址直接传输数据取消应答位改为状态机轮询单次只传1字节通过软件校验// 精简版IIC从机初始化C8T6端 void IIC_Slave_Init(void) { GPIO_InitTypeDef GPIO_InitStruct; // PB10(SCL), PB11(SDA) 设置为上拉输入 GPIO_InitStruct.Pin GPIO_PIN_10 | GPIO_PIN_11; GPIO_InitStruct.Mode GPIO_MODE_IT_RISING; // 上升沿中断 GPIO_InitStruct.Pull GPIO_PULLUP; HAL_GPIO_Init(GPIOB, GPIO_InitStruct); // 配置外部中断 HAL_NVIC_SetPriority(EXTI15_10_IRQn, 1, 1); HAL_NVIC_EnableIRQ(EXTI15_10_IRQn); }3.2 指令集设计设计了两级指令系统基础指令单字节控制如0xA1表示电机正转复合指令基础指令参数如0xA1速度值graph TD A[微信小程序] --|蓝牙指令| B(C8T6) B --|IIC指令| C(RCT6) C --|状态反馈| B B --|数据回传| A实际测试发现这种架构下指令响应时间50ms完全满足实时控制需求。关键是要在C8T6中做好指令优先级管理——机械臂控制指令优先于状态反馈。4. 微信小程序开发4.1 蓝牙连接优化直接使用汇承BLE串口助手的开源框架重点优化了三点增加自动重连机制蓝牙断开后每3秒尝试重连引入指令队列防止快速操作时指令丢失添加振动反馈每个按钮操作都有触觉回应// 按钮按下事件处理 handleButtonPress (cmd) { if (this.state.connected) { this.sendCommand(cmd); Vibrator.vibrate(10); // 10ms振动反馈 } else { wx.showToast({ title: 蓝牙未连接, icon: none }); } }4.2 控制界面设计采用游戏手柄式布局左侧摇杆控制底盘移动右侧按钮控制机械臂动作底部滑块调节运动速度特别设计了长按加速功能——按住方向键超过1秒小车会自动加速到最大速度这个细节让操作体验流畅很多。界面虽然简陋原谅我的美术细胞但所有按钮都采用绝对定位确保不同手机尺寸下操作区域不变。5. 系统整合与调试5.1 电源管理踩过最深的坑是电源干扰电机启动时导致单片机复位舵机运动时蓝牙断开WS2812灯带出现乱码最终解决方案电机电源与控制电路完全隔离每个舵机并联1000μF电容灯带数据线加磁环5.2 运动控制校准通过微信小程序开发了调试模式输入#CALIBRATE#进入校准状态依次测试每个电机/舵机极限位置自动生成校准参数并保存到Flash// 舵机校准数据结构 typedef struct { uint16_t min_angle; uint16_t max_angle; uint16_t home_position; } ServoCalibration;6. 效果展示与升级空间现在这小车已经能完成抓取、搬运等基础操作。视频里演示的抓坤动作其实是五个舵机按特定时序运动的结果。下一步计划增加IMU实现姿态稳定移植FreeRTOS优化任务调度开发视觉识别功能完整工程已开源包含双STM32完整代码Keil工程微信小程序源码3D打印模型文件硬件原理图立创EDA注具体开源链接因平台规则不便展示需要可私信获取记得第一次调试时两个单片机死活不通信后来发现是上拉电阻没焊。这种分布式系统就像团队合作每个成员都要各司其职沟通渠道更要保持畅通。现在看着小车灵活地跑来跑去有种老父亲般的欣慰——这大概就是硬件的魅力吧。