使用的模块包括:
- 电机驱动: 使用TB6612FNG模块,体积小巧,方便PCB制作。
- 平衡角测量: 使用MPU6050模块,网上有大量例程可供参考。
- 显示部分: 为了方便调试,我添加了IIC通信的OLED模块,主要用于显示角度信息。
- 遥控功能: 为了增加趣味性,我添加了蓝牙遥控功能。
- 超声波模块: 作为预留接口,PCB上也进行了相应设计。
- 电源: 使用两节18650电池,通过降压模块提供5V电压。
- 电机: 使用普通的TT马达,无需编码器和测速。
在调试过程中,我们使用洞洞板进行初步调试,确保功能实现后再制作PCB。PCB设计如下:
- 降压模块和开关位于四个角处,方便安装。
- 单片机中间预留了电池固定位置,便于安装和维护。
- 电机驱动和MPU6050模块置于右侧,确保平衡检测模块处于中间位置。
- 预留接口用于未来可能使用的超声波模块。
- 板子两侧设计缺口,方便安装电机。
软件方面,我们选择了STM32F103C8T6芯片。资源分配如下:

- 串口:用于连接蓝牙模块。
- 定时器:主要用于控制小车的平衡功能。
- IIC:用于OLED和MPU6050模块的通信。
在编程过程中,主函数主要用于外设初始化,而中断函数则负责控制小车的平衡。通过定时器每隔5ms中断一次,检测偏差和偏差变化率,分别使用直立环、速度环和转向环控制,得到PWM信号赋给电机。通过蓝牙模块修改角度差,控制小车直行或转向。