Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

STM32 麦克纳姆轮小车

STM32 Platform License

基于STM32F103RCT6的四驱麦克纳姆轮小车,支持PS2手柄控制和舵机控制

中文 | English

功能特性

  • 麦克纳姆轮底盘:四轮驱动,支持全向移动
  • 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

PS2手柄 (SPI1)

信号 引脚
DAT PA7
CMD PA6
CS PA4
CLK PA5

舵机控制 (TIM1)

舵机 引脚 通道
夹爪 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项目文件

快速开始

1. 克隆仓库

git clone https://github.com/yourusername/stm32_car.git
cd stm32_car

2. 打开项目

  • STM32CubeIDE: 导入现有项目
  • Keil MDK: 打开 .uvprojx 文件(如果可用)
  • STM32CubeMX: 打开 Demo.ioc 修改硬件配置

3. 编译项目

# 使用STM32CubeIDE命令行
stm32cubecli build -c stm32_car

# 或在IDE中直接编译

4. 烧录固件

# 使用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输出
  • 确保方向控制引脚配置正确

PS2手柄不工作

  • 检查SPI时钟频率(应为250kHz)
  • 验证CS引脚切换
  • 确保PS2接收器供电(3.3V)

舵机抖动

  • 检查PWM频率(应为50Hz)
  • 确保电源稳定
  • 验证舵机信号连接

贡献

欢迎贡献!请随时提交Pull Request。

  1. Fork本仓库
  2. 创建您的特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交您的更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 开启一个Pull Request

许可证

本项目采用MIT许可证 - 详见 LICENSE 文件

致谢

  • STMicroelectronics的STM32 HAL库
  • PS2手柄协议参考
  • 麦克纳姆轮运动学

作者

@jphJack

参考资料


由STM32爱好者用 ❤️ 制作

About

stm32遥控小车,可以控制车辆和车上的机械臂抓

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages