【《基于STM32的智能四驱小车结构设计》14000字】_第1页
【《基于STM32的智能四驱小车结构设计》14000字】_第2页
【《基于STM32的智能四驱小车结构设计》14000字】_第3页
【《基于STM32的智能四驱小车结构设计》14000字】_第4页
【《基于STM32的智能四驱小车结构设计》14000字】_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PAGEPAGE46基于STM32的智能四驱小车结构设计摘要智能四驱小车,轮式小型机器人,它们最适合在人类无法完成工作的环境条件中开展工作,并且该技术应用广泛,不仅可以应用在无人驾驶的机动车中,还可以应用于无人生产线以及服务机器人这些领域。近些年来机器人的智能水平正在不断提高,并且在以快速的方式改变着人们的生活方式。在智能车辆的研究领域中,智能四驱小车行驶功能的研究将会对其研究有很大帮助。智能车辆驾驶任务的自动完成,将会给人类社会进步带来很大的影响。智能四驱小车作为机器人的代表,它需要实现自动避障功能就需要感知到出现的障碍物,并且自动识别所处的路线等。但是随着计算机、微电子技术、自动控制、人工智能等相关领域的发展,智能四驱小车对我们以后的生活和科学研究一定会发挥很重要的作用,而且在之后的车辆自动行驶,深海自动探测和飞船自动航行等方面都会有很大的科研价值。本次设计是基于STM32的智能四驱小车,主要有黑白循迹功能,超声波避障功能,进行障碍物检测并避障,电机驱动功能模块。还有手机App蓝牙控制小车前进,右转,左转,后退,超声波避障,黑白循迹。并且使用Keil软件进行C语言编程。关键词:四驱小车;传感器;STM32;C语言目录TOC\o"1-3"\h\u1引言 11.1课题研究目的和意义 11.2研究现状和发展趋势综述 11.3研究的主要内容以及写作安排 22硬软件相关技术简介 32.1STM32开发板 32.2红外反射传感器 42.3HC05蓝牙模块 42.4超声波传感器HC-SR04模块 52.5C语言 52.6KeiluVision5开发环境 63需求分析 83.1需求分析概括 83.2可行性分析 83.2.1技术可行性 83.2.2经济可行性 83.2.3操作可行性 83.3功能需求分析 83.4输入输出需求分析 93.5性能需求分析 94系统设计 104.1总体设计思路 104.2主要功能设计 105系统实现 145.1环境搭建 145.2各模块的实现 155.2.1黑白循迹模块 155.2.2超声波避障模块 185.2.3蓝牙模块 275.2.4电机驱动模块 395.3最终效果展示图 436项目运行调试 466.1调试目的 466.2调试主要内容 466.3调试发现问题 466.4项目展望 477总结 48参考文献 501引言1.1课题研究目的和意义智能四驱小车通过不同的环境传感器来获取内部运行状态和外部环境的信息,以便于小车能够在复杂的环境中实现其自动行驶,从而可以完成机器人系统中的一些特定功能。但是当代智能家居的出现,它们提供给人类舒适居住环境的同时,也提高了对制造这些智能家居的高科技人才的需求。智能四驱小车包含了很多高新技术,其中不仅有传感器、电子、计算机硬件、软件等多个学科的基础知识结构体系,而且还涉及许多先进领域和新兴产业的技术,此外它还是一个民族和国家对于高科技技术水平的重要表现。我们通过建立起简单的智能四驱小车的开发板设计,从而使我们由理论逐渐走向实际,不仅训练了我们的独立思考能力和实际操作能力,使我们在充分掌握智能电器工作原理的基础上,让我们能更好地掌握完成整个开发板项目的技巧,并掌握STM32开发板的程序编写规则,对于我们进入ARM领域提供了基础知识。1.2研究现状和发展趋势综述智能四驱小车是集通信,避障,传感,人工智能控制,计算机等技术于一体的高科技综合产物。目前,就全球的智能车探索而言,智能车的研究来自上世纪70年代Shakey的自走式机器人[1],该机器人是由斯坦福大学研究所的Nilssen和charlesRoesn等著名科学家合作开发的。智能机器人的出现和对太空研究的需求促使许多科学家研究智能车辆。我国正处于政治和经济蓬勃发展的时期,这将为智能车研究提供巨大希望。智能机器人的研究涉及到很多方面,既完整又复杂,对于智能机器人而言,智能小车的体验会在一定程度上影响智能机器人的作用。在不断发展的商业世界[2],电子技术发展的环境中,对智能车的研究正变得越来越成熟。目前,市场上到处都是玩具遥控车,工厂用的智能车,避障小车等。智能车技术可以概括如下:(1)智能避障,利用红外,超声等传感器来检测行车大概行驶的位置,并对车辆附近,即将碰撞等发出警告,能避免碰撞,以及保持车辆安全,避免磨损。(2)智能检测,警告驾驶者越道行驶,闯红灯,以及不规则驾驶,酒后驾车,超速等,予以警告。(3)智能行驶,这种技术具有很高的复杂性,很难在如今推广。不仅需要随时监视汽车周围的环境,而且还要能够做出智能的判断。这类技术常用于军事领域,例如军事监察,智能小车具有体积小,反侦察能力强,记录信息大,便于携带,适应性强等特点。应用在飞机飞行领域应用上,如无人侦察机,月球探测器等。(4)智能安全,智能系统能够定期自动扫描并且验证车体安全性,并消除潜在的危险,如果仍未解决,它将发出提醒并提供合理解决方案。(5)智能家居,可以由智能小车的控制技术扩展到对日常家居电器的控制,实现智能化家居。1.3研究的主要内容以及写作安排智能四驱小车上的各个传感器通过对外部环境的感知,将信号传送到STM32微控制器中,STM32相当于是人体的大脑,开始处理这些信号,从而做出不同的判断,继而控制四驱小车的电机驱动转向,也可以通过建立起手机App与四驱小车的蓝牙通信,从而在手机端控制小车。本文写作安排如下:开篇说明本文选题意义以及发展趋势,并介绍了研究的主要内容。第二节主要是硬件和软件相关技术的介绍。第三节主要是对整个设计进行的需求分析,从技术,经济,操作上简单进行需求分析。第四节主要是对系统的一个总体设计,包含各模块设计流程图。第五节主要是设计的实现,从软件环境搭建,软件程序的实现,到硬件调试,对主要几个功能模块进行实现。第六节主要是进行运行调试,在可以完成基本功能前提下,进行调试运行,发现问题,以及对本次设计未来的展望。最后对整个设计内容进行总结,并致谢帮助过我的人。

