基于GPS的夜间巡逻机器人.docx
《基于GPS的夜间巡逻机器人.docx》由会员分享,可在线阅读,更多相关《基于GPS的夜间巡逻机器人.docx(19页珍藏版)》请在冰豆网上搜索。
![基于GPS的夜间巡逻机器人.docx](https://file1.bdocx.com/fileroot1/2023-5/15/55d1f8b4-d6a8-4fbe-a579-16e21605d173/55d1f8b4-d6a8-4fbe-a579-16e21605d1731.gif)
基于GPS的夜间巡逻机器人
基于GPS的夜间巡逻机器人设计
目录
1.绪论-4-
1.1夜间巡逻机器人的作用和意义-4-
1.2社区安保的现状-4-
2.方案设计与论证-4-
2.1主控系统-4-
2.2电机驱动模块-5-
2.3预定黑线路径识别模块-6-
2.5语音模块-7-
2.6电源模块-8-
2.7液晶模块-8-
3.硬件设计-8-
3.1总体设计-8-
3.2驱动电路-8-
3.3循迹模块-10-
4.软件设计-11-
4.1可视化界面-11-
4.2功能简介-12-
4.3功能的实现-12-
5.制作安装与调试-16-
结束语-17-
致谢-17-
参考文献-18-
基于GPS的夜间巡逻机器人设计
摘 要:
利用人体红外技术侦测机器人附近的人员;利用GPS导航定位来确定机器人的方位;利用红外技术进行蔽障功能的实现;利用VB软件实现监控中心功能的实现。
以STC89C52为控制芯片控制巡逻机器人的运行状态。
其中机器人呢驱动由L293D驱动电路完成,电机的转速由单片机输出的PWM波控制,并在机器人与人员信息交换过程中实现自动语音播报和液晶显示功能。
关键词:
自动化运行;STC89C52单片机;L293D;红外对管;语音芯片ISD4004;液晶显示;GPS定位;
1.绪论
1.1巡逻机器人的意义和作用
随着我国经济的快速发展,人民的生活水平有了显著提高。
在千家万户安居乐业的同时,如何保障人民的生命财产安全成为摆在我们面前的一个重要问题。
机器人主要应用于小区、工厂等地的保卫巡逻任务,具有工作时间长,隐蔽性好,准确率高等优点。
替代人员或与人员结合使用可以保证保卫目标的安全。
本设计的机器人,是多个自动巡逻轮式机器人,它可以根据监控中心规定的路线巡逻,并且能够发现距它一定距离内的人并发出提醒,若被发现人员不能在规定的时间内给出密码,则机器人会向监控中心发出警报,并利用GPS定位。
到目前为止还未发现国内外有相似的装置和研究。
1.2社区安保的现状
目前,比较通用的办法是,小区物业招聘保安,成立夜间巡逻队。
实践证明这种方法,虽然能起到一定的作用,但缺陷也是非常明显的。
首先,由人构成的夜间巡逻队伍不能保证不遗留死角。
其次,人在深夜容易瞌睡,保安人员会发生脱岗漏岗睡岗现象。
第三,小区保安即使发现有可疑人员也无法迅速通知监控中心。
鉴于此,我们设计制作了基于GPS的夜间巡逻机器人(下称机器人)。
2.方案设计与论证
购买原材料自行设计搭建,可分为六大组成部分:
传感器检测部分、执行部分、CPU、GPS、无线通信和提示部分。
机器人要实现智能驾驶和定位,除无人驾驶以外,可以监测机器人附近的人员,与监控中心实时通信,GPS定位等功能。
加装红外对管检测器,实现对机器人行进路径上障碍物的检测,并将测量数据传送至单片机进行处理,然后由单片机根据所检测的各种数据实现对障碍物的智能避让。
加装GPS定位系统,可以实现机器人的实时定位。
当检测到可以人员以后会立即将此时的经纬度坐标发送至监控中心。
这种方案能实现对机器人的运动状态进行实时控制,并且控制灵活、可靠,精度高,可满足对系统的各项要求。
2.1主控系统
根据设计要求,此设计属于多输入量的复杂程序控制问题。
据此,拟定了以下两种方案并进行了综合的比较论证,具体如下:
方案一:
选用一片CPLD(如EPM7128LC84-15)作为系统的核心部件,实现控制与处理的功能。
CPLD具有速度快、编程容易、资源丰富、开发周期短等优点,可利用VHDL语言进行编写开发。
但CPLD在控制上较单片机有较大的劣势。
同时,CPLD的处理速度非常快,而列车的行进速度不可能太高,那么对系统处理信息的要求也就不会太高,在这一点上,MCU就已经可以胜任了。
若采用该方案,很可能在控制上遇到许许多多不必要增加的难题。
为此,我们不采用该种方案,进而提出了第二种设想。
方案二:
采用单片机作为整个系统的核心,用其控制行进中的列车,以实现其拟定的性能指标。
充分分析我们的系统,其关键在于实现列车的自动控制,而在这一点上,单片机就显现出来它的优势——控制简单、方便、快捷。
这样一来,单片机就可以充分发挥其资源丰富、有较为强大的控制功能及可位寻址操作功能、价格低廉等优点。
因此,这种方案是一种较为理想的方案。
针对本设计特点——多开关量输入的复杂程序控制系统,需要擅长处理多开关量的标准单片机,而不能用精简I/O口和程序存储器的小体积单片机,D/A、A/D功能也不必选用。
根据这些分析,我选定了STC89C52单片机作为本设计的主控装置,该单片机具有功能强大的位操作指令,I/O口均可按位寻址,程序空间充足,满足本设计的要求。
在综合考虑了传感器、电机的驱动等诸多因素后,我们决定采用一片单片机,充分利用STC89C52单片机的资源。
2.2电机驱动模块
方案一:
采用继电器对电动机的开或关进行控制,通过开关的切换对列车的速度进行调整.此方案的优点是电路比较简单,缺点是继电器的响应时间慢,机械结构易损坏,寿命较短,可靠性不高。
方案二:
采用电阻网络或数字电位器调节电动机的分压,从而达到分压的目的。
但电阻网络只能实现有级调速,而数字电阻的元器件价格比较昂贵,且可能存在干扰。
更主要的问题在于一般的电动机电阻很小,但电流很大,分压不仅回降低效率,而且实现很困难。
方案三:
采用功率三极管作为功率放大器的输出控制直流电机。
线性型驱动的电路结构和原理简单,加速能力强,该器件的所有输入与TTL兼容,其输出采用达林顿晶体管接收器和伪达林顿源构成的“图腾柱”驱动电路。
用单片机控制达林顿管使之工作在占空比可调的开关状态下,精确调整电动机转速。
这种电路由于工作在管子的饱和截止模式下,效率非常高。
综上,选用方案三L293D(如图2.2)。
图2.2L293D
2.3预定黑线路径识别模块
方案一:
采用简易光电传感器结合外围电路探测,但实际效果并不理想,在行驶过程中的稳定性不高,且误测几率较大、易受光线环境和路面介质影响。
使用过程极易出现问题,而且容易因为该部件造成整个系统的工作不稳定。
故最终未采用该方案。
方案二:
采用四支飞思卡尔光电对管成横排置于机器人前部,边上两支用于检测转弯直线,使机器人完成大角度转弯。
中间两支用于检测小角度直线,使得机器人完成沿着曲线大致呈直线行进。
2.4避障模块
方案一:
采用二只红外对管分别置于机器人的前端两侧,方向与机器人前进方向平行;两只红外对管分别置于机器人两侧,方向与机器人前进方向垂直;对机器人与障碍物相对距离和方位能作出较为准确的判别和及时反应。
方案二:
采用一只红外对管成品置于列车中央。
优点在于所用对管较少,成本较低。
但一只红外对管无法准确判定小车周围情况,运行不稳定。
通过比较采用方案一
2.5语音模块
方案一:
采用APR9600语音录放集成电路。
这是一种永久记忆型语音录放电路,可重复录放10万次。
该芯片采用多电平直接模拟量存储专利技术,单片电路可录放32~60秒,串行控制时可分256段以上,并行控制时最大可分8段。
与ISD同类芯片相比它具有价格便宜、多种手动控制方式、分段管理方便、多段控制时电路简单、采样速度及录放音时间可调、每个单键均有开始停止循环多种功能等特点。
然而其处理速度有限,无法满足本设计的需要。
方案二:
采用ISD4004作为主控芯片,ISD4004单片录放时间8~16分钟,音质好,芯片采用CMOS技术,内含振荡器、防混淆滤波器、平滑滤波器、音频放大器、自动静噪及高密度多电平闪烁存储阵列。
而且芯片的所有操作由单片机控制,操作指令可以通过SPI串行通信接口送入单片机。
由于芯片采用了多电平直接模拟量存储技术,每个采样值直接存储在片内闪烁存储器中,因此能够非常真实、自然地再现语音、音调和效果声,避免了一般固体录音电路因量化和压缩造成的量化噪声和“金属声”。
并且片内信息可在断电情况下保存100年以上,反复录音10万次以上。
ISD4004开发应用具有所需外围电路简单的优点,这一点从本文介绍的其在语音播报中的实际应用中可以体会到。
故系统选用方案二。
2.6电源模块
方案一:
采用实验室有线电源通过稳压芯片供电,其优点是可稳定的提供5V电压,但占用资源过大,而且不能实现远距离运行。
方案二:
用两套9v蓄电池对驱动系统供电,用6节1.5v干电池对单片机供电,将电机驱动电源与单片机及传感器电源完全隔离。
这样可以彻底解决电机运行对系统稳定性的影响,从而提高列系统的可靠性。
密码盒部分用6节1.5v干电池供电。
无线收发模块用4节1.5v干电池供电。
综上,选择了方案二来实现供电。
2.7液晶模块
带中文字库的128X64是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128×64,内置8192个16*16点汉字,和128个16*8点ASCII字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。
可以显示8×4行16×16点阵的汉字.也可完成图形显示.低电压低功耗是其又一显著特点。
由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。
3.硬件设计
3.1总体设计
机器人采用直流电机驱动,可沿预定黑线行进,也可通过GPS系统定位从而实现自动行进,配备语音播报和液晶显示双重提示系统。
将红外光电对管分别装在机器人前端和左右两侧。
当侧方红外对管检测到时,小车远离此方向;当前方红外对管检测到时,小车进行大角度转弯。
运用飞思卡尔光电对管检测道路上的黑线,使机器人沿黑线前进。
红外探人模块用于探测距机器人一定距离内的人员。
密码盒搭载于机器人上,当红外探人模块探测到人员时,密码盒上的语音模块发出警告,通知人员输入密码和身份证号。
同时12864液晶屏上显示相关提示。
密码盒和上位机处装有cc1100-232无线数据收发模块用于数据的实时收发。
3.1.1主板设计框图如图3.1,
图3.1主板设计框图
3.2驱动电路
L293D是美国德州仪器生产的一款电机控制器件,该器件具有4个大电流半H驱动结构,这种结构可以在4.5V~36V电压的下提供高达600mA的电流。
该器件主要用于驱动感性负载,如继电器、螺线管、直流或者双极性步进电机等。
从而可以采用L293D电路来驱动电机。
通过单片机给予L293D电路PWM信号来控制列车的速度,起停。
其引脚图如3.2。
图3.2L293D电路图
图3.3L293D管脚图
3.3循迹模块
机器人循迹方法原理是,用红外光电对管检测道路上预先铺设的黑线,由于轨道是黑色的,黑色和白色对光线的反射系数不同,如果遇到障碍物也都可根据接收到的反射光的强弱来判断路况。
笔者在该模块中利用了简单、应用也比较普遍的检测方法——红外探测法。
在机器人行驶过程中不断地向地面发射红外光,当红外光遇到白色地面时发生漫发射,反射光被装在机器人上的接收管接收;如果遇到黑线则红外光被吸收,则机器人上的接收管接收不到信号,再通过LM324作比较器来采集高低电平,如果遇到障碍物,则机器人上的接收管收到反射信号,通过单片机采集高低电平,从而实现信号的检测。
路况检测电路图如图3.4。
市面上有很多红外传感器,在这里我选用飞思卡尔光电对管检测黑白地面,用E3F-DS30C4型光电开关检测障碍物。
图3.4循迹原理图
4.软件设计
4.1可视化界面
4.2功能简介
上位机发出运行的指令,小车开始沿着指定的路径开始运行,运行过程中不断更正行驶的路线,当小车检测到人时,小车停止并要求输入密码。
若密码输错三次,上位机发出警报;密码输入正确时,小车发出语音,要求输入证件号码以校对身份,若身份无误,则小车继续运行。
在小车探测到人后,错误的输入就会使上位机发出警报,下位机发出语音要求可疑人员在原地等待值班员的巡视。
若输入无误,上位机进行初始化,小车发出语音提示可以离开。
4.3功能的实现
PublicnAsString,s1AsString,s2AsString,t1AsInteger,t2AsInteger
PrivateDeclareFunctionPlaySoundLib"winmm.dll"Alias"PlaySoundA"(ByVallpszNameAsString,ByValhModuleAsLong,ByValdwFlagsAsLong)AsLong
PrivateConstSND_ALIAS=&H10000
PrivateConstSND_ALIAS_ID=&H110000
PrivateConstSND_ALIAS_START=0PrivateConstSND_APPLICATION=&H80
PrivateConstSND_ASYNC=&H1
PrivateConstSND_FILENAME=&H20000
PrivateConstSND_LOOP=&H8
PrivateConstSND_MEMORY=&H4
PrivateConstSND_NODEFAULT=&H2
PrivateConstSND_NOSTOP=&H10
PrivateConstSND_NOWAIT=&H2000
PrivateConstSND_PURGE=&H40
PrivateConstSND_RESERVED=&HFF000000
PrivateConstSND_RESOURCE=&H40004
PrivateConstSND_SYNC=&H0
PrivateConstSND_TYPE_MASK=&H170007
PrivateConstSND_VALID=&H1F
PrivateConstSND_VALIDFLAGS=&H17201F
PrivateSubCommand1_Click()
IfMsgBox("确实要推出本程序吗?
",vbOKCancel+vbInformation+vbDefaultButton2+vbSystemModal,"信息")=vbOKThen
MSComm1.PortOpen=False
UnloadMe
End
Else
Cancel=1
EndIf
EndSub
‘重新设置密码
PrivateSubCommand2_Click()
n=InputBox("输入新密码(6位):
","重置")
IfLen(n)<>6Then
MsgBox("重新输入")
EndIf
EndSub
‘初始化
PrivateSubCommand3_Click()
Picture2.Picture=LoadPicture()
Label1.Caption=""
Text4.Text=""
EndSub
‘功能测试
PrivateSubCommand4_Click()
t1=1400
t2=0
Timer4.Enabled=True
EndSub
PrivateSubCommand5_Click()
Timer4.Enabled=False
Text1.Text=""
Text2.Text=""
Text3.Text=""
Picture1.Refresh
EndSub
‘命令小车开始运行
PrivateSubCommand6_Click()
MSComm1.Output=Hex(8)
MSComm1.Output=Hex(5)
PlaySound"D:
\智能小车2011毕升杯\开始.wav",ByVal0&,SND_FILENAMEOrSND_ASYNC‘发出开始运行的声音命令
EndSub
PrivateSubForm_load()
Timer4.Enabled=False
t1=Val(Text1.Text):
t2=Val(Text2.Text)
Timer1.Enabled=True
MSComm1.PortOpen=True‘打开串口
Timer3.Enabled=True
科技创新.Visible=False
Form1.Show
EndSub
‘主要的判断语句,控制上位机与下位机的通讯,从而控制小车的运行
PrivateSubTimer1_Timer()
DimzAsString
StaticiAsInteger,mAsString
m=123456
IfLen(n)=6Then
m=n
EndIf
IfMSComm1.InBufferCount>0Then
Text3.Text=MSComm1.Input‘提取下位机发出的信息
z=Text3.Text
a=Mid(z,1,2)
Ifa="31"Then
Text1.Text=m:
Text2.Text=Mid(z,7,4)
EndIf
IfText3.Text="7"Then
MSComm1.Output=Hex(6)
EndIf
‘提取GPS的坐标
Ifa="33"Then
Forb=6ToLen(z)Step1
IfMid(z,b,1)<>"N"Then
c=c+1
Else
Text1.Text=Mid(z,6,c):
ExitFor
EndIf
Nextb
Text2.Text=Mid(z,b+1,Len(z)-b)
EndIf
‘校对证件号码
Ifa="51"Then
IfMid(z,3,6)="300300"Then
Picture2.Picture=LoadPicture("D:
\军人.icon")
MSComm1.Output=Hex
(1)
Text4.Text="张晓东"
Label1.Caption="航空大学"
EndIf
IfMid(z,3,6)="298298"Then
Picture2.Picture=LoadPicture("D:
\军人.icon")
MSComm1.Output=Hex
(1)
Text4.Text="张国栋"
Label1.Caption="航空大学"
EndIf
Ifa="51"Then
IfMid(z,3,6)<>"300300"AndMid(z,3,6)<>"298298"Then
Label1.Caption="身份错误"
MSComm1.Output=Hex(4)
PlaySound"D:
\警告.wav",ByVal0&,SND_FILENAMEOrSND_ASYNC
Picture2.Picture=LoadPicture("D:
\土匪.icon")
EndIf
EndIf
EndIf
‘设置3次密码错误的机会
Ifa="21"Then
IfMid(z,3,6)<>mThen
i=i+1
Label1.Caption="密码错误"&i&"次"
MSComm1.Output=Hex
(2)
Ifi>=3Then
Label1.Caption="密码错误"&i&"次"
Label1.FontSize=15
Label1.Caption="警告!
发现可疑人物!
"
PlaySound"D:
\警告.wav",ByVal0&,SND_FILENAMEOrSND_ASYNC
Picture2.Picture=LoadPicture("D:
\土匪.icon")
EndIf
Else
Label1.Caption="密码正确,正在输入ID...":
i=0
MSComm1.Output=Hex(3)
Label1.FontSize=10
EndIf
EndIf
EndIf
EndSub
PrivateSubTimer2_Timer()
StaticxAsDouble,yAsDouble
x=Val(Text1.Text)
y=Val(Text2.Text)
Picture1.DrawWidth=8
Picture1.Scale(0,0)-(10000,10000)
Picture1.Refresh
Picture1.PSet(x,y),RGB(255,0,0)
EndSub
PrivateSubTimer3_Timer()
t=t+1
Ift=1Then
Form1.Visible=False
EndIf
EndSub
PrivateSubTimer4_Timer()
Text1.Text=t1
Text2.Text=t2
Text3.Text=t1&"N"&t2&"E"
t1=t1+200
t2=t2+720
EndSub
5.制作安装与调试
5.1PCB的设计制作与安装
采用DXP2004绘制原理图与PCB板,布线的过程中必须注意焊盘的大小与铜线的宽度。
我选取的焊盘内径为0.8mm,外径2mm;铜线宽1mm。
从做板的情况来看基本达到制作得要求。
5.2列车调试
通过改变循迹板滑动变阻器器的大小来调试红外对管的灵敏度,通过改变延时程序来改变速度的大小。
结束语
整个系统的设计以STC89C52单片机为控制核心,利用了多种传感器,液晶,GPS模块,无线收发某快和语音芯片,将软件和硬件相结合。
本系统能实现如下功能:
(1)机器人通过GPS定位系统实现按照监控中心的指令行进,同时也可以按照预先铺设的路径行进。
(2)机器人利用红外探人模块探测一定距离内的人员,并且识别检测到得人员的身份,若为非法人员则立即向监控中心报警并将此时的经纬度发送到监控中心。
从运行情况来看,机器人完全实现了上述功能。
但红外探人模块的灵敏度不可调节,只能在其上粘贴纸片等,故在探测人员方面还不是很稳定,需要继续完善。
并且我们计划接下来在机器人上搭载摄像头,将机器人拍摄到的画面实时传送到监控中心。
通过本次设计笔者在知识体系上将理论与实践有机结合,理论为实践奠定重要的设计基础,实践使理论得以更全面的升华;同时在整个制作过程中集中补充了智能列车目前国内外发展的最新情况和最先进的集成电路的使用方法;在时间紧任务急得情况下,我们牺牲了几乎所有