基于STM32的智能小车控制系统设计与实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于STM32的智能小车控制系统设计与实现
摘要针对以往智能小车存在自动循迹时失误率高、自动避障时不灵敏、测距精度低、只能在固定的轨迹上行驶等缺点,研制了一种基于STM32单片机的带有蓝牙功能与语音控制功能的小车控制系统。
在小车底部的两侧位置等距安装两路红外对管,确保了小车自动循迹的正确率;测试结果表明,超声波模块的避障功能大约在距离障碍物20cm处可以实现,蓝牙模块的通讯距离最远能达到29米,语音模块的控制最大灵敏度距离可达到15厘米,该系统具备了自动循迹、自动避障、蓝牙无线遥控和语音控制的功能。
关键词智能小车;STM32单片机;蓝牙;语音;红外对管;超声波
前言
智能小车是典型的高新技术综合体,它推动了传感器技术、人工智能技术、自动控制技术、无线遥控技术的迅速发展。
智能化是现代社会的新产物,在小车上安装相应传感器,无须人为管理就能使小车实现自动循迹、自动避障的功能;此外,越来越多的产品融入了语音控制功能,由人声通过语音模块来控制小车,不仅能给生活带来乐趣,还可以使得小车在紧急或突发情况时迅速改变小车的行驶状态。
因此,智能加遥控技术的研究和应用具有重大的意义,研究带语音功能的小车具有广阔的市场价值。
近年来,国内外科研人员对智能小车的研究正热情高昂,日本、德国等工业大国在无线遥控小车的研究技术上占据显著优势,我国对无线遥控小车的研究起步比较晚,与国际先进水平尚有一定的差距,但在相关科研单位的极力支持下,使之得到了迅速的发展。
文[1]提出了一种基于ATmega16单片机的智能小车,该小车实现的功能较少,仅仅能实现循迹和避障的功能,并且小车的行驶速度一定,离开设定的轨道后只能直线行驶,当遇到紧急情况时,不能迅速改变行驶状态,基于这些不足,文[2]提出了一种利用ZigBee技术实现无线遥控的方法,该技术采用ISM频段中的2.5G频率,其衍射能力弱,穿墙能力也弱,并且价格相对昂贵,抗干扰能力差,如果采用915M、869M信道则容易受射频干扰;提出了以凌阳SPCE061A单片机为核心的语音控制智能小车,主要通过各种传感器进行控制[3]。
综上所述,语音控制技术的应用具有显著的优势,可为固定的或移动的终端设备提供廉价的接入服务。
故本设计研究在小车上装上语音模块和蓝牙模块,不仅使小车能实现自动循迹、自动避障的功能,能使小车的行驶状态和速度灵活多变,用户也可根据自身需要进行选择。
此外,本设计采用低功耗的32位单片机STM32作为主控芯片,充分的降低了整个系统的功耗,大大提高了本设计的实用性和可靠性。
1 系统总体设计
智能小车总体设计方框如图1所示:由STM32单片机、HC-SR04藍牙控制模块、LD3320语音控制模块、红外对管循迹模块、超声波测距模块以及由无刷电机、N298、LM2596、LM339、MAX3232、CD4049等核心芯片及其外围电路等组成。
图1 系统总体框图
2 系统硬件设计
系统硬件部分由STM32F103系列单片机核心控制模块、HC-SR04蓝牙控制模块、LD3320语音控制模块、红外循迹模块、超声波避障模块组成。
2.1 LD3320语音控制模块
采用3.3V单片机进行工作,模块的管脚为G、RX、TX、5V;芯片内部有16位A/D转换器、16位D/A转换器和功放电路,麦克风、立体声耳机和单声道喇叭可以很方便地和芯片管脚连接,并且支持并行和串行两种连接方式;采用串口通信方式,语音控制功能的程序主要有指令识别和指令判别组成,程序的下载与STC系列单片机下载方法一致,采用USB转TTL下载器或者电脑串口转MAX232下载器进行下载程序。
2.2 HC-04蓝牙模块
蓝牙模块支持串口应用模型,只需要给模块上电,不配对的情况下,即可AT指令,通过AT指令可以使模块完成通讯、连接、释放等操作,在通讯连接状态下,除正常的Active模式外,还有三种低功耗模式-呼吸(Sniff)模式、保持(Hold)模式、休眠(Park)模式,本设计采用的是低功耗的呼吸(Sniff)模式。
当蓝牙接入后,通过单片机外接高频晶振,关闭频率锁定环FLL+等内部模块,将单片机节能模式设定到LPM3,并保持辅助时钟ACLK活跃,就可以响应蓝牙模块通过UART返回的数据和消息。
蓝牙模块建立连接后,当没有数据传输时,就将其工作模式置为PARK模式,当主设备(智能手机蓝牙终端)需要再次传输数据时,需要向从设备(蓝牙模块)发送退出PARK命令。
从设备退出PARK模式后,即可与主设备进行数据信息传输交换。
2.3 超声波避障模块
采用的是超声波避障,本设计针对智能小车采用多路传感器无法准确地对存在间距的障碍物执行避障操作后偏离轨道的缺陷,设计了一种三回路超声波传感器避障的方法,通过对间距的计算和判断,使小车能在与障碍物不发生碰撞的情况下执行避障操作,并使小车回到原始方向。
小车与障碍物的距离:
(1)
式中,d为超声波避障模块与物体之间的距离,c为空气中超声波沿直线传播的速度,t为传感器测量的时间。
(2)
上式(1,2)为避障距离的计算公式,其中d1为小车与障碍物的距离,D 为小车直径,为超声波发出的波束可测量的扇形范围。
设小车半径为R,则有:
(3)
所以超声波避障模块与障碍物距离应为Max(R,d1)。
3 系统软件设计
分别将四个功能定义不同模式,语音、蓝牙、避障、循迹分别为模式1、模式2、模式3、模式4,S1按键使用定时器3来进行中断设置,时钟的选择为APB1的两倍,而APB1为36M。
系统上电后首先进行各个模块的初始化设定,包括端口的初始化配置和寄存器的初始化配置。
采用定时器输出一定频率固定且占空比可调的PWM信号来控制小车行驶的速度,通过配置寄存器设定PWM信号的频率为1KHZ,通过配置两个不同的寄存器来改变两路PWM信号的占空比从而改变小车行驶的速度;系统上电默认的是语音功能,对于语音模块蓝牙模块的初始化配置中,首先进行模块的端口配置,进而初始化串口配置,设定波特率的值为9600bps,并允许串口的发送和接收中断;语音模块和蓝牙通讯共用一个PI口,为PA9和PA10端口,基本配置也相一致,超声波测距避障需用到定时器A的计数溢出中断,故对定时器A进行初始化配置,采用增计数模式,允许定时器3的溢出中断;而初始配置小车为前进行驶,程序运行完系统的初始化后,继而进入while主循环中进行各个模块的数据处理。
4 实验结果与分析
智能小车实物样机包括小车模板部分、STM32单片机、语音控制模块、蓝牙通讯模块、超声波避障模块、红外循迹模块和电源。
在湖南城市学院创新创业楼第五实验室进行测试。
按下按键S1可切换各功能,上电默认语音功能,接下来每按一次依次是循迹功能、避障功能、蓝牙功能,各模块的切换反应时间大约为1s。
主要测试小车的语音控制功能、蓝牙控制功能、超声波避障功能以及红外循迹功能。
4.1 语音控制测试
上电默认语音功能,指示灯D4亮绿灯,此时可进行语音模块测试,测试时应尽量保证电池满电,语音模块对电压要求比较高,电池用久了可能导致语音识别不灵敏。
本次测试的主要内容为①能否通过语音控制模块进行前进、后退、加速、减速、左转、右转和停止等行驶状态的转换;②不同口音对小车行驶是否有
影响;③每次行驶状态之间的转换需要多久的响应时间;④通过语音控制小车的极限距离有多远。
测试结果表明:不同口音对小车语音控制有很大影响,只有普通话的指令才能使小车按照指令行驶,语音控制小车的极限距离为15厘米,当超过15厘米时小车将不能按照指令正常行驶。
4.2 蓝牙控制功能测试
首先在智能手机上安装BlueToothC提示安装成功后,打开该软件,将模块的TXD端连接单片机的串口接收引脚,RXD端连接单片机的串口发送引脚,此时给安装在小车上的蓝牙模块上电,这时模块进入AT命令响应状态,蓝牙模块红灯闪烁,程序中完成了对蓝牙模块的初始化配置后,即会自动搜索周围的蓝牙设备进行配对,这时若手机搜索到蓝牙模块后即会提示输入密码,本设计所用到的蓝牙模块的密码为1234,输入密码配对成功后,界面即提示与手机蓝牙连接成功。
本次蓝牙模块测试的主要内容有:①能否通过手机的蓝牙功能遥控小车进行前进、后退、加速、减速、左转、右转和停止等行驶状态的转换;②每次行驶状态之间的转换需要多久的响应时间;③通过蓝牙遥控小车的极限距离有多远。
为此笔者给小车铺设了一条专用的测试轨道,为藍牙遥控小车前进、后退和转弯测试,表记录了手机终端与小车终端之间的距离对蓝牙通信的影响。
程序中设定小车初始状态停止,当蓝牙模块与手机连接成功后,按界面左半部分的按钮,智能手机的蓝牙功能模块将会发送特定的指令给小车终端,小车终端再对该指令进行判断和处理,进而使小车按照指令行驶。
测试结果表明:各项功能测试均正常,在正常的通信距离范围之内时蓝牙模块的响应时间极短,蓝牙遥控小车的极限距离为29米,当超过29米时小车将不能正常和手机进行蓝牙通讯。
4.3 超声波避障功能测试
首先将一块纸质挡板置于小车正前方,挡板距小车的初始距离为30cm,启动电源,系统执行超声波测距子程序,当小车做出避障行为时,测量并记录小车与挡板距离,调节挡板距小车的位置,再次测量,以此循环。
由表中可以看出小车距挡板20厘米以内时,小车皆可做出避障行为;当小车距挡板超过25厘米时,小车无法做出避障行为,可知小车可在20厘米以内任何时候做出避障行为。
4.4 红外循迹功能测试
为了对小车进行循迹测试,笔者为小车铺设了三条专用“轨道”,分别为直线轨道、半圆形轨道和“S”形轨道,轨道采用的是在白纸上贴上黑胶布的方法。
在小车下前方有两路红外循迹模块,左右两边的红外循迹模块各自向两边倾斜,左两路红外循迹夹角约为45度,经过这样的布局后,小车在行驶的过程中就只可能存在一个传感器能检测到“黑色轨道”,有效避免了小车在循迹的过程中存在两个同时检测到轨道的现象,提高了小车循迹的成功率。
小车检测到轨道后即开始
执行循迹子程序,每条轨道让小车循环行驶3次,小车中途跑出轨道后认为失败,顺利从起点到达终点认为成功,记录的数据如表所示。
从表中可以看出,对于直线和半圆形轨道,小车能可靠、稳定的循迹行驶,而对于“S”形轨道,小车循迹的成功率能到达75%,小车基本完成了循迹的功能。
5 结束语
本次设计的带语音控制功能和蓝牙功能小车控制系统具有很好的实用性和广阔的应用价值,设计采用低功耗的STM32F103单片机作为系统控制芯片,充分的降低了系统的功耗。
小车能按照人声指令与蓝牙指令行驶,在未接收到人声以及蓝牙指令时,小车能自动的完成循迹、避障的过程,当小车接收到手机发过来的蓝牙指令或者人声发出的语音指令时,能迅速做出响应,改变当前的行驶状态,基本实现了预期的功能。
大大提高了小车应对不可控因素影响的能力。
参考文献
[1] 寸晓非.基于飞思卡尔的智能循迹车设计[J].荆楚学院报,2012,4(1):1-4.
[2] 王洪锋,夏明飞,王坚.单片机与微机的远距离串行通信[J].电力自动化设备,2002,22(5):59-67.
[3] 冯平,张治中.多功能语音控制小车的设计与实现[J].数字通信,2009,36(01):87-89.
程水平(1996),女,学历:本科在读,研究方向:电子控制类技术。