基于STM32的智能小车(一)

## 基于STM32的智能小车

在假期自学了STM32,一直想做一个智能小车,刚好这次有时间就在家自己制作了这个基于STM32的智能小车,小车基本功能包括循迹、壁障及手机蓝牙控制,本人是第一次制作小车,有不对的,望大牛指教。

一、制作产品基本材料清单

	(1) STM32C8T6核心板				一块
	(2) L298N电机驱动					一个
	(3) HC-08蓝牙模块					一个
	(4) 红外壁障模块					两个
	(5) 红外循迹模块					两个
	(6) HY-SRF05超声波模块				一个
	(7) SG90舵机						一个
	(8) 电源转换模块					一个
	(9) 18650供电电池					两节
	(10) 带电机轮子的小车支架			一个	
	(11) 电子产品专用胶					一支
	(12) 蜂鸣器模块					一个
	(13) LED灯							若干
	(14) 六角铜柱、螺丝(为了固定各模块)若干

如果有朋友遇到,将别人的代码在自己的软件上运行出现不兼容的情况,可以参考一下这位大佬的方法:
Keil不兼容工程的解决办法

二、各 模 块 介 绍

  1. STM32核心板
    我在某宝上购买的带CH340的核心板,这款核心板挺好用的,下载程序方便,下载程序时需要先将BT0接高电平
    基于STM32的智能小车(一)_第1张图片
  2. L298N电机驱动;
    这个模块很简单,非常适合直流电机使用,当然要用步进电机的话就需要换一个驱动了,
    基于STM32的智能小车(一)_第2张图片
    买来的驱动都是已经设置好的,这里只需要接上12供电,这里我使用的是两节18650电池进行供电,IN1到IN4是驱动的4个输入信号通道,通道A是IN1和IN2的对应输出通道,通道B是IN3和IN4对应的输出通道,通道A正对人脸的左边是OUT1右边是OUT2,同理,通道B输出口正对人脸,左边是OUT3,右边是OUT4。
  3. HC-08蓝牙模块;
    基于STM32的智能小车(一)_第3张图片
    我是活动打折购买的初学者套餐,当时购买的时候花了8块钱,现在已经28了,还是比较值的,这个模块是非常好用的一款蓝牙模块,传输距离较前面几代产品有了很大的提升,使用时不需要管内部蓝牙是如何通行的,只需要会使用单片机的串口将蓝牙模块传输过来的数据接受并将数据通过串口发送给蓝牙模块,模块自动与手机进行数据传输。
    在这儿,需要提醒注意的时,串口的TX、RX与单片机的RX、TX交叉连接(即TX–>RX,RX–>TX)
    模块的KEY键和STA键一般情况不用接,只需要接VCC、GED、TX、RX即可。
  4. 红外模块;
    基于STM32的智能小车(一)_第4张图片
    基于STM32的智能小车(一)_第5张图片
    第一个是循迹模块,第二个是壁障模块,由于两个使用原理一样,我就一起介绍了。原理是:模块会发出红外光线,当前方有物体就会将发送出去的红外光线反射回来,当模块接受到反射的信号时就会输出低电平,为反射或反射信号太小模块输出一个高电平信号。
    循迹功能就是利用黑色会吸收红外信号使模块输出一个高电平,当系统检测到模块输出高电平时就可以控制电机做相应的转动了。
    同样的,红外壁障模块就是小车在靠近墙或者前方障碍物时,模块接收到反射的红外信息输出一个低电平控制小车。
    第一个循迹模块的A0端口一般情况不接,第二个红外壁障模块的接线方法与循迹模块一样的:
    VCC–>VCC GND–>GND OUT(D0)–>单片机I/O引脚
  5. HY-SRF05超声波模块;
    基于STM32的智能小车(一)_第6张图片
    基于STM32的智能小车(一)_第7张图片
    基本工作原理:
    (1)采用IO口TRIG触发测距,给最少10us的高电平信呈。
    (2)模块自动发送8个40khz的方波,自动检测是否有信号返回;
    (3)有信号返回, 通过IO口ECHO输出一个高电平, 高电平持续的时间就是超声波从发射到返回的 时间。 测试距离=(高电平时间*声速(340M/S))/2。
  6. SG90舵机;
    基于STM32的智能小车(一)_第8张图片
    深入了解可以参考一下这位博主的:SG90舵机详细介绍
    接线说明:
    橙色–>信号线  
    红色–>正极 
    棕褐色–>负极
    控制说明:
    舵机的控制需要一个20ms的时基脉冲,该脉冲的高电平部分一般为0.5ms~2.5ms范围内的角度控制脉冲部分:
    t = 0.5ms——————-舵机会转动 0 °
    t = 1.0ms——————-舵机会转动 45°
    t = 1.5ms——————-舵机会转动 90°
    t = 2.0ms——————-舵机会转动 135°
    t = 2.5ms——————-舵机会转动180°

我设置的是在转90度的时候作为舵机的正前方,这样就能实现让舵机左右转了。
好了,经过上面的分析我们可以开始写程序了,思路如下:
利用定时器输出一个占空比可调的pwm,且这个pwm的周期为20ms。
7. 电源转换模块;
基于STM32的智能小车(一)_第9张图片
在某宝上搜索电源模块就出来了,价格不贵,几块钱,买的时候最好多买一个,这个模块比较娇贵,线路接错就烧坏了。
可以提供5V、3.3V电压输出,还有一个输出接口的电压值与输入电压值一样,这个口我拿来给电机驱动L198N供电。
8. 18650供电电池。
基于STM32的智能小车(一)_第10张图片
购买的时候建议,购买两节18650电池、装在小车上的电池盒以及电池充电器,这是一个可充电电池,以便循环使用。
10. 小车底盘支架
基于STM32的智能小车(一)_第11张图片
这是我购买的小车底盘套件,质量杠杠的,买小车赠送的电池盒没用上,我自己又买了一个配合18650电池的电池盒。

二、 程序介绍

你可能感兴趣的:(单片机,stm32,蓝牙,物联网,人工智能)