2硬软件相关技术简介2.1STM32开发板单片机[3]是一种微型的中央控制集成单元,把能够具有数据整理的CPU以及输入输出接口存储器,定时器模拟,数字转换电路等多种功能的电路集成在一块芯片上。单片机内部构造简单,成本低廉,在一些微型的控制领域得到了较广的应用。STM32是一种功能强大的32位嵌入式单片机,对STM32可利用库文件进行编程,编写的程序具有较好的移植性,便于对程序中出现的问题进行查找。STM32是一种嵌入式单片机[4],具有集成度高,容易开发,功能齐全,功耗低并且成本较小的优点;STM32可以具有多个接口,与外在的通信端有多种通信的方式,可以通过与多个传感器相连,对外在的多种设备进行控制。STM32相比于其他的单片机而言价格更低并且具有丰富的外设功能,能够对控制信息进行实时性的数据的输入和输出。本设计主要选择的是STM32F103[5]芯片,并对其进行控制系统开发,STM32具有多个外设接口,CPU运算速度可以高达72MHz。STM32具有较快的运算速度,能够缩短产品的开发周期,并且由于库程序文件的存在,STM32软件程序开发成本较低,并且程序的升级换代也更加快捷。对于开发者来说,库文件的存在有利于开发者对STM32单片机的学习,缩短了学习时间,降低了STM32开发者学习的门槛,提高了开发者的学习效率。开发者可以根据STM32提供的库文件,根据用户开发出各种需要的控制功能。图2-1STM32F103引脚图2.2红外反射传感器红外线传感器是一种能够检测到目标红外线辐射,并且能使用红外线的物理属性执行检测的传感器。至于它们所研究的机制大致可以划分为两种:即光子检测仪和温度检测仪。红外传感器技术已被广泛应用于各种现代科学、国家安全和工农业等领域。由于红外线技术被广泛地应用于高速的测速控制系统中,许多产品都使用了红外线技术来对车辆测速和检查探测。将红外光源应用于计算机的速度和测量领域时,最难以克服的问题是来自各种包含红外辐射的光源(如强烈的阳光)的干扰。外界光源使红外技术应用在野外产生了困难。红外技术是众所周知的,并且该技术被广泛应用于现代技术、国家安全技术、工农业技术和其他领域。红外传感器系统主要是一种以红外辐射为中介的测量系统,根据它们的功能大致可以划分为五类:(1)红外辐射计,用于红外辐射和光谱的测量;(2)区域搜寻监视系统,用于实时定位和追踪红外探测器的目标,确定该区域的地理位置并实时追踪其移动;(3)热成像系统,其主要功能是可以实现产生目标靶的红外辐射图像;(4)红外线测距,红外线可以进行测距,并且还能够和外端进行通信。红外反射传感器主要是利用红外线的反射原理制成的一种传感器器件,系统根据红外射线反射的强度值来确定前方车道障碍物存在与否。当与目标测量的距离适中时,其中的测量准值就比较高。因为它们采用的是红外线,因此其光的抗干扰性和稳定性非常好。这进一步保证了智能四驱小车的工作稳定性。本设计中,智能四驱小车使用红外反射传感器来检测黑线,进行循迹。2.3HC05蓝牙模块(1)蓝牙串口HC05是一种主从一体的通信串口模块,简单地来讲,当你在一个蓝牙串口设备和另一个蓝牙串口设备之间进行通讯配对并且将其连接成功后,我们就不用考虑蓝牙内部具体协议,不用考虑他们之间是怎么建立起来的通讯,直接拿来作为串口使用。例如,当两个设备之间已经建立了通讯连接,它们共同使用同一个串口,一个设备发送数据到该串口中,另一个设备从该串口中接收数据,配对后只要把串口通信设备当成一个固定波特率的串口通信设备,就可以直接进行使用配对。例如工业数据采集,智能化的小车,串口式智能打印机,户外点阵多线条屏幕的控制等。(2)与平板电脑进行配对的使用:适合于手机跟计算机设备之间,通过无线或者蓝牙串口进行通信,使用的方法和串口一样。(3)与蓝牙主机的配对方式使用:适合两个设备直接通过蓝牙串口进行通信,比如说单片机和单片机之间,使用的方法和串口一样。(4)变通设备信号的变换使用:由于波特率变换是一种信号变换,因为信号接收端和发送端可以选择各自的波特率,在设备信号发送数据量较小的这种情况下也同样可以将其作为一个波特率来对设备信号进行变换使用。2.4超声波传感器HC-SR04模块该模块使用方法简单,简单来讲,就是在控制口发送一个高于10us的高电平以后,一旦我们在接收口接收到高电平信号,就立即打开定时器,当信号变为低电平的时候,读取定时器的值,该值就是测距的时间,通过该值算出距离,然后经过不断的周期性检测得到最终移动的值[6],下面是三种测距方式:(1)采用输入输出端口进行测距。(2)超声波传感器模块可以发送多个40kHz的频率方波,可以根据信号发射及返回所耗费的时间,进而对传感器和故障之间的距离进行测量。(3)超声波传感器可以自动检测到返回的信号,通过输入输出接口将检测到返回信号的时候,在出口处输出一个高电平的电信号,进而就可以通过检测到的信号与发射到的信号之间的一个时间差值进行测距。图2-2超声波时序图2.5C语言C语言是由贝尔实验室开发出来的一种十分基础,但是功能强大的计算机编程,C语言具有高级语言和汇编语言的特点,常用来作为底层的编程语言,具有较好的移植性,在大中型以及微型计算机上得到了广泛的应用。随着控制领域技术的不断发展,C语言技术逐渐开始应用到嵌入式控制领域当中,丰富了C语言开发的应用市场,在机器人以及电影特效制作领域都具有广泛的运用。现在已经发展了多种计算机语言可以与C语言进行媲美,但是C语言仍然占有了最广大的市场份额,具有不可替代的重要性。尤其是在嵌入式编程领域中常见的嵌入式编程软件底层代码都是使用C语言进行编写的。C语言主要有以下方面的特点:(1)C语言简洁紧凑,方便灵活,编程形式自由。(2)C语言运算符种类较多,便于代码的多样化形式编写。(3)C语言具有丰富的数据类型,可以实现复杂的数据结构。(4)C语言拥有多种丰富的表达形式,对语法的限制并不严格。(5)C语言允许对物理地址直接使用指针的方式进行访问,便于对硬件进行直接的操作,在硬件编程领域中具有更广泛的应用价值。(6)C语言可以直接生成目标代码,目标代码执行的效率高。(7)C语言代码具有较好的可移植性,可在不同的硬件领域中直接使用相同的代码,或者进行少量的改写就可以实现运行。(8)C语言能够实现复杂的算法运算。通过以上分析可以发现C语言具有自己的特性,可以通过指针直接对单片机内存地址或者是寄存器地址直接进行访问,可以避免汇编语言不能跨平台的劣势,又能够提高编程的效率,因此本设计主要选择C语言作为硬件控制系统开发的计算机语言。2.6KeiluVision5开发环境C语言应用程序开发的软件工具是KeiluVision,该软件也是51系列单片机最主要的集成开发环境。通过该工具可以把目标程序的编辑,编译,仿真调试等功能集合于一体,支持多种51系列单片机的开发环境[7]。Keil开发软件除了能够直接开发C语言程序之外,还能够对开发出的程序进行仿真调试,极大的提高了软件程序的开发周期,提高了工作效率。本设计主要采用KeilMDKv5进行C语言控制系统的开发,该工具采用uVision5IDE集成开发环境。该开发环境使用简单,便于对工程的编辑以及调试进行统一化管理,具有较好的兼容性。KeilMDKv5相比上一代版本升级了对微控制器开发的支持端,对工具链库进行了升级,并且能够支持市场上新出现的芯片进行开发。uVision5IDE集成了开发环境编译器以及调试组件等,加速了软件程序的开发流程,我们后续会针对uVision5IDE集成开发环境做环境的搭建。3需求分析3.1需求分析概括软件系统开发最难的主要是将需要开发的内容通过软件代码的形式进行编译实现,在软件开发的时候需要建立技术文档,完成软件程序向用户以及机器的接口连接。软件程序开发的过程中一旦出现了错误,后续修改的时候会变得很复杂,其中最为棘手的就是软件程序与机器接口之间的接口问题,在进行本次四驱小车设计的过程中,针对目前四驱小车的研究现状进行准确的分析,避免在程序开发过程中造成经济损失以及时间上的浪费。我们对于用户的需求分析需要进行重视,在进行软件开发的过程中,需要花费时间精力对用户需求进行了解。如果没有正确体会用户的需求,会导致在软件开发的过程中设计出不符合用户需求的系统,会造成巨大的损失和浪费。3.2可行性分析3.2.1技术可行性本文是要设计一款基于STM32的智能四驱小车,四驱小车的驱动程序采用C语言作为编程语言。C语言是现在嵌入式开发系统的主流语言,具有兼容性好,可跨平台输出等功能,对四驱小车控制系统的开发更加高效,具有较好的发挥空间。3.2.2经济可行性开发STM32智能四驱小车,需要有一定的经济实力,针对其中的STM32四驱小车驱动控制系统的开发,在硬件上选用STM32开发板,因为STM32开发板性价比高,在经济上更加实惠;在软件层面上选用和STM32开发板配套的KeiluVision5开发环境。开发文件可以免费使用,从整体上降低控制系统开发的费用。3.2.3操作可行性智能四驱小车可以实现的功能有:黑白线循迹,超声波避障,以及手机App控制小车前进,后退等。所以说,该四驱小车在操作上是可行的。3.3功能需求分析本设计有以下三个功能:(1)黑白循迹,即小车根据红外反射检测地面黑线而行走。(2)超声波避障,小车能够根据地面黑线行走,遇到障碍物便停止,通过超声波检测障碍物方向,然后后退并左右转动离开障碍物区域。(3)手机App控制小车前进,左转,右转,后退,循迹,避障。第一个功能是主体功能之一,有了这个功能,可以让小车循着黑线行走。第二个功能是最常用的功能,在现实生活中,当遇到障碍物时,小车需停下避开障碍物行走。第三个功能则是对第一第二两个功能的扩充,通过建立与小车蓝牙通讯,在手机端可以控制小车的前进,左转,右转,后退,循迹,避障。3.4输入输出需求分析输入:本文开发的STM32驱动小车控制系统,不需要设计输入功能。输出:本文开发的驱动小车控制系统的输出功能主要是控制驱动小车完成一系列操作。3.5性能需求分析本设计开发的驱动小车控制系统性能要求高,STM32芯片和其他芯片相比,具有如下的特点:速度,速度优于89351系列单片机。主频,读写频率高达72MHz。容量,内存单元高达512K字节。管脚,引脚丰富,可进行多种控制接口之间的连接。RAM,储存空间达到48K字节,储存空间较大。外设,具有丰富的外设接口。(7)软件,STM32有自己固化的软件流程库,可以加速开发流程。根据以上介绍可以发现,采用STM32芯片可以加速驱动小车控制系统的软件开发流程,避免在程序开发过程中出现程序逻辑错误,保证整个控制系统实现高效率的开发。4系统设计4.1总体设计思路为了满足四驱小车的行驶功能,总体设计分为以下四个模块:(1)黑白循迹模块:在该模块中,主要通过TCRT5000传感器发射红外线。通过红外线发射并接收红外线反射回来的光线,从而使得红外线接收器的引脚电压发生变化。使得小车循着黑线行驶。(2)超声波避障模块:在该模块中,将解决小车遇到障碍物问题,使得小车避免碰撞。(3)蓝牙模块:在该模块中,通过蓝牙模块与手机App相连,App控制小车行进。(4)电机驱动控制模块:目前本电机驱动控制模块主要采用一个L298N微控制器作为主硬件驱动控制器件,在该模块中,通过STM32微控制器做出的信号处理,控制小车的转向运动。4.2主要功能设计智能四驱小车的基本功能:通过黑白线循迹,超声波避障,以及手机App蓝牙控制。经过设计的四驱小车的功能示例图如下:图4-1功能示例图小车检测黑线,循着黑线行驶,其流程设计如下图所示[8]:图4-2黑线循迹功能流程图HC-SR04模块主要可以实现信号的发射接收功能,避障流程设计如下图所示:图4-3避障流程图通过手机App蓝牙与四驱小车建立蓝牙通信,其控制小车行驶流程设计如下图所示:图4-4蓝牙模块功能流程图蓝牙通讯设计流程如下图所示:图4-5蓝牙通讯流程图电机驱动流程设计图如下所示[9]:图4-6电机驱动流程图5系统实现5.1环境搭建MDK是STM32常用的开发环境,MDK操作的时候简单方便,不需要再进行其他的编译器以及器件的安装,MDK安装完成之后如图5-1所示:图5-1Keil图标启动Keil软件,并且激活软件。之后就可以正常使用了,如下图所示:图5-2KeiluVision5界面5.2各模块的实现5.2.1黑白循迹模块TCRT5000红外线反射传感器可以针对1~25毫米之间的距离进行检测,并将检测到的信号通过比较器LM393输出,从而驱动硬件控制系统中的硬件电路完成相应的操作,红外线传感器工作电压为3.3~5伏之间。TCRT5000传感器可以不断的往外发射红外线,当接收装置没有接收到反射回来的红外线时,红外线接收装置开关处于关闭状态,此时输出为低电平信号,LED灯处于点亮状态;当红外线接收装置接收到反射回来的足够强度的红外线时,此时比较器输出端为高电平信号,LED灯为熄灭状态。下图为TCRT5000传感器模型图:图5-3TCRT5000传感器模型图其中电路工作图如图所示:图5-4电路工作图TCRT5000实物图如下图所示:图5-5TCRT5000实物图循迹IO初始化:循迹传感器从右到左依次为O1O2O3O4硬件连接O1-PA4,O2-PA5,O3-PA6,O4-PA7要初始化为输入模式图5-6开启GPIO时钟代码循迹模块:黑线输出高电平1白线低电平0小车最左端是O4最右端是O1循迹路面:白色路面黑色引导线,即寻黑线。黑线传感器输出1,白线输出0图5-7循迹功能主要代码5.2.2超声波避障模块智能四驱小车在面对障碍物时可以有效地避免障碍物,提升智能四驱小车处理障碍物的智能性。为实现以上措施,智能四驱小车需要对行驶路段上的外在环境进行采集,并将采集到的地形数据信息输入到STM32中央控制处理单元,从而对采集到的故障信息进行数据处理。其中故障采集信息有多种方式,比如红外线检测,超声波检测等。由于超声波在检测过程中具有检测能力强,采样精度高的特点,因此本文主要采用HC-SR04超声波采样器件作为本设计STM32驱动小车路障检测传感元器件[10]。通过在超声波测距的同时,本设计使用舵机帮助超声波转动,检测各个方向存在的障碍物。在小车前进的过程中,若遇路上存在一定的障碍物,通过超声波采集信息,可将采集到的信息传输到STM32中央控制处理单元,从而驱动舵机改变转向,使得四驱小车的前进方向发生改变。HC-SR04模块工作电压为3~5.5伏,该模块在工作的时候可以通过向引脚输入高电平信号触发模块进行路障测距。当测距结束之后,该引脚通过输出高电平测量超声波发出到检测总共所需要的时间,进而为后续的具体测量提供时间信息,其中超声波实物如下图所示:图5-8HC-SR04实物图超声波测距的原理如下图所示:图5-9超声波原理图通过向Trig管脚输入高电平触发超声波脉冲信号输出,然后通过回波检测装置检测超声波反射回来的声波信号,测量超声波发出以及接收所用的时间可以计算得出智能四驱小车距离故障端之间的距离[11],超声波测距时序如下图所示:图5-10HC-SR04测距时序图本模块使用简单方便,只需要一个控制接口,就可以完成超声波的发送以及接收,并且通过控制接口不断的发出超声波信号,可以完成智能四驱小车到故障端之间多次测距,求得测距的平均值,提高整个测量过程的准确性。图5-11超声波模块电路图根据以上超声波测距时序原理图可以编写相应的软件,在超声波测距过程中,为了防止测距信息丢失,提高超声波测距的准确性,测量物体的面积应该大于0.5平方米。超声波端口初始化:图5-12超声波端口初始化代码开始测距,发送一个>10us的脉冲,然后测量返回的高电平时间:图5-13测距部分代码STM32智能四驱小车转向舵机在遇到路障的时候会自动开启转向功能,以下主要对智能四驱小车舵机的工作特性进行描述。图5-14舵机实物图STM32智能四驱小车舵机主要是通过STM32处理器发出控制指令,控制舵机完成一定的转向操作。控制过程主要是通过电压差分信号传输到电路板上的IC端口判断舵机的转向,并通过机械装置改变舵机的齿轮传动方向。智能四驱小车舵机控制脉冲时间为20毫秒左右,可完成180度方向的转向。本设计以智能四驱小车和故障距离为25厘米进行考虑。图5-15舵机转动主要功能代码图5-16舵机转动主要功能代码避障模块在程序设计中主要有以下几方面:(1)超声波周期本设计采用TIM2对超声波周期进行控制,TIM2采用定时器中断模式,中断程序主要通过输出高电平信号并结合超声波的时序图,对超声波的发射进行控制,中断程序流程如下所示:图5-17中断程序代码(2)采集超声波从发射到接收持续时间本文设计的STM32智能四驱小车通过通用定时器TIM5,对超声波发射装置发射的超声波进行捕获,TIM5通用定时器在采集超声波信号时,对ECHO端口边缘信号进行采集,通过将采集到的信号与寄存器中的值进行比较,根据比较不同的输出值,控制信号采集装置TIM5的输出信号,采集装置流程如下所示。首先需要开启TIM5的时钟信号如下所示。图5-18开启TIM5时钟信号代码初始化TIM5,设置TIM5的psc和arr:图5-19初始化TIM5代码设置TIM5的输入比较参数,开启捕获模式:图5-20设置TIM5输入比较参数代码设置TIM5的DIER寄存器,使能捕获和更新中断功能:设置中断分组并编写中断服务函数:图5-21设置中断服务函数代码设置完TIM5的超声波采集模式之后,将TIM5的终端服务采样时间设置为t,其中中断服务子程序如下所示。图5-22中断服务子程序代码(3)对采集到的声波持续时间进行逻辑判断将采集到的声波持续时间送入TIM5终端服务子程序中,根据故障测量距离函数,对测量距离进行判定,故障测距判定流程如下所示。图5-23故障测距代码5.2.3蓝牙模块(1)HC05介绍HC05通过蓝牙串口模式可以实现与智能四驱小车控制系统之间的通信,HC05可以实现多个终端的通信功能,比如说电脑,手机等设备。HC05工作电压为3.3~5伏,波特频率为4.8~13.8kHz。其特性参数如下表所示:表5-1HC05特性参数表HC05外观图如下图所示:图5-24HC05外观图HC05模块背面丝印图如下所示:图5-25HC05背面丝印图(2)HC05调试HC05蓝牙串口主要有两种工作模式,分别为响应工作模式和自动连接模式。其中自动连接模式主要是根据事先设定的工作方式,实现程序的自动传输功能。当HC05蓝牙串口处于命令模式工作下,需要根据用户向HC05蓝牙发送一定的指令,才能够根据用户发送的指令执行相应的控制命令。进入蓝牙命令响应的工作模式主要有两种操作方法:一种就是在模块上电,未与其相配对的条件下便是AT模式,波特率被固定到9600,发送一次AT指令需要置高一次PIO11,所谓置高一次PIO11,就是在每个蓝牙模块中都会有一个小的按键,只要点击一下即可把它置高一次。另一种方法是PIO11置为高电平后,再给该模块加上电,此时该模块进入AT模式,波特率是38400,并且它们可以直接向模块发送AT指令。但是当蓝牙模块上的灯慢慢闪烁时,就是命令响应的工作模式,快闪的话便是自动连接模式。蓝牙模块在通电之后执行相应的操作,从而实现扫描连接等相应功能。通过内部设置程序,避免蓝牙模块与其他串口之间的串口通信矛盾,从而实现正确配对,保证蓝牙模块与控制端口之间的正常连接。模块中的LED为系统配对运行状态的指示灯。刚上电模块会进入AT状态:每隔1秒指示灯闪1次;还有可以进行配对的状态:每隔1秒指示灯闪2次;以及可以配对成功后的状态:每隔2秒指示灯闪1次,1次闪2下。(3)USART串口通讯STM32中央控制处理单元通过USART与HC05蓝牙模块进行通讯,本设计智能四驱小车控制系统采用串行通信的方式实现数据的双向传输,USART在串行通信的过程中,对数据格式有严格要求。通过提供多种波特率的方式,能够实现和蓝牙模块的连接,用USART支持同步单向通信和半双工单向通信,也可以支持局域网以及智能协议等多种协议规范。USART功能框图如下图所示:图5-26USART功能框图eq\o\ac(○,1)代表功能引脚:TX:数据输出引脚。RX:数据接收引脚。SW_RX:内部引脚实现数据的接收。nRTS:硬件流控制中的请求发送引脚通过改变电压的高低值向寄存器中发送命令。nCTS:清除发送引脚命令的指令,通过改变输出电压高低值,执行发送命令或者是停止发送命令的模式。SCLK:时钟器输出引脚。USART引脚分布如表5-2所示:表5-2STM32F103RCT6芯片的串口引脚STM32F103RCT6中央集成控制单元有内置串口,其中时钟频率最大为72MHz,USART主要实现异步通信功能[12]。eq\o\ac(○,2)代表数据寄存器:USART数据寄存器(USART_DR),在数据传输的过程中主要采用8位数据字长进行数据的存储。USART_DR储存有发送或者是接收到的数据信息。当执行发送或者是读取命令的时候,可以实现该模块与计算器之间的通信,当往外发送数据的时候,就把该模块中的数据发送到移位寄存器中,并通过移位寄存器往下一个工作单元进行传输。eq\o\ac(○,3)代表控制器:USART内部集成了多个控制单元,可以实现对数据的发送,控制,接收以及中断等控制。当USART_CR1寄存器使能端为1的时候,发送数据命令启动,完成一个数据的传输需要保证其起始位+数据帧+停止位三个数据都一一对应。在数据传输的过程中,通过改变寄存器中的控制模式,可以实现对数据传输的过程中的多种控制,其中发送的字符时序如图5-27所示。图5-27发送字符时序图当发送器使能端为1的时候,发送器通过改变发送数据在每个位置的位数,从而实现数据的写入,传输以及中断等功能,发送数据时常见的重要标志为如下所示:表5-3发送数据重要标志接收器:USART_CR1寄存器RE位置1,可以实现USART接收数据的功能,数据完成接收之后,改变移位寄存器中的数据,进而产生中断,其中重要的标志为如下所示:表5-4接收数据重要标志eq\o\ac(○,4)代表小数波特率生成:波特率主要表示数据信号对载波的调制频率,比特率主要指单位时间内传输的字节数,数据字节数对于USART来说,波特率与比特率相等,其中波特率越大,传输速度越快,其计算公式如下所示。图5-28波特率计算以上公式中的fCK为时钟,USARTDIV为波特率寄存器中的无符号定点数。(4)HC05驱动HC05驱动单元可以对蓝牙传输模块的通讯以及超声波模块接收数据处理进行控制,本文设计的STM32智能四驱小车控制系统,采用USART与蓝牙模块HC05进行无线通讯,通过中断服务子程序将接收到的数据储存到静态缓冲区当中,代码如图5-29所示。图5-29USART2中断接收缓冲核心代码以上的程序函数可以在USART的中断服务子程序中进行直接调用,其中核心代码如图5-30所示。代码实现的功能,分别为向HC05蓝牙模块发送命令以及实现蓝牙传送数据功能。图5-30HC05驱动核心代码HC05蓝牙模块通过引脚判断串口接收到的数据,从而控制是否需要传输数据。控制的方式也是通过数据命令控制语句中的引脚设置为高电平,实现字符串的发送功能,通过判断语句执行命令操作;若命令执行不成功,需要重复多次发送命令。HC05模块在系统中初始化完毕,并将其设置为MASTER模式后,可定时调用linkHC05函数,它们将会自动扫描周边的所有蓝牙设备,获得蓝牙设备的名字等,然后查找是否存在有一些蓝牙设备名字含有“HC05”字符串,若有则自动对其进行配对、连接,下图描述了将远程蓝牙通讯设备相连。图5-31扫描连接远程蓝牙设备主要代码示例图(5)安卓手机App该App开发环境搭建是SDK8.0+Androidstudio2.2,实现对STM32智能四驱小车的控制[13]。项目目录结构如下图所示:图5-32App目录结构项目的配置文件(AndroidManifest.xml)如下图所示:图5-33App配置文件App启动页面如下图所示:图5-34App启动界面图启动界面主要代码如下图所示:图5-35App启动代码蓝牙搜索功能主要代码如下图所示:图5-36App蓝牙搜索蓝牙配对功能主要代码如下图所示:图5-37App蓝牙配对APP按键功能主要代码如图所示:指令定义A前进,I是停止,B是后退,C是左转,D是右转图5-38App按键控制代码(6)HC05与安卓手机进行蓝牙通讯在安卓手机上安装生成apk,打开手机APP,打开手机的蓝牙设备,打开小车开关,点击“连接”按钮,会显示“查找设备中…”,稍等一会出现名为“HC05”的蓝牙设备,这就是我们的HC05模块的名字,点击该设备,APP会与HC05尝试连接,输入配对码“1234”,即可连接成功。APP与模块相互连接在一起后,就能够直接利用APP通过蓝牙方式向开发板传输数据。App界面有前进,左转,右转,后退,停止,超声波避障,黑线循迹这几个按钮,通过点击来控制小车运行。蓝牙连接功能主要代码如下图所示:图5-39App蓝牙连接5.2.4电机驱动模块STM32对于小车的控制,就是调节电机的转向,四驱小车的行驶状态也就会随之发生一定的改变。电机驱动模块的主要元件为L298N,下面就详细说明一下电机驱动模块[14]。电机驱动模块的实物图如图5-40所示:图5-40驱动电路实物图电机驱动模块的电路原理如图5-41所示:图5-41电机驱动模块原理图表5-5是各个端口状态与运动方向的关系,其关系如下表所示:表5-5端口与运动方向关系表电机M1IN1IN2电机M2IN3IN4停止00停止00正转10正转10反转01反转01-11-11电机驱动与STM32端口配置[15]:前部电机驱动L298NPC0IN1,PC1IN2控制小车左前电机正反转PC2IN3,PC3IN4控制小车右前电机正反转后部电机驱动L298NPC10IN1,PC11IN2控制小车右后电机的正反转PC12IN3,PD2IN4控制小车左后电机的正反转图5-42初始化GPIO代码只要配置INx()的状态就可以改变电机转动方向,左电机控制:图5-43左电机控制代码右电机控制:图5-44右电机控制代码小车左转,右转,停车:图5-45左右电机转动控制代码5.3最终效果展示图小车实物图如下所示:图5-46智能四驱小车实物图智能四驱小车的循迹模块通过红外线反射感知黑线,将信号传送给STM32微处理器,从而对电机发出不同的命令。图5-47智能四驱小车黑线循迹图当智能四驱小车检测到有障碍物的范围时,停下转动舵机,测试示意图显示如下:图5-48智能四驱小车检测障碍图智能四驱小车确定前方有障碍物时,转动舵机,判断障碍物情况,然后后退避开障碍物,测试显示结果实验图片如下方图所示:图5-49智能四驱小车避障图智能四驱小车循迹避障,小车收到循迹指令后,走黑线,当遇到障碍物就会停止,效果图如下所示:图5-50智能小车循迹避障图如果把障碍物拿走,小车会继续前进,效果图如下图所示:图5-51智能小车循迹避障图安卓手机App控制小车黑线循迹,超声波避障以及小车前进,后退,左转,右转。App控制界面如下图所示:图5-52手机App控制界面6项目运行调试为了保证本文基于STM32智能四驱小车控制系统的开发质量,在完成各个部分硬件电路和软件流程设计之后,需要将系统的硬件电路和软件流程部分进行集成调试,并且严格按照调试程序和调试步骤,对每一个模块进行逐一检测。对于程序中的错误之处,需要尽量减小到最低,保证智能四驱小车控制系统的容错能力,保证智能四驱小车控制系统能够进行正常运行。6.1调试目的通过对智能四驱小车控制系统进行调试,找到控制程序编写过程中出现的错误并及时改正,规范程序编写过程中的代码以及流程,并对调试之后的结果进行总结,便于后续对智能四驱小车控制系统的代码进行维护和升级。智能四驱小车控制系统软件程序开发过程中,对程序代码进行调试,需要结合测试软件的设备功能加快整个调试周期,从而提高软件调试工作效率。6.2调试主要内容智能四驱小车控制系统调试流程主要按以下三个模块划分对智能四驱小车行驶黑白路径进行调试对智能四驱小车进行超声波避障调试针对智能四驱小车蓝牙通讯进行调试6.3调试发现问题本设计智能四驱小车控制系统,在设计过程中存在的问题主要是:智能四驱小车蓝牙终端连接的时候与智能四驱小车之间的通讯出现了中断的情况。经过对蓝牙模块的梳理发现是驱动出现了问题,又重新安装驱动,调试AT指令,再去调试四驱小车的蓝牙通讯,就连接成功了。通过以上调试过程可以发现,在整个智能四驱小车控制系统调试过程中,需要对每个部分的调试都要尽可能的关注,对于软件流程和硬件电路测试都需要进行详细的检查,若是软件代码编写逻辑错误,造成的测试故障,需要及时纠正,避免整个代码出现错误,便于后续代码的维护以及升级。通过以上研究可以发现,通过对软件流程的调试可以保证智能四驱小车控制系统控制开发的高效性,针对智能四驱小车控制系统软件调试,可以保证智能四驱小车控制系统的产品质量,同时这也体现了一个优秀程序开发人员的职业道德。6.4项目展望在运行调试过程中,我还发现智能四驱小车在行驶的过程中有时候没有按照预定的黑线轨迹进行行驶,小车灵敏性不够,还达不到智能控制的精度准确性要求。还有智能四驱小车在行驶的过程中超声波未探测到的地方没有及时避障。这些都是本次设计中四驱小车的缺陷,还需继续深入学习相关知识,争取达到灵敏度精准,这将是我后续研究的方向,将四驱小车完成的更加完美一些。7总结本次基于STM32智能四驱小车控制系统是在导师的帮助下完成的,从需求分析到最后软硬件调试都能够实现预定目标。在STM32智能四驱小车控制系统开发过程中,我遇到了很多的难题,最终都在老师的帮助下逐一得到了解决。在刚开始接触STM32的过程中,通过查阅信息并且向老师同学请教,有了对STM32基础知识的初步了解。通过查阅智能四驱小车驱动系统相关资料,设计了智能四驱小车行驶过程需要的常见模块,为了保证整个智能四驱小车控制系统顺利开发,对智能四驱小车控制模块进行了硬件测试,为后续的软件调试打下了一定的基础。因为受

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论