完整版基于CORTEXM3的智能避障小车设计与实现毕业设计.docx
《完整版基于CORTEXM3的智能避障小车设计与实现毕业设计.docx》由会员分享,可在线阅读,更多相关《完整版基于CORTEXM3的智能避障小车设计与实现毕业设计.docx(9页珍藏版)》请在冰豆网上搜索。
![完整版基于CORTEXM3的智能避障小车设计与实现毕业设计.docx](https://file1.bdocx.com/fileroot1/2023-6/6/e3636df3-ca2f-45d8-b01f-5f466c4e8e04/e3636df3-ca2f-45d8-b01f-5f466c4e8e041.gif)
完整版基于CORTEXM3的智能避障小车设计与实现毕业设计
分类号密级
华中农业大学楚天学院本科毕业论文
基于CORTEX-M3的智能避障小车设计与实现
DesignandImplementationofInligentavoidancecarbaseonCORTEX-M3
学生:
明敏敏
学生专业:
计算机科学与技术
(嵌入式方向)
指导教师:
吴琼飞
华中农业大学楚天学院
二○一五年六月
目录
摘要II
关键词II
AbstractII
KeywordsII
前言1
1课题概述1
1.1课题研究的意义与背景1
1.2国内外研究现状1
1.3智能避障小车的简述2
1.4课题主要研究的内容2
2系统的分析设计与实现3
2.1系统的结构图3
2.2软件工作流程4
3系统的硬件及软件的设计4
3.1嵌入式系统的介绍4
3.2CORTEX-M3硬件平台的介绍5
3.2.1电源模块5
3.2.2复位模块5
3.2.3晶振模块5
3.2.4STM32微控制器6
3.2.5JTAG模块6
3.3直流电机驱动L298N6
3.4超声波测距模块HC-SR047
3.5程序开发软件介绍8
4系统测试8
4.1调试的思路8
4.2串口的调试8
4.3超声波测距模块调试9
4.4L298N驱动模块调试9
4.5硬件调试9
5系统结果分析与展望10
参考文献11
致谢12
附录:
13
摘要
智能技术是按照预先设定的模式在一个特定的环境里自动的运作,无需人为管理便可以完成预期所要达到的或是更高的目标。
本系统主要体现多功能小车的智能避障模式,当小车与障碍物距离小于安全距离时,通过单片机控制小车会自动向右转弯逼开障碍物,之后继续直线前进。
智能避障系统可用于未来的智能汽车上,与障碍物较近时如果驾驶员未做出反应,汽车会自动减速并避开障碍物,并减速至停靠与路边。
同时智能避障小车也可以作为玩具市场的主要发展对象,实现经济效益。
本系统通过超声波测距模块测量小车与障碍物的距离情况,并通过L298电机驱动模块驱动小车避开障碍物运行,整个系统的控制模块以CORTEX-M3嵌入式系统作为主控芯片。
本系统可设置最小安全距离,也可调节小车运行速度,当小车与障碍物距离小于安全距离时,通过CORTEX-M3嵌入式系统控制小车会自动向左转弯逼开障碍物,之后继续直线前进,实现智能避障。
.
关键词
智能技术;CORTEX-M3系统;超声波传感器;最小安全距离;
Abstract
Inligenttechnologyisautomaticallyoperatedinaspecificenvironmentaccordingtothepresetmode,withoutmanagement,itcanaccomplishtheexpectedorthecarandtheobstacledistanceislessthanthesafedistance,throughtheMCUcontrolcarwillautomaticallyturntotherightforceobstacles,thencontinuestraightahead.Theinligentobstacleavoidancesystemcanbeusedinthefuturesmartcar,andwhentheobstacleisnear,thecarwillautomaticallyslowdownandavoidobstacles,andslowdowntodockandroadside.Atthesametime,theinligentobstacleavoidancecarcanalsobethemaindevelopmentobjectofthetoymarket,andrealizetheeconomicbenefit.
ThesystemthroughtheultrasonicrangingmodulemeasuringcarandobstaclesofdistanceandtheL298motordrivemoduletodrivethecartoavoidobstaclestorun,thesystemcontrolmodulebasedonCortex-M3embeddedsystemasthemaincontrolchip. Thesystemcansettheminimumsafedistance,canregulatetherunningspeedofthecar,whenthecarandtheobstacledistanceislessthanthesafedistance,theCortex-M3embeddedsystemcontrolcarwillautomaticallyturnleftforcedopenobstacles,andthencontinuestraightforwardandinligentobstacleavoidance.
Keywords
Inligenttechnology;CORTEX-M3system;Ultrasonicsensor;Minimumsafedistance
前言
在我国,由于城市人口的高度集中以及道路纵横交错,汽车给人们的出行提供了方便的同时也带来了许多安全上的问题。
专家对各地交通事故统计分析结果表明各地交通事故普遍是由于驾驶员在危急情况发生时反应不及时所造成。
因此若驾驶员能前提早意识到会有交通事故发生,并相应的采取了正确措施那么大部分的事故都是可能避免。
因此智能避障系统在交通安全中的作用日益凸显。
对智能避障的研究也变得尤为重要。
智能避障是指汽车的超声波传感器采集的距离数据小于一个安全值时,能够智能的避开汽车周围的障碍物或汽车,在与障碍物碰撞前发出警报提醒驾驶员注意减速或制动,使驾驶员能够及时的采取应急措施,从而达到事先预防避免或减少事故发生。
1课题概述
1.1课题研究的意义与背景
在日常生活过程中95%的信息是通过视觉获得。
丧失了视觉或是视力有严重缺陷的人在工作、生活中常遇到莫大的困难,其中之一是在行走中难以了解周围的环境信息以致撞到障碍。
他们需要社会给予更多的关怀和照顾,使他们能够更好的独立生活。
为此研发一种智能小车,使其具有一定的感知能力、规划能力和动作能力,带领使用者避障碍物,既能帮助和关怀那些视觉存在缺陷的人,又能减轻护理人员的工作任务,因此无论对于社会还是个人都有积极的现实意义。
1.2国内外研究现状
机器人的应用越来越广泛,移动机器人是机器人中的一个重要分支。
早在60年代国外就已始进入这方面的研究,特别在80年代,美国国防高级研究计划局,专门立项,制定了地面无人作战平台的战略计划。
从此,在全世界拉了全面研究机器人的序幕,如darpa的“战略计算机”计划中自主地面车它行星上第一个大型、自动化的地面机器人,相比“索杰纳”号火星探测机器人“勇气”号用六轮驱动,有很高的越障能力,核心是一台每秒能执行2000万条指令的计算机,具备更强、更可靠的移动,装载有全景摄像机、避危摄像机、微型热散射质谱仪、显微成像仪、磁铁阵列等等传感器截止2010年,该机器人已经连续在火星表面工作了6年,是人类迄今为止最成功的外星探测机器人。
国外智能车辆的研究历史较长,始于上世纪50年代。
它的发展历程大体可以分成三个阶段:
第一阶段20世纪50年代是智能车辆研究的初始阶段。
1954年美国BarrettElectronics公司研究开发了世界上第一台自主引导车系统AGVS(AutomatedGuidedVehicleSystem)。
第二阶段从80年代中后期开始,世界主要发达国家对智能车辆开展了卓有成效的研究。
在欧洲,普罗米修斯项目开始在这个领域的探索。
在美洲,美国成立了国家自动高速公路系统联盟(NAHSC)。
在亚洲,日本成立了高速公路先进巡航辅助驾驶研究会。
第三阶段从90年代开始,智能车辆进入了深入、系统、大规模研究阶段。
最为突出的是,美国卡内基.梅隆大学(CarnegieMellonUniversity)机器人研究所一共完成了Navlab系列的10台自主车(Navlab1—Navlab10)的研究,取得了显著的成就。
RemotecAndrosF6A排爆机器人是美国军械制造商NorthropGrumman公司制造,用于排爆、核放射及生化场所的检查和清理、处理有毒、有害物品、特警行动及机场保安。
其有轮式和带式移动方式能上下楼梯、爬坡越沟。
本田ASIMO仿人形机器人,是日本本田公司研制的目前最先进的仿人行走机器人。
ASIMO身高1.3米,体重48公斤,它的行走速度是0-6km Merseyside SMEs:
Benefits and barriers[J].. TQM Journal. 2008
致谢
通过此次设计,我对CORTEX-M3系列单片机的原理又有了进一步的了解,对于软件和硬件等各方面知识的学习和运用技能有了很大的提高,除此之外在自身的心性方面也得到了极大的锻炼。
本次设计能够完成离不开刘老师的细心指导,以及平时各任课老师认真负责的教学,在此对信息工程学院的全体老师及领导表示感谢,感谢你们对我的栽培,虽然即将毕业,但学习还在继续,在以后或的工作生活中,我将继续保持此刻的学习状态,努力提高自己各方面技能,逐步的完善自己。
转眼间大学四年的生活也将画上一个圆满的句号,我们也将离开这个生活了四年的校园,对于即将进入社会的我们,外面的一切都充满的诱惑,回忆这四年的大学生活,自己也感触颇多。
在从拿到自己的毕业设计题目到现在毕业论文的完成,我要感谢我的指导老师吴老师,刚刚拿到这个论文题目时并不知道如何下手去做,老师就给我进行了详细的说明,当我遇到问题时,老师也能够及时的帮助我们解决,偶尔也会给我们提供一些学习的网站和学习资料,让我们在课外也学习到了很多的知识。
通过毕业设计,也让我巩固了一遍大学四年自己所学习的知识,增强了自己的动手能力,以及查阅资料的能力,最后还是感谢我在做毕业设计时对我帮助的所有人,因为有他们的帮助我才能够顺利的完成自己的毕业设计,并让我在做毕业设计时学习到了那么多自己不懂的知识。
附录
电机模块程序
#include"move._left()
{
Left_motor_go();左边电机MA前进,
Right_motor_stop();右边电机停止
}
超声波测距模块
#include"ultrasound.",push-pull*
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStructure);
*ConfigureUSART1Rx(PA.10)asinputfloating*
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA,&GPIO_InitStructure);
*USART1modeconfig*
USART_InitStructure.USART_BaudRate=115200;
USART_InitStructure.USART_WordLength=USART_WordLength_8b;
USART_InitStructure.USART_StopBits=USART_StopBits_1;
USART_InitStructure.USART_Parity=USART_Parity_No;
USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None;
USART_InitStructure.USART_Mode=USART_Mode_Rx|USART_Mode_Tx;
USART_Init(USART1,&USART_InitStructure);
USART_Cmd(USART1,ENABLE);
}
重定向c库函数printf到USART1
intfputc(intch,FILE*f)
{
*发送一个字节数据到USART1*
USART_SendData(USART1,(uint8_t)ch);
*等待发送完毕*
while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET);
return(ch);
}
重定向c库函数scanf到USART1
intfgetc(FILE*f)
{
*等待串口1输入数据*
while(USART_GetFlagStatus(USART1,USART_FLAG_RXNE)==RESET);
return(int)USART_ReceiveData(USART1);
}
*********************************************ENDOFFILE**********************
延时函数
#include#definePAin(n)BIT_ADDR(GPIOA_IDR_Addr,n)
#definePBout(n)BIT_ADDR(GPIOB_ODR_Addr,n)
#definePBin(n)BIT_ADDR(GPIOB_IDR_Addr,n)
#definePCout(n)BIT_ADDR(GPIOC_ODR_Addr,n)
#definePCin(n)BIT_ADDR(GPIOC_IDR_Addr,n)
#definePDout(n)BIT_ADDR(GPIOD_ODR_Addr,n)
#definePDin(n)BIT_ADDR(GPIOD_IDR_Addr,n)
#definePEout(n)BIT_ADDR(GPIOE_ODR_Addr,n)
#definePEin(n)BIT_ADDR(GPIOE_IDR_Addr,n)
#definePFout(n)BIT_ADDR(GPIOF_ODR_Addr,n)
#definePFin(n)BIT_ADDR(GPIOF_IDR_Addr,n)
#definePGout(n)BIT_ADDR(GPIOG_ODR_Addr,n)
#definePGin(n)BIT_ADDR(GPIOG_IDR_Addr,n)