名称 用到的外设 所需模块
stm32循迹避障蓝牙小车 | USART串口->HC-05蓝牙 TIM定时器 ->PWM输出 ->TB6612 ->GS90 ->PWM输入捕获 ->SR04 I2C->OLED ADC->ADC采集电压 | C8T6主控 12-5v稳压模块 TB6612电机驱动 SR04超声波 TCRT5000红外 HC-05蓝牙模块 GS-90舵机 直流无刷电机 0.96’OLED |
TB6612
AIN1
AIN2
BIN1
BIN2 四个引脚(0或1)控制电机正反转 或停止
PWMA
PWMB 两个引脚控制(占空比越大越快)电机转速
使用思路:同一侧电机使用AIN1与AIN1,另一侧使用BIN1和BIN2,因为只用到一个电机驱动模块注意同侧的两个电机接法相反 ,左转,左轮倒转,右轮往前。。。
SR04
Trig引脚触发信号:低跳变到高 ,并且高电平时间要大于10us,模块内部发出8个40KHz的周期电平,如检测到回波,则输出回响信号,脉冲宽度与测的距离成正比
Echo 引脚回声信号:输出给GPIO一个高电平,高电平持续时间就是发射到返回的时间
使用思路:GPIO给 Trig 一个大于10us的高电平,通过delay_us(13)实现,此时模块发射超声波(40KHz),检测到回波后,Echo会给单片机输入高电平,用单片机TIM进行输入捕获 计算得出高电平的时间,根据声音在空气传播的速度:
c=(331.45+0.607*T) T为摄氏度
0摄氏度:330.45m/s
20摄氏度:342.62m/s
40摄氏度:354.85m/s
结合公式:S=声音传播速度*时间/2
如需精确需要进行温度补偿,0-40度内误差7%;
TCRT5000红外光电传感器
红外二极管发射红外线,当发射出来的红外线感应没有被反射回来或者 反射的红外线过弱,光敏三极管的基极无电压 或者过小,光敏三极管断开,模块DO(数字)引脚输出低电平,指示LED灯熄灭,反之….
推荐安装位置距被测位置为37mm,最佳检测距离为2.5mm
使用思路:GPIO为输入模式,判断GPIO高还是低电平,如果为低,说明遇到黑色(黑色吸收红外线最多),使小车向该传感器反方向转;
HC-05蓝牙模块
HC-05,通电前按住模块上按钮 可以进入AT模式,用电脑USB,CH340转TLL电平用USART通信方式 给模块发送AT指令,可以改变蓝牙密码,通信波特率等等。
使用思路:同过手机给蓝牙模块发送 字符, 蓝牙模块 通过 USART与STM32通信
stm32启用USART中断服务函数来判断,字符,从而设置小车模式,一位行进方向.
失误总结
- 在调试舵机的时候发现,用一个有BUG的工程(很可能软件配置有问题)去产生PWM波形,舵机无反应,接示波器发现按正确公式(舵机使用周期在20ms)推导出来的TIM的ARR和PSC设置,在此工程文件中无法产生正确的波形(周期x10倍),将TIM配置文件转移其他工程发现可以产生正确的周期20ms的PWM波形。
舵机损坏一个
- PCB与模块焊接存在虚焊现象,在调试蓝牙时候最终发现了这一点,以后焊接一定要认真,防止找bug找半天浪费时间!!
- 焊接时候一定 要将焊锡渣清理干净,防止PCB短路!!!(损失惨重)