【项目总结】stm32红外循迹蓝牙超声波小车

       名称                                   用到的外设                                所需模块

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中断服务函数来判断,字符,从而设置小车模式,一位行进方向.

失误总结

  1. 在调试舵机的时候发现,用一个有BUG的工程(很可能软件配置有问题)去产生PWM波形,舵机无反应,接示波器发现按正确公式(舵机使用周期在20ms)推导出来的TIM的ARR和PSC设置,在此工程文件中无法产生正确的波形(周期x10倍),将TIM配置文件转移其他工程发现可以产生正确的周期20ms的PWM波形。

        舵机损坏一个 

  1. PCB与模块焊接存在虚焊现象,在调试蓝牙时候最终发现了这一点,以后焊接一定要认真,防止找bug找半天浪费时间!!
  2. 焊接时候一定 要将焊锡渣清理干净,防止PCB短路!!!(损失惨重)

你可能感兴趣的:(单片机,stm32)