Skip to content

STM32+蓝牙模块HC-05 组成的遥控小车

Notifications You must be signed in to change notification settings

Janet-Baker/stm32car

Repository files navigation

STM32遥控车

项目使用了HAL库,所以可以很方便的移植。

硬件环境

  • 开发板芯片:STM32F103VCT6
  • 遥控芯片: 蓝牙HC-05
  • 电机: 4个步进电机(坑死人了) 理论可用0-100kHz,建议8-16kHz
  • 电机驱动: 每个轮子输入1路PWM信号,1路方向信号

软件环境

  • 配置生成:STM32CubeMX
  • 代码编写:Jetbrains CLion
  • 调试:ST-Link V2, Keil μVision5

项目结构

  • Core: STM32CubeMX生成的代码,也是需要完成的代码。
  • MDK-ARM: MDK-ARM工程文件

针脚分配

  • 电机驱动:TIM3_CH1(PA6), TIM3_CH2(PA7), TIM3_CH3(PB0), TIM3_CH4(PB1)
  • 电机方向控制:PE7, PE9, PE11, PE13
  • 光电传感器:PE3, PC3, PA1
  • 与蓝牙模块通讯(也可以换成Wifi模块或上位机):UART4, Baud rate 9600: TX(PC10), RX(PC11) 启用了DMA

指令格式

使用HEX发送,最大长度为17个字节(usart.h中指定的rx_data_length),第0字节为指令前缀,第1-4字节每个字节代表一个轮子的方向,第5-16字节表示速度。

命令前缀:

  • M:持续移动(Move);
  • H:停止(Halt,默认状态);
  • E:回传(Echo);
  • P:已打包的命令(Packaged)

M指令——持续移动

正反转:0:正转;1:反转

⚠ 注意,轮子的正反转是相对电机的,不是相对于整车的

PWM范围:0-9 数值越大转的越快

例:

发送0011 9999(无空格), 意为持续移动命令 1号轮子正转, 2号轮子正转, 3号轮子反转, 4号轮子反转, 速度9,速度9,速度9,速度9

E指令

发送E(无空格), 意为回复消息,会回复接收缓冲区的后16字节(rx_data + 1)。

H指令

发送H(无空格), 意为停止,会停止所有电机。

P指令

注意,P指令需要根据不同的小车进行更改

  • PQ 向前移动
  • PH 向后移动
  • PZ 原地逆时针旋转
  • PY 原地顺时针旋转
  • PL 向左前方行驶
  • PR 向右前方行驶

备注

外部高速时钟 时钟频率 7210241024=75497472Hz

令预设 CCR=9,ARR=18 => PSC=4194304 又因为PSC最大65536,取PSC=16

所以CCR=964=576, ARR=1864=1152

所以频率为75497472/16/1152=4096Hz

About

STM32+蓝牙模块HC-05 组成的遥控小车

Resources

Stars

Watchers

Forks

Languages