- 麦克纳姆轮底盘:四轮驱动,支持全向移动
- PS2手柄支持:通过PS2无线手柄进行遥控
- 舵机控制:集成夹爪和机械臂控制
- PWM电机控制:四个电机精确调速
- 定时器控制逻辑:高效的中断驱动控制系统
- HAL库:基于STM32 HAL库开发,易于移植
- MCU: STM32F103RCT6
- 内核: ARM Cortex-M3
- Flash: 256KB
- RAM: 48KB
- 封装: LQFP64
- 4个直流电机配麦克纳姆轮
- 1个PS2无线手柄接收器
- 2个舵机(SG90或类似型号)
- 电机驱动模块(L298N或TB6612)
- 电源(建议使用7.4V-12V锂电池)
| 电机 | 方向控制引脚 | PWM引脚 |
|---|---|---|
| 电机1 | PB11, PB10 | PC8 |
| 电机2 | PB13, PB12 | PC7 |
| 电机3 | PB15, PB14 | PC6 |
| 电机4 | PB1, PB0 | PC9 |
| 信号 | 引脚 |
|---|---|
| DAT | PA7 |
| CMD | PA6 |
| CS | PA4 |
| CLK | PA5 |
| 舵机 | 引脚 | 通道 |
|---|---|---|
| 夹爪 | PA9 | TIM1_CH2 |
| 机械臂 | PA11 | TIM1_CH4 |
- IDE: STM32CubeIDE / Keil MDK / IAR EWARM
- 编译器: ARM GCC / ARMCC
- STM32CubeMX: 用于硬件配置
- HAL库: STM32F1xx HAL驱动
stm32_car/
├── Core/
│ ├── Inc/ # 头文件
│ │ ├── main.h
│ │ ├── gpio.h
│ │ ├── spi.h
│ │ ├── tim.h
│ │ └── stm32f1xx_it.h
│ └── Src/ # 源文件
│ ├── main.c
│ ├── gpio.c
│ ├── spi.c
│ └── tim.c
├── User/ # 用户应用代码
│ ├── Motor.c/h # 电机控制
│ ├── Control_logic.c/h # 控制逻辑
│ ├── Servo.c/h # 舵机控制
│ ├── ps2.c/h # PS2手柄
│ ├── Hardware_Config.c/h # 硬件配置
│ └── delay.c/h # 延时函数
├── Drivers/ # STM32 HAL驱动
└── Demo.ioc # STM32CubeMX项目文件
git clone https://github.com/yourusername/stm32_car.git
cd stm32_car- STM32CubeIDE: 导入现有项目
- Keil MDK: 打开
.uvprojx文件(如果可用) - STM32CubeMX: 打开
Demo.ioc修改硬件配置
# 使用STM32CubeIDE命令行
stm32cubecli build -c stm32_car
# 或在IDE中直接编译# 使用STM32CubeProgrammer
STM32_Programmer_CLI -c port=SWD -w build/stm32_car.hex -v
# 或使用ST-Link Utility小车支持多种移动模式,通过PS2手柄控制:
- 前进/后退: 左摇杆Y轴
- 左移/右移: 左摇杆X轴
- 旋转: 右摇杆X轴
- 夹爪控制: L1/R1按键
- 机械臂控制: L2/R2按键
电机速度和方向通过PWM和GPIO引脚控制:
// 示例:设置电机速度
Motor_SetSpeed(&mecanumChassis, motor1, speed);
// 示例:控制麦克纳姆轮移动
Mecanum_Move(&mecanumChassis, vx, vy, omega);舵机位置可根据不同应用场景调整:
// 夹爪控制
Servo_ClampingJaw(ON); // 闭合
Servo_ClampingJaw(OFF); // 张开
// 机械臂控制
Servo_Arm(UP); // 抬起机械臂
Servo_Arm(DOWN); // 放下机械臂项目使用STM32CubeMX进行硬件配置。关键设置:
- 系统时钟: 72MHz
- SPI1: 250kHz用于PS2通信
- TIM1: 舵机PWM生成(50Hz)
- TIM2: 编码器接口(如使用编码器)
- TIM6: 控制循环定时器(1ms周期)
- TIM8: 电机PWM生成(20kHz)
- 检查电机驱动电源
- 用示波器验证PWM输出
- 确保方向控制引脚配置正确
- 检查SPI时钟频率(应为250kHz)
- 验证CS引脚切换
- 确保PS2接收器供电(3.3V)
- 检查PWM频率(应为50Hz)
- 确保电源稳定
- 验证舵机信号连接
欢迎贡献!请随时提交Pull Request。
- Fork本仓库
- 创建您的特性分支 (
git checkout -b feature/AmazingFeature) - 提交您的更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启一个Pull Request
本项目采用MIT许可证 - 详见 LICENSE 文件
- STMicroelectronics的STM32 HAL库
- PS2手柄协议参考
- 麦克纳姆轮运动学
由STM32爱好者用 ❤️ 制作