【《基于stm32单片机的盲人避障系统设计》13000字】_第1页
【《基于stm32单片机的盲人避障系统设计》13000字】_第2页
【《基于stm32单片机的盲人避障系统设计》13000字】_第3页
【《基于stm32单片机的盲人避障系统设计》13000字】_第4页
【《基于stm32单片机的盲人避障系统设计》13000字】_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

┊┊┊┊┊┊┊┊┊┊┊┊┊┊┊┊┊┊┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊II基于stm32单片机的盲人避障系统设计摘要在当今社会,盲人出行可谓是困难重重,在路面复杂的道路上要是没有它人的帮助,可以说是寸步难行,虽然现在有辅助设备指引它们,如导盲犬,拐杖之类的,但这种简易装备存在很多安全隐患。现如今盲人出门,则会需要导盲犬,拐杖来探清前方道路,但是如果再加上一个能够语音播报前方是否有多远何处有障碍物的小装置,那么它的出行会不会更加方便呢?本次设计就是按照这个方案进行,如果测的前方有障碍物,则语音提示前方哪个方位距障碍物多远,防止盲人撞上去发生安全事故。本次设计了一款智能超声波避障小装置模型,采用STM32编程环境的单片机,结合超声波测距系统与GY-271电子指南针罗盘模块系统,实现语音提示避障功能。拟解决的主要问题为:智能装置超声波传感器对道路环境进行信息采集,单片机进行实时的数据处理和程序执行,将测距的信息显示在液晶屏幕上,然后语音模块根据液晶显示内容播报给盲人。另外,还设计了单片机主控系统、基于光敏电阻的智能循光系统、GSM短信系统设计。如果盲人在黑暗环境中迷路了,自动循光系统将会根据光敏电阻检测到光源的方位,指引盲人到达有光的地方,然后通过按键报警,通过GSM短信模块将盲人的具体位置发送在指定的手机上,使盲人能及时获得帮助。关键词:超声波避障;电子指南针罗盘模块;短信模块;自动循光系统目录TOC\o"1-3"\h\u310591绪论 1282391.1前言 1158201.2课题的意义 130581.3国内外发展现状 2214692系统方案的设计 4277702.1系统总体设计思路 4315442.2主控芯片的选择 420982.3传感器的选择 5114782.4通信方式的选择 5139832.5系统功能分析 6253023硬件设计 7121383.1单片机的选型 731263.2超声波测距电路设计 8193703.3按键电路设计 9295623.4液晶显示模块电路设计 10211043.5罗盘模块电路设计 11224083.6语音芯片电路设计 12129983.7GSM短信模块电路设计 13123343.8自动循光系统设计 14241854系统软件设计 1692804.1系统总体程序 16216084.2超声波测距程序 1695104.3语音播报程序设计 1877374.4GSM短信发送程序设计 21145784.5自动循光程序设计 2257074.6按键程序设计 24169724.7罗盘程序设计 25142944.8液晶显示程序设计 2730375系统安装与调试 3127695.1硬件安装 31169205.1.1电路焊接 31120455.1.2超声波测距的改进 31251535.1.3液晶屏显示 327975.2软件调试 32140965.3改进及建议 3417876结束语 3512856参考文献 3727898附录A原理图 3811685附录B实物图 3916709附录C主要程序 401绪论1.1前言随着社会经济发展的增长,科技创新正在成为一个新的竞争因素。科技为人们带来了知识经验,特别是新趋势.智能模式按照预先设定的顺序自主启动,无需人工控制,能够实现既定目标或更好地创造.在21世纪,计算机和智能技术的开发和应用越来越受到重视,单片技术的发展已经达到了一个全新的水平,在智能测试等各种智能电子领域,自动计算机测量、语音传输和定位,开始广泛应用.1.2课题的意义对于一些视觉不正常的人来说,躲避前面的小障碍物确实是一件简单的事,但是对于盲人来说,这就显得比较困难了,本文就为大家设计了一款能够帮助盲人有效地躲避前面的障碍物的小装置,让我们盲人的生活和出行更加轻松。该装置的主要功能之一就是:通过使用超声波测距原理传感器来实时检测前方或后方是否存在物体,若没有,则会由语音提示模块向用户发出提示信息,LED灯亮提醒路人帮助盲人选择合适路线,它带有电子指南针模块可以准确辨别方位,可以更加准确地提供方位信息,在遇到特殊情况下,盲人可通过装置的按键功能可一键报警,经自己的位置信息发送到指定手机上,让别人通过实时位置找到盲人,当然,盲人也可以通过自动循光系统走到室外光照地方,可以寻求附近人的帮助。本文在设计中所使用的各种安全辨认避障检测技术也就相当于许多的危险检测与安全辨认避障技术都同样有着一定的技术学习性和参考价值。障碍物和周围物体之间的一定距离被容易取得,这就是我们研究如何保护安全和规避障碍物问题的基本前提。但是也可能需要同时配备一套电子运动指南针软件来将其作为运动辅助,不然一个盲人怎么可能辨认哪个运动方位的都会容易出现运动障碍物,超声波运动测距仪就这样能够直接准确地自动测量附近的运动目标,适用范围区域广,方向性强,并且同时具备盲人无法排除受到其它自然条件相互干扰的运动影响,且现场覆盖范围较大等特点优势。目前,超声波自动测距压力传感器控制系统凭借其测量工作过程原理简便、易于设计实现以及无需花费大量时间和制造成本低等强大优势,在自动液位计的测量、移动式驾驶机器人的精确定位和移动避障、汽车车身防撞和运动曲面重力模拟器的仿形等各个领域都已经成功得到了广泛的技术应用。在本系统设计中针对一个平面上的每个物体高度进行了多次高度测量后分析发现,其最大高度误差测量范围约缩小为0.5cm,可见基于该系列单片机设计制造的新型超声波物体测距测量系统不仅具有测量工作可靠、测量时间和误差小等巨大优势。因此,它不但不仅可以被广泛用于保护盲人的自动检测避障,还有可能被广泛应用在其它自动检测避障装置中。此种装置简单、实用且轻便,这样的设计可以在很大程度上缓解盲人走路时的安全困难,并且具备一定的实用性。1.3国内外发展现状视觉障碍者的自动避难检查技术的一个要点是非接触式检查。以前视觉障碍者自己避难的技术在设计中使用红外线测定障碍物的存在和移动的方向,现在在实践中,红外线的干扰源很多。另外,完全没有反射光的情况下,由于光的干涉容易导致判断错误,会发生虚警。因此,如果一些探测设备将红外信号直接发送到其它设备,则改进的是首先直接发送对应于一系列设备的红外信号脉冲,然后接收由设备反射的红外信号。如果红外接收器接收的红外限制脉冲光的数量超过某个红外阈值,则系统可以直接确定室内是否存在红外障碍物。这种控制方法可以在一定的频率范围内有效地减少光的虚警告灯的频率,这是有效的。但是,如果在光线强烈的反射光下,或者不使用内置的电子电源稳定器等特殊方法,荧光灯亮了的话,光就不容易干涉了。另外,还有cccd图像探测、雷达图像检测、激光图像检测、超声波图像检测等典型的非接触雷达检测控制技术。在这里,cctd雷达侦测控制技术不仅可以直接依赖于方便而不需要的检测信号,同时还可以直接获得诸如许多检测场景和图像信息等的一些优点一些视觉检测可能需要额外的计算。雷达自动检测器同时在全天候地面上运行,适合在恶劣天气环境中同时实现各种短距离、高精度雷达检查的主要功能。但容易被各类电磁波雷达攻击。但是,容易被各种电磁波雷达攻击。激光检测器具有方向性高、单色化、高亮度、测量速度快等特征,特别是对于雨雾具有一定的贯穿性,抗干扰性强,但成本高,数据处理繁杂。与之前的一些检查技术相比,超声波检查技术可以直接准确地接近目标。纵向分辨率高,适用范围广,方向性好。并且,不受光和烟中的电磁干扰等条件影响,有覆盖范围大等特殊技术的优点。移动式机器人的定位和回避故障等技术领域的应用前景很广。目前,超声噪声检测技术作为最重要的非接触式超声检测方法之一,由于其检测产品价格低廉、信号采集和处理可靠、完全不受外界电磁和天气变化的影响,将在国内市场得到广泛应用,作为世界上的一个大国,在科技领域占据着领先地位,具有重要的现实意义。对于那些不容易测量和检查的测试环境,它们以前常常是未知的。因此,智能检测设备需要实时、安全地完成各种检测任务,设计避障监控系统,因此,智能检测设备必须在这样的环境中进行实时和安全地执行各种测试任务,通过避免监视器和控制系统的干扰,设计是我们智能设备检测过程中最重要的组成部分之一,也是我国进行智能检测设备智能化的主要体现.本设计充分揭示了小新的设计点可以为自动侦察和自动化提供一些参考意义,例如家庭智能。超声波测量,基于声音传感器,是一种抗干扰的手段,其实际操作方便,原理简单,可实时控制,测量精度还可以满足防障的需要,那么这种方法在未来蒸汽装置的发展中应该得到广泛的推广。2系统方案的设计2.1系统总体设计思路本次设计的总体要求是以单片机为控制中心,电源装置进行电压分配,设计基于超声波传感器的测距系统、设计基于光敏电阻的循光系统、设计语音播报系统,显示系统,定位系统,GSM短信系统。超声波测距是根据超声波发出和接收时间差,表示声波来回路程需要的时间,声波速度是固定的,从而计算距离。寻光系统将盲人带到有光线的地方,通过超声波测距传感器实时检测距离,并且液晶显示出具体距离,通过指南针模块实时检测方位,如果盲人遇到困难,按下装置报警按键,则会通过GSM短信模块将盲人具体位置发送给亲友手机上,从而使盲人能够及时得到帮助。上电指南针需要校准,上电液晶不显示,开始以指南针模块为中心水平缓慢旋转一周和以传感器为轴心缓慢旋转一周进行校准。液晶实时显示方位。通过按键触发语音播报,将超声波测距的距离和指南针模块检测的方位通过语音播报。提醒看不到东西的人员识别方向及前方是否有障碍。总体系统设计结构图如图2-1所示。按键按键GSM短信模块单片机GSM短信模块单片机超声波测距循光系统超声波测距循光系统液晶显示LED灯液晶显示LED灯罗盘定位语音播报罗盘定位语音播报图2-1总体设计结构图2.2主控芯片的选择方案一采用STC89C52RC单片机作为主控芯片。STC89C52RC单片机支持两种软件可选择节电模式,它的特点是功耗低,性能高。有三个定时器。缺点是,接地口少,抗干扰能力不强。无法实现太过复杂的功能。方案二采用MSP430系列单片机作为主控芯片,它的运行速度比较快。有16位,芯片内置硬件乘法器,乘除法运算都为单周期指令,片内集成资源丰富,有两组普通I/O口具有中断功能,它对于这次设计来说,电压过于低。最高只有3.6V,不能满足设备的电压设计,设计的电压远远超过这个,I/O口比较灵敏,容易被击穿。方案三采用STM32系列作为主控芯片,STM32系列基于专为要求性能高,成本低,功耗低的嵌入式应用专门设计的。还有STM32单片机程序都是模块化,接口多而且简单。自身带有好多功能,工作速度快,STM32的运算速度大约是51单片机的几十倍。并且STM32集成度高,开发方便。综上所述:本次设计模块较多,需要接口多,从这方面想,最终选择STM32系列单片机。2.3传感器的选择方案一采用红外测距传感器,它的的优点是成本比较便宜,容易制作,安全可靠,而不足之处是精度比较低,测量距离近,方向性差。方案二采用激光测距传感器,激光测距对人体有较大伤害,使用过程不太方便,不适合在人群过多的场所使用激光测距,而且用它来测量的话需要在比较干净的空间中使用,不然会影响测量的精确度,它比较好的一方面就是灵敏度高,测量比较准确。方案三根据硬件设计的参数来说,超声波的测距范围通常在10米以内,而且这个设计也不需要测得太远,一般来说成年人一步通常为0.5米。10米的距离更加能让盲人掌握。自己大概需要走多少步就能碰到这个障碍物。而且超声波测距不需要太过于清洁的空间,只要不堵住前面的超声发送,就完全可以使用。从设计要求和使用的环境考虑,选择方案三,超声波测距更适合这款设计。2.4通信方式的选择方案一使用蓝牙将信息传输给指定设备,用手机连接蓝牙,蓝牙设备的优点是安全性较高,稳定性好,不受环境的约束,但是它的缺点是传输频率不高连接过程比较频繁,传输距离太短,只有约10米范围,显然不符合此次设计。方案二使用WIFI作为传输设备,它的优点是传输速度极快,不会产生其它费用,它的缺点是干扰性比较强,受环境因素较大,当处在无网络环境的时候,会使通信功能丧失,而且距离太远,传输距离过远,不能远距离传输。方案三采用GSM短信模块传输信息,它能够在按下按键后背及时将消息传输给指定手机,而且传输的内容也比较少,而且不需要产生更多费用,但是不管相离多远,它都会将消息发出去,并且接收设备完全可以收到,缺点是传输时会产生一点延迟,并不会影响整个设备的灵敏性。从信息传输的方式和距离考虑,最终选择方案三的GSM模块传输信息。2.5系统功能分析本设计实现的具体功能如下。将完成的作品放在盲人口袋里,超声波测距安装在正前方适当位置,在检测到前方障碍物时会给单片机发送信号,单片机接收到信号后会通过液晶模块显示出来,并通过语音播报提醒使用者前方是否有障碍物,当使用者一旦走到周围黑暗环境中时,周围情况较为复杂,检测功能受到一定影响,且语音播报频繁,方位判别混乱,可以通过按键报警装置,通过定位模块获取位置信息并通过GSM模块发送出去,短信指示灯闪烁说明发送成功,短信发送会延迟15秒,防止误报警。求救信息以及位置信息。自动循光系统会根据检测到的光照信息,通过单片机系统,语音播报,测距模块将使用者带到光照良好的地方,方便救助者能更快的找到盲人的位置。3硬件设计3.1单片机的选型本次设计用的单片机为STM32F103C8T6。在这次装置中,提供5V电压,它的管脚比较多,内核和设部设备之间通过各种总线链接,其中,它有四个驱动,四个被动单元,STM32系列基于专为要求性能高,成本低,功耗低的嵌入式应用专门设计的。还有STM32单片机程序都是模块化,接口多而且简单。自身带有好多功能,工作速度快,STM32的运算速度大约是51单片机的几十倍。并且STM32集成度高,开发方便。。图3-1STM32F103C8T6核心板接口原理图图3-2STM32F103C8T6开发板实物图3.2超声波测距电路设计本次设计采用的是HC-SR04超声波传感器,能够准确测得距前方障碍物的距离值,测量的范围在0-10米。测量精度在3mm,其主要的内部设计包括超声波发送装置、超声波接收装置。并且易于制作,因此在测距过程中经常使用。实物图如图3-3,图3-3超声波HC-SR04图3-4超声波模块接口图超声波测距在电路中的设计方法如图3-4所示。其中,4管脚VCC需要接5V电压,1管脚需要接地,3号管脚TRIG用来触发传感器,输出高电平信号,发送出超声波,是否能够接收到信号,如果能接收到信号,就输出一个高电平,保存时间,这样就可以测出据前方障碍物的距离。计算方法如下。距离S=C·T/2式(3-1)C表示声速,T表示从发送高电平到接收高电平信号的时间。3.3按键电路设计本次设计设计的按键是轻触按键,它是一种电子开关,只要按下开关就可以接通电源开关接通,松开开关关闭,原理就是通过轻触按键内部的弹片受到压力的弹动来实现开合关闭的。在这款设计中,按键作为输入部分,它用来控制整个设计的启动与关闭,还可以用来启动一键报警装置,将GSM短信通信模块也启动,在人机交互中起到枢纽作用。单片机控制引脚为高电平,当按下按键后,单片机控制引脚为低电平,则实现了手动输入,本次设计需要三个按键来控制。一端接单片机引脚,一端接地,电路原理图如图3-5所示。图3-5按键电路原理图3.4液晶显示模块电路设计在此次设计中液晶屏显示为字符显示,通过超声测距和罗盘定位测到的信息显示在LCD显示器上,它与LED数码管显示相比,本次设计显示的内容应该为距障碍物多少米,在哪个方位,这样的话数码管显示不方便,如果是液晶显示,就很清晰了,而且液晶显示体积相对较小,功耗低,显示的内容多,美观等优点,更不需加其它驱动,而且液晶显示屏也越来越流行,如果装置出现异常,换液晶屏也比较方便。在电路中管脚的连接为1号管脚接地,2号管脚接5V电源,RS为寄存器,RW作为读写信号。系统中采用LCD1602作为显示器件输出信息。在本电路中电位器可以调节液晶显示的对比度即清晰度。其具体电路原理图如图3-6所示。图3-6LCD1602液晶显示电路原理图其实物图如图3-7所示。图3-7LCD1602液晶实物图3.5罗盘模块电路设计罗盘模块在此次设计中主要有两个作用,一个是能够准确定位障碍物的方位,它主要以使用者为参照物,然后用自己设定的八个方位准确定位,来为盲人提供大致方位,二是当一键报警装置启动后,会发送使用者的实时位置,能让别人及时发现盲人在那个地方寻求帮助,在这次使用的主要是三轴数字罗盘,能够准确测量,它的重量较轻,而且体积也很小,应用范围很广。该电子指南针罗盘传感器模块在现代技术条件中电子罗盘作为导航仪器或姿态传感器已被广泛应用。模块接口原理图如图3-8所示。外接5V电源电压,2号管脚接地,SCL为时钟端口,测量定位,SDA为数据端口,主要是用来为单片机传输数据。图3-8传感器接口电路原理图GY-271电子指南针罗盘模块实物图如图3-9所示。图3-9GY-271电子指南针罗盘模块实物图3.6语音芯片电路设计语音播报系统在这个设计中的主要功能是将信息通报给盲人,因为盲人看不见显示屏上的内容,需要通过语音提示,而且语音提示的内容为液晶屏幕显示内容,会播报测得的障碍物距离和位置,这款语音播报共有三个I/O口,没有其它外围设备,再加一个104的电容就可以未定工作,发送模式采用模拟串行的控制方式,需要播放多少内容就会发送多少脉冲,管脚连接为BUSY播放声音,为低电平,当它不工作或者待机时,为高电平,DATA为收到多少内容就播放哪些内容,REST为复位电路。在本电路设计中,通过单片机控制芯片DATA和REST引脚,来实现语音信息的播放,其电路图如图3-10所示,图中电容均为滤波作用。图3-10芯片电路图246723.7GSM短信模块电路设计GSM短信模块的1号引脚,接入5V的电源,但是GSM模块并不是直接给电路接入5伏的电源,而是在接口电路中串联一个发光二极管,利用二极管来给接入电源降压。同时,我们还会给电源电路并联接入一个470uF的电容,来稳定电压。模块的3引脚TX引脚需要连接的是主控芯片的RX引脚,模块的4引脚RX引脚需要接入的是主控芯片的TX引脚。这两的引脚一定要特别的注意,读和写的引脚千万不能接错,否则就会影响GSM模块的短信发送信号的接收。其电路图如图3-11所示。图3-11GSM模块设计图该模块在本设计中的功能就是给我们的手机移动终端发送提示信息,在GSM短信提示模块当中,需要利用PDU的模式,对需要发送给移动终端提示的消息进行编辑,将需要用的信息利用PDU转换器,进行转换,转换成16进制的PDU消息。在编写程序时,将16进制的PDU消息编写进程序当中。其实物图如图3-12所示。图3-12GSM短信模块实物图3.8自动循光系统设计对于智能寻光系统我的设计构想是,有时候盲人可能会走到周围黑暗环境中,或者晚上出行时,由于周围的环境比较黑暗,不容易被人发现,如果在光照条件良好的环境中。它可能会引起周围人的注意,获得帮助,那么自动循光系统会优先设计出一条光线良好的道路供盲人行走,这样即使在环境复杂的环境中,盲人出行也会相对来说比较安全一点。电路图如图3-13所示。图3-13光敏电阻电路本次所使用的光敏电阻就是较为普通的,也可以在市面上低价买到的,它的稳定性相对来说是比较高的,而且体积较小容易安装在装置上。实物图如3-14所示。图3-14光敏电阻传感器4系统软件设计4.1系统总体程序单片机选型为STM32F103C8T6,它的优点是性能强,扩展性强,能够完成整个小装置系统的控制整合。单片机控制系统的设计主要是基于Keil4的软件程序流程的设计,其中包括总体控制程序、超声波避障程序、GSM短信程序、语音播报程序、智能循光程序、定位程序,显示程序。一个完整的设计不仅仅靠的是硬件电路的支撑,而且还需要完整的软件才能使其实现各个功能。本设计采用STM32的单片机来作为主控芯片,它有个优点就是能分模块编程,所以将这次设计的全部程序分为语音播报程序模块,超声波测距程序,罗盘定位程序,GSM短信程序,自动循光程序,液晶显示程序。最后将这些程序整合起来。这样的话可以将软件分开调试,由于整个程序比较复杂,且计算量较大,所以采用keil编程,将模块一个个分开来编写,更容易完成。程序结构流程图如图4-1所示。开始开始系统初始化系统初始化检测按键是否按下否否检测按键是否按下检测液晶屏幕是否显示检测液晶屏幕是否显示罗盘定位是罗盘定位自动循光系统是自动循光系统通过GSM短信模块发送定位超声测距定位通过GSM短信模块发送定位超声测距定位结束结束图4-1系统流程图4.2超声波测距程序本次所采用的是型号为HC-SR04的超声波测距传感器,它的量程差不多为4米,当超过这个范围的障碍物将不会被测到,就不会把数据传到单片机系统,语音播报也不会提醒,具体的程序步骤如图4-2所示。开始开始ECHO接口为高电平,并且触发定时器ECHO接口为高电平,并且触发定时器障碍物是否在监测范围内障碍物是否在监测范围内否定时中断是否已出定时中断是否已出ECHO为低电平,输出距离值ECHO为低电平,输出距离值溢出标志位是溢出标志位图4-2定时器溢出算法流程程序如下:voidEXTI1_IRQHandler(void){ delay_us(10); //延时10usif(EXTI_GetITStatus(EXTI_Line1)!=RESET) { TIM_SetCounter(TIM2,0); TIM_Cmd(TIM2,ENABLE);//开启时钟 while(GPIO_ReadInputDataBit(ECHO_PORT,ECHO_PIN)); //等待低电平 TIM_Cmd(TIM2,DISABLE); //定时器2失能 UltrasonicWave_Distance=TIM_GetCounter(TIM2)*5*34/10.0; //计算距离&&UltrasonicWave_Distance<150单位mm if(UltrasonicWave_Distance>5000)UltrasonicWave_Distance=5000; EXTI_ClearITPendingBit(EXTI_Line1);//清除EXTI7线路挂起位}}voidUltrasonicWave_StartMeasure(void){GPIO_SetBits(TRIG_PORT,TRIG_PIN); //送>10US的高电平RIG_PORT,TRIG_PIN这两个在define中有?delay_us(20); //延时20USGPIO_ResetBits(TRIG_PORT,TRIG_PIN); }4.3语音播报程序设计语音播报系统程序流程图如图4-3所示,首先,我们需要定义语音播报引脚,接通电源后,总控芯片会对模块进行初始化,我们会对液晶屏显示内容进行设置,液晶屏显示内容为罗盘定位方位,超声波测距的距离,然后通过按键启动播报,将信息反馈给盲人,使其辨别方位。规划好自己的路线,从而可以避开前方障碍区,开始开始系统初始化系统初始化启动测距系统,罗盘定位系统否启动测距系统,罗盘定位系统液晶屏幕是否显示内容是液晶屏幕是否显示内容结束结束图4-3语音播报程序流程图程序如下。yyReportReadAdd(86);//播报欢迎使用 Init_HMC5883();//初始化你 delay_ms(100); Init_HMC5883();//再次初始化 Lcd_GPIO_init();//lcd初始化接口 Lcd_Init(); //初始化lcd delay_ms(20); Timerx_Init(5000,7199);//10Khz的计数频率,计数到5000为500ms UltrasonicWave_Configuration();//对超声波模块初始化 Lcd_Puts(0,0,(unsignedchar*)"Init..."); //初始化显示 Xmax=0;Xmin=0;Ymax=0;Ymin=0;Zmax=0;Zmin=0;//初始化中间变量 for(i=0;i<800;i++) { Multiple_Read_HMC5883();//连续读出数据,存储在BUF中x=BUF[1]<<8|BUF[0];//CombineMSBandLSBofXDataoutputregisterz=BUF[5]<<8|BUF[4];//CombineMSBandLSBofZDataoutputregistery=BUF[3]<<8|BUF[2];//CombineMSBandLSBofYDataoutputregister if(x>0x7fff)x-=0xffff; //负值转换 if(y>0x7fff)y-=0xffff; if(z>0x7fff)z-=0xffff; if(x>Xmax)Xmax=x;//获取x轴最大值 if(x<Xmin)Xmin=x;//获取x轴最小值 if(y>Ymax)Ymax=y;//获取y轴最大值 if(y<Ymin)Ymin=y;//获取y轴最小值 if(z>Zmax)Zmax=z;//获取z轴最大值 if(z<Zmin)Zmin=z;//获取z轴最小值 delay_ms(5); } while(1) { if(disFlag==1) //显示 { disFlag=0; UltrasonicWave_StartMeasure(); Multiple_Read_HMC5883();//连续读出数据,存储在BUF中 x=BUF[1]<<8|BUF[0];//CombineMSBandLSBofXDataoutputregister z=BUF[5]<<8|BUF[4];//CombineMSBandLSBofZDataoutputregister y=BUF[3]<<8|BUF[2];//CombineMSBandLSBofYDataoutputregister if(x>0x7fff)x-=0xffff; //负值转换 if(y>0x7fff)y-=0xffff; if(z>0x7fff)z-=0xffff; { yyLater=100;//留出空余时间播报 yyCount++; if(bbDir<22) {yyReportReadAdd(98);}//播报北方向 elseif(bbDir<66) {yyReportReadAdd(103);}//播报东北 elseif(bbDir<110) {yyReportReadAdd(100);}//播报东 elseif(bbDir<156) {yyReportReadAdd(102);}//播报东南 elseif(bbDir<202) {yyReportReadAdd(99);}//播报南 elseif(angle<246) {yyReportReadAdd(104);}//播报西南 elseif(angle<292) {yyReportReadAdd(101);}//播报西 elseif(angle<337) {yyReportReadAdd(105);}//播报西北 else {yyReportReadAdd(98);}//播报北 }elseif(yyCount==84.4GSM短信发送程序设计本模块的主要功能是在按下按键后,罗盘定位获取位置信息,通过GSM模块发送求救短信及位置信息到指定手机。程序流程图如图4-4所示。开始开始系统初始化系统初始化是否检测到按键按下是否检测到按键按下否发送定位是发送定位结束结束图4-4GSM短信发送流程图程序如下。voidUart2InterruptReceive(void)interrupt8unsignedchartmp=0;int8i=0;IE2&=(~ES2);//关闭串口2中断//ES2=O;if(S2CON&S2RI)//if(S2Rl==1)s2CON&=(~S2RI);//S2RI=O;tmp=S2BUF;GsmRcv[GsmRcvCnt]=tmp;GsmRcvCnt++;if(GsmRcv[GsmRcvCnt-2]==Ox0d&&GsmRcv[GsmRcvCnt-1]==Ox0a&&GsmRcvCnt>=2)for(i=O;i<GsmRcvCnt;i++)GsmRcvAt[i]=GsmRcvli];GsmRcv[i]=O;GsmRcvCnt=0;GsmAtFlag=1;elseif(GsmRcvCnt>=99)(GsmRcvCnt=0;}IE2|=ES2;//ES2=1;4.5自动循光程序设计为了能够让盲人行走的环境为光照良好的条件,所以设计了自动循光系统,就是将光敏电阻安装在超声波测距装置的下方,让光敏电阻根据环境变化将路线设计在光照良好的环境里,本模块的作用是自动循光检测到光线将信息传输到单片机系统。单片机收到传感信号根据语音提示将盲人带到光线较好的地方,容易让路人看到盲人的位置,从而进行帮助,系统流程图设计如图4-5所示。开始开始模块初始化模块初始化是否检测到信号是否检测到信号停止 否停止是检测到信号的方向检测到信号的方向 根据语音提示找寻路线根据语音提示找寻路线图4-5智能循光流程图程序如下。voiddelay(uintz);voidInitial_com(void);voiddelay(uintz){

uinti,j;

for(i=z;i>0;i--)

for(j=110;j>0;j--);}voidInitial_com(void){EA=1;

//开口中断ES=1;

//允许串口中断ET1=1;

//允许定时器T1的中断TMOD=0x20;

//定时器T1,在方式2中断产生波特率PCON=0x00;

//SMOD=0SCON=0x50;

//方式1由定时器控制TH1=0xfd;

//波特率设置为9600TL1=0xfd;TR1=1;

//开定时器T1运行控制位}main(){

Initial_com();

while(1)

{

if(key1==0)

{

delay();

//消抖动

if(key1==0)

//确认触发

{

SBUF=0X01;

delay(200);

}4.6按键程序设计本设计的按键功能主要作用是用来作为报警设备的,当盲人走到黑暗环境中时,设备可能检测前方障碍物不是那么准确,而且语音播报频繁,导致辨识方位混乱,在这种情况下,按下按键,则会通过GSM短信模块将自己的定位信息以短信的形式发在指定设备上,且自动循光系统通过光敏电阻找寻光源,将盲人带到有光照的地方,让其它人更容易看到盲人的具体位置。程序设计流程图如图4-6所示。开始开始系统初始化系统初始化按键是否按下按键是否按下通过GSM发送定位是否通过GSM发送定位结束结束图4-6按键流程图按键系统运行程序:#defineKEY_ON0#defineKEY_OFF1

voidKEY_Init(void);u8KEY_Scan(GPIO_TypeDef*GPIOx,u16GPIO_Pin);

4.7罗盘程序设计在此次设计中所使用到的罗盘定位的功能就是精准定位,一是可以让使用者辨别障碍物在自己的什么方位,从而辨别出来,然后避开它。二是当自己遇到困难可以通过定位将自己的具体位置通过短信模块发送在指定手机设备上,让救助者能准确找到自己的位置。具体程序流程图如图4-7所示。开始开始前方是否有障碍物系统初始化前方是否有障碍物系统初始化否 否是结束定位结束定位图4-7罗盘定位流程图程序设计如下。unsignedcharHMC5883_RecvByte(void){unsignedchari;unsignedcharMid;unsignedchardat=0; SDA_INT();SCL_OUT(); //SDA=1;//使能内部上拉,准备读取数据,for(i=0;i<8;i++)//8位计数器{dat<<=1;delay_us(5);//延时 SCL=1;//拉高时钟线 if(SDA_V==1)//dat|=SDA;//读数据 { Mid=1; } else { Mid=0; }if(Mid)dat++; delay_us(5);//Delay5us();//延时SCL=0;//拉低时钟线//delay_us(6);//Delay5us();//延时}returndat;}4.8液晶显示程序设计本次设计中的液晶显示模块主要的作用是用来协助语音播报的,整个装置通过超声波测距,罗盘定位将所得到的信息反馈单片机系统,然后单片机系统将所得到的信息通过字符显示在液晶屏上,然后语音播报出来,提醒盲人。具体流程图如图4-8所示。开始开始系统初始化系统初始化是否测距,定位 是否测距,定位显示 是 否显示结束结束图4-8液晶显示流程图程序设计如下。if(angle>180)angle=angle-360; if(angle<22) {sprintf(dis0,"DIR:N");}//%.1f",angle);}//打印显示 ");}// elseif(angle<66) {sprintf(dis0,"DIR:EN");}//%.1f",angle);} elseif(angle<110) {sprintf(dis0,"DIR:E");}//%.1f",angle);}//打印显示 elseif(angle<156) {sprintf(dis0,"DIR:ES");}//%.1f",angle);}//打印显示 elseif(angle<202) {sprintf(dis0,"DIR:S");}//%.1f",angle);}//打印显示 elseif(angle<246) {sprintf(dis0,"DIR:WS");}//%.1f",angle);}//打印显示 elseif(angle<292) {sprintf(dis0,"DIR:W");}//%.1f",angle);}//打印显示 elseif(angle<337) {sprintf(dis0,"DIR:WN");}//%.1f",angle);}//打印显示 else {sprintf(dis0,"DIR:N");}//%.1f",angle);}//打印显示 Lcd_Puts(0,0,(u8*)dis0);//显示 sprintf(dis1,"now:%4.2fm",(float)UltrasonicWave_Distance/1000); Lcd_Puts(0,1,(unsignedchar*)dis1); //初始化显示 } if(key==0)//撤销设置 { if(yyFlag!=1)//语音不处于播报情况 { yyFlag=1;//开始播报 yyLater=0;//语音延时 yyCount=0;// } } reportYy(); } } voidyyReportReadAdd(unsignedintyyAdd)//语音播报地址{ yy_rest=0; //yyxp(语音芯片的简写,下同)的复位脚为高电平// delay_us(300); //持续200us// yy_rest=1; //然后复位脚置零// delay_us(300); yy_rest=0; //yyxp(语音芯片的简写,下同)的复位脚为高电平// delay_us(300);//持续200us// yy_rest=1; //然后复位脚置零// delay_us(300); while(yyAdd>0) //若等于0则不工作,若大于0则继续自减// { yy_data=0; //data脚位为高电平// delay_us(300); //持续100us// yy_data=1; //然后置零// delay_us(300);//持续100us这三句的意思就是发从一个100us的脉冲(高低各100us)// yyAdd--; //z自减完成后开始播放对应的语音(因为z是几就播放第几段)// } delay_ms(5);}5系统安装与调试5.1硬件安装5.1.1电路焊接本次设计需要焊接的模块有很多,需要手工焊接,模块位置可以根据情况调整,焊接过程中,根据电路原理图焊接各个模块,第一步开始布局调整。首先应该规划好电路布局,合理安排每个模块的位置,尽量使走线能够短一点,线路简单明了。然后将各个元器件的引脚稍微调整一下,用镊子轻微调整亦可,防止用力过猛损坏引脚。保证工作台面的干净,防止其它多余物产生。使焊接电路出现短路情况。第二步开始焊接。首先需要清洁焊接部位和电洛铁焊头,如果有灰尘或其它多余物,则会导致焊接不牢等问题出现,接下来,要给电洛铁升温,温度须达到350-400℃,然后开始焊接,将元器件引脚和焊锡丝加热,将焊锡丝熔化,注意加热时间,时间过长会焊坏电路板,时间过短则会导致焊锡丝没有完全熔化,导致虚焊等问题。在焊接过程中,如果焊接错误,导致放错贴片或者插件放错方向,需要取下重新焊接,则需加热焊接部位,熔化焊锡,切记时间不能过长,不然会焊坏电路板,时间过短,则会导致焊接部位没有完全熔化,强行取下直接导致元器件损坏。第三步清理表面多余物。在焊接好电路后,则需要仔细观察。看看有没有虚焊或者焊接工艺不达标的情况,如果有则需要及时补救,主要的情况有要么焊锡太少,需要补焊,不然可能会导致时间久了会出现短路,还有一种就是焊丝过多,焊点过大,与其它引脚连在一起了,还有就是管脚比较多的芯片焊接时可能会不注意将几个引脚焊在一起,要焊这种芯片,需要掌握拖焊技巧,将芯片固定后,将焊丝在各个引脚上拖一遍,则会焊接良好。第四步检查电路板:当其它三步完成后,就需要观察焊点,注意看焊点的亮度,以及焊点是否焊牢,如果电路不能实现其功能,需要用到万用表来检测电路。5.1.2超声波测距的改进这次超声波测距采用的是往返折中法,用这种方法测距需要注意的是时间要短,如果时间过长,则会导致测量记录不够准确,还有就是测量障碍物的范围不够,它只能测得距离障碍物正前方的距离,而不能测下方距离。所以前面的障碍物有多大,是个什么样的障碍物也不会知道,在超声波测距的影响因素中,温度也是影响超声测距的一大因素,如果测量环境温度高,测量时超声传播速度较快,反之亦然。还有就是超声波测到的障碍物不同,则反射回来的力道不一样,也可能会存在一些误差,所以要改进这些误差,要在超声波测距系统里增加一些超声波发射电路、超声波接收电路、温度补偿电路等来提高测距的准确性。超声波测距确有一些自身原因需要不断改进,那么就需要我们在设计的时候将设计方案不断完善,减少误差。超声波测距实物图如图5-1所示。图5-1为超声波测距实物图5.1.3液晶屏显示如图5-2所示。液晶屏显示内容为第一行罗盘测试方位,有八个方位显示,第二行为超声波测距距离。图5-2液晶显示内5.2软件调试再焊接完硬件后就需要编写各个模块的程序了,首先应该将各个模块的程序编写好,然后将它们整合在主函数程序里,编写完各个模块的程序要进行编译,编译完成后通过下载器验证是否实现了需要实现的功能,如果有功能未实现,则需不断完善。在此次设计中,所用到的软件编辑程序是keil5,因为在学校学习相关课程时,keil5会经常用到,而且也比较熟悉,它于C语言相比,它可以将程序分为几个模块编写,完了之后通过主函数程序将各个模块合并起来,既能互不影响又能相互协调。而且keil软件可以和STM单片机能够更好地搭建。而且keil本身的仿真调试器比较强大,开发方案也很完整,如果本次软件程序编写使用keil进行编写,则会更加容易更加方便。Keil编写界面如图5-3所示。图5-3KeiluVision5编辑界面图这次设计的主控芯片为STM32F103C8T6的单片机,而所用到的编程软件为keil,首先我们需要建立工程文件,然后保存下来,接着需要在keil中选择单片机型号,再新建编辑页面,然后添加其它模块函数,最后把其它模块整合起来,在主函数里表达的就是要让这个装置实现什么功能,要将管脚定义好,系统初始化,然后开始编写,我编写主程序的思路就是先通过超声波测距和罗盘定位装置将测到的信息在液晶屏上显示出来,然后在编写语音播报模块,再编写一键报警按键,将GSM短信通信模块加入里面,最后加入自动寻光系统,然后开始编译程序,编译完成结果如图5-4所示。图5-4编译完成界面编译好的程序有两处建议修改地方,可以选择修改,也可以选择不修改,因为它不会导致程序出错,然后通过生成的.h文件,将程序通过下载器烧录到单片机里,然后检测是不是实现了自己预期的功能。5.3改进及建议刚开始的计划就是通过语音提醒盲人前方是否有障碍物而设计的,然后又加入了一键报警自动发送定位,循光系统,但在后期的设计中,如果再加入导航,语音交流模块,智能循迹模块更加方便盲人使用,盲人可以通过语音交流模块输入自己想去的地方,系统智能模块选择一条障碍物少而且更加适合盲人的道路,现在一般城市都有盲道供盲人出行,可以通过黄色盲道循迹,这样更能保障盲人出行的安全。结束语本次毕业设计从盲人出行的实际问题和盲人出行时遇到的一些不便之处为研究目的,论述了盲人避障的意义与应用,当然,这款设计不仅仅可以用来避障,它还可以用来当做简易倒车装置,正常的倒车影像对于有些人来说花费可能过于太高,但是这款设计也可以精确定位,测距防止倒车时撞上其它的东西。基于此设计一款基于STM32单片机的语音提示躲避障碍物的智能小装置,它由STM32F103C8T6单片机核心板控制模块、超声波测距模块、GY-271电子指南针罗盘模块、NY3P065BP8语音模块、GSM短信模块、自动循光模块、按键及电源组成。当开关启动后,使用者将装置安装在正前方,然后超声波测距模块将检测到障碍物的距离通过单片机传输到液晶屏上,罗盘定位系统将障碍物的方位显示在液晶屏幕上,语音功能根据液晶屏显示内容播报。完成避障。然后当盲人处于复杂的环境中。可能会导致语音播报频繁,打乱盲人判断方位的思路。然后通过一键报警装置,将自己的定位通过GSM短信通讯模块发送到指定手机设备上。让接收者能找到盲人到的具体位置,从而能更及时的帮助。对于智能寻光系统我的设计构想是,有时候盲人可能会走到周围黑暗环境中,或者晚上出行时,由于周围的环境比较黑暗,不容易被人发现,如果在光照条件良好的环境中。它可能会引起周围人的注意,获得帮助,那么自动循光系统会优先设计出一条光线良好的道路供盲人行走,这样即使在环境复杂的环境中,盲人出行也会相对来说比较安全一点。参考文献[1]向长秋,胡湘娟,阳泳.基于AT89C51单片机的盲人避障装置的设计[J].科技展望,2015,25(30).[2]苏扬,刘文言,刘潇,等.基于模糊控制的盲人避障系统设计[J].信息网络安全,2014(06):67-71.[3]袁珍.一种基于树莓派的盲人避障导航手杖[J].鄂州大学学报,2020,v.27;No.146(04):99-101.[4]罗凤,徐观亚,汪衡,等.基于STM32的盲人避障仪设计[J].电子制作,2016,No.298(01):72-72.[5]吴松健、张冰、袁志杰、周佳泽、钟南.可穿戴式导盲机器人的设计[J].科技经济导刊,2020,v.28;No.725(27):37-38.[6]吴青明.一种盲人智能导航避障出行辅助方法及系统:,CN108743266A[P].2018.[7]高禹熙.基于太阳能的智能避障拐杖设计[J].大科技,2019,000(004):278.[8]安业,李光胜,杜青,等.盲人语音导航避障系统的设计[J].电子测试,2020(17).[9]马士佳,翟佳琪,孔殿凯,等.一种智能巡航导盲车的设计及实现[J].科技与创新,2020(20).[10]夏琪拉.一种盲人避障报警装置及其探测盒:,CN211086601U[P].2020.[11]董云飞,钟万福,梁子杰,等.基于北斗导航的导盲无人机[J].科技创新与应用,2020,No.299(07):41-43.[12]何月阳,欧美英,段祥瑞,等.基于STMC89C51的避障智能盲人眼镜设计[J].科学技术创新,2020(31).附录A原理图附录B实物图附录C主要程序#include"UltrasonicWave.h"unsignedintbbJL=0;unsignedintbbDir=0;chardis0[16];chardis1[16];externunsignedcharBUF[8]; externvoidInit_HMC5883(void);externvoidexternvoidMultiple_Read_HMC5883(void);nsignedcharyyCBount=0;unsignedcharyyFBlag=0;unsignedcharyyLBater=10;unsignedintbbJL=0;//播报距离unsignedintbbDir=0;//播报方向intx,y,z;doubleangle;unsignedinti;u8disFlag=0;voidreportYy(void);voidyyReportReadAdd(unsignedintyyAdd);intmain(void){ yyReportReadAdd(86); Init_HMC5883(); delay_ms(100); Init_HMC5883(); Lcd_GPIO_init(); Lcd_Init(); delay_ms(20); Timerx_Init(5000,7199); UltrasonicWave_Configuration(); Lcd_Puts(0,0,(unsignedchar*)"Init..."); Xmax=0;Xmin=0;Ymax=0;Ymin=0;Zmax=0;Zmin=0; for(i=0;i<800;i++) { Multiple_Read_HMC5883();x=BUF[1]<<8|BUF[0];//CombineMSBandLSBofXDataoutputregisterz=BUF[5]<<8|BUF[4];//CombineMSBandLSBofZDataoutputregistery=BUF[3]<<8|BUF[2];//CombineMSBandLSBofYDataoutputregister if(x>0x7fff)x-=0xffff; if(y>0x7fff)y-=0xffff; if(z>0x7fff)z-=0xffff; if(x>Xmax)Xmax=x; if(x<Xmin)Xmin=x; if(y>Ymax)Ymax=y; if(y<Ymin)Ymin=y; if(z>Zmax)Zmax=z; if(z<Zmin)Zmin=z; delay_ms(5); } while(1) { if(disFlag==1) { disFlag=0; UltrasonicWave_StartMeasure(); Multiple_Read_HMC5883(); x=BUF[1]<<8|BUF[0];//CombineMSBandLSBofXDataoutputregister z=BUF[5]<<8|BUF[4];//CombineMSBandLSBofZDataoutputregister y=BUF[3]<<8|BUF[2];//CombineMSBandLSBofYDataoutputregister if(x>0x7fff)x-=0xffff; if(y>0x7fff)y-=0xffff; if(z>0x7fff)z-=0xffff; angle=atan2((double)y,(double)x)*(180/3.14159265)+180;//angleindegrees if(angle>180)angle=angle-360; if(angle<22) {sprintf(dis0,"DIR:N"); elseif(angle<66) {sprintf(dis0,"DIR:EN"); elseif(angle<110) {sprintf(dis0,"DIR:E"); elseif(angle<156) {sprintf(dis0,"DIR:ES"); elseif(angle<202) {sprintf(dis0,"DIR:S"); elseif(angle<246) {sprintf(dis0,"DIR:WS"); elseif(angle<292) {sprintf(dis0,"DIR:W"); elseif(angle<337) {sprintf(dis0,"DIR:WN"); else {sprintf(dis0,"DIR:N"); Lcd_Puts(0,0,(u8*)dis0); sprintf(dis1,"now:%4.2fm",(float)UltrasonicWave_Distance/1000); Lcd_Puts(0,1,(unsignedchar*)dis1); } if(key==0) { if(yyFlag!=1) { yyFlag=1; yyLater=0; yyCount=0; } } reportYy(); } } voidyyReportReadAdd(unsignedintyyAdd) yy_rest=0; delay_us(300); yy_rest=1; delay_us(300); yy_rest=0; delay_us(300); yy_rest=1; delay_us(300); while(yyAdd>0) { yy_data=0; delay_us(300); yy_data=1; delay_us(300); yyAdd--; } delay_ms(5);}voidreportYy(void){ staticunsignedcharmidVal=0;if(yyFlag==1) {if(yyLater==0){ if(yyCount==0){yyLater=40; yyCount++; yyReportReadAdd(16); bbJL=UltrasonicWave_Distance; bbDir=angle; }elseif(yyCount==1){ yyLater=40; yyCount++; yyReportReadAdd(20);

温馨提示

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

评论

0/150

提交评论