找回密码
 注册

QQ登录

只需一步,快速开始

楼主: 紫电清霜

[游记攻略] 自己动手打造最低成本GPS

[复制链接]
发表于 2007-6-18 05:52:00 | 显示全部楼层 IP归属地:
火车不是推的,牛B不是吹的.楼主是很厉害的<img alt="" src="/oldbbs/editorFace/thumbsup.gif" />
 楼主| 发表于 2007-6-18 06:38:00 | 显示全部楼层 IP归属地:
<p>各位前辈千万不要这样夸我,这只是万里长征第一步,离我父亲对我的要求差远了,他玩电子已经四十多年了哦。</p>
<p>下面接着介绍软件部分,前辈们忍让一下,可能会比较枯燥哦。</p>
<p>基于单片机的GPS软件设计思路 <br />
该GPS设计的核心部分是GPS接收模块与单片机的通讯,以及单片机将收到的信息筛选编排显示位置后送到LCM液晶模块显示。 <br />
在设计该软件时采用了模块化的思想,之所以采用的模块化的设计思想,主要是想到了软件模块化后方便软件的调试,同时也方便了该软件的移植,在不同的硬件平台上运行该软件只需要更改相应的软件模块就可以实现。该软件分为了串口初始化模块,液晶模块初始化模块,数据接收模块,数据格式调整送显模块这四个主要模块。 </p>
<p>下图是我设计的软件流程。</p>
<p><a href="/User/2007/06/17/20070617222620629d0fc1(该处信息涉嫌违规)2493199dc21db96c61f36500x0.jpg" target="_blank"><img src="/User/2007/06/17/20070617222620629d0fc1(该处信息涉嫌违规)2493199dc21db96c61f36500x0.jpg" ="this.src='/oldbbs/err_photo.gif'" onload="javascript:if(this.width>550)this.width=550;"  border="0" alt="" /></a><br />
<br />
GPS NAEA 0183数据格式介绍 <br />
NMEA-0183是美国国家海洋电子协会(National Marine Electronics Association)为海用电子设备制定的标准格式。它是在过去海用电子设备的标准格式0180和0182的基础上,增加了GPS接收机输出的内容而完成的。目前广泛采用的是Ver 2.00版本。现在除少数早期的GPS接收机外,几乎所有的GPS接收机均采用了这一格式。此协议是为了在不同的GPS导航设备中建立统一的RTCM标准,这种格式的广泛使用使得GPS接收模块的通用化和互换性大大提高。 <br />
这种格式所输出的语句采用的是ASCⅡ字符码,包含了纬度、经度、速度、日期、时间、航向、以及卫星信号情况等信息。语句多达10余种,由于在此次设计中只运用到了$GPRMC定位数据语句。 <br />
<br />
这就需要创设一个GPS软件开发环境。</p>
<p>我选用的是程序编译环境――Keil uVision2 。<br />
这个软件采用了汇编语言编写,并在Keil uVision2开发环境下编译、调试。</p>
<p><a href="/User/2007/06/17/20070617223303159f25d642254b8a85c60ae3c9fba0b7500x0.jpg" target="_blank"><img src="/User/2007/06/17/20070617223303159f25d642254b8a85c60ae3c9fba0b7500x0.jpg" ="this.src='/oldbbs/err_photo.gif'" onload="javascript:if(this.width>550)this.width=550;"  border="0" alt="" /></a><br />
<br />
由于本次设计要涉及到串口与单片机的数据通讯,所以在调试的时候有必要使用一款串口调试软件辅助软件的调试,我所选用的是COMPort Debuger V2.00。 <br />
该软件具有串口端口选择,波特率选择,数据位选择,停止和校验位选择等等,而且在发送区域内还可以设定自动发送数据的时间间隔,这些功能已经完全满足对串口进行简单的调试。 </p>
<p>这是正在使用该软件模拟GPS向单片机发送GPS地理数据,以辅助调试程序和硬件。<br />
<a href="/User/2007/06/17/2007061722343046b110b20f5d4d0a8fc5b1a80cd0488a500x0.jpg" target="_blank"><img src="/User/2007/06/17/2007061722343046b110b20f5d4d0a8fc5b1a80cd0488a500x0.jpg" ="this.src='/oldbbs/err_photo.gif'" onload="javascript:if(this.width>550)this.width=550;"  border="0" alt="" /></a></p>
<p>在调试程序的过程中,通常要将已经用Keil uVision2编译连接好的程序写到单片机上去,然后安装在硬件系统上进行整体的调试,这时就需要一款编程软件和编程器来完成以上工作,由于选用的单片机是AT89S51(支持在系统ISP编程),所以我选择了SLISPV1.3.2这款单片机程序编程配合烧录程序。</p>
<p><a href="/User/2007/06/17/20070617223735cd6ce1c8725d4b6897ac9ca8a73f2d13500x0.jpg" target="_blank"><img src="/User/2007/06/17/20070617223735cd6ce1c8725d4b6897ac9ca8a73f2d13500x0.jpg" ="this.src='/oldbbs/err_photo.gif'" onload="javascript:if(this.width>550)this.width=550;"  border="0" alt="" /></a><br />
<br />
<br />
<br />
<br />
</p>
 楼主| 发表于 2007-6-18 06:48:00 | 显示全部楼层 IP归属地:
<p>由于该GPS接收模块在第一次使用时需要在电脑上进行初始化串口输率和测试接收GPS地理数据,故需要选择一款软件来配合。SERF GS1100 GPS信号接收模块生产商推荐的是uNav Analyzer。这款GPS接收模块调试软件可以对SERF GS1100 GPS信号接收模块进行波特率选择,输出语句选择等设置。还可以在GPS信号接收模块接收到GPS数据后,进行数据文本输出,卫星状态查看(卫星数量、可用数、信号强度),GPS信号漂移分析等。</p>
<p>这是接收地理数据工作状态。</p>
<p><a href="/User/2007/06/17/2007061722441420673e5573924f529fcdea84f1faa5fa500x0.jpg" target="_blank"><img src="/User/2007/06/17/2007061722441420673e5573924f529fcdea84f1faa5fa500x0.jpg" ="this.src='/oldbbs/err_photo.gif'" onload="javascript:if(this.width>550)this.width=550;"  border="0" alt="" /></a></p>
<p>这是观测卫星信号及漂移状态。<br />
<br />
<a href="/User/2007/06/17/200706172245555bfb23fd002a46919c7be0a18f9e7bdb500x0.jpg" target="_blank"><img src="/User/2007/06/17/200706172245555bfb23fd002a46919c7be0a18f9e7bdb500x0.jpg" ="this.src='/oldbbs/err_photo.gif'" onload="javascript:if(this.width>550)this.width=550;"  border="0" alt="" /></a><br />
<br />
有点枯燥了是吧?</p>
 楼主| 发表于 2007-6-18 07:00:00 | 显示全部楼层 IP归属地:
<p>按照我的软件设计思路,对各模块软件设计主要有以下几个部分。</p>
<p>第一是串口初始化模块。 <br />
在该模块中设置的波特率为9600(晶振频率为11.0592Mhz),所以选择定时器工作为工作方式2,给定时器1高位低位分别赋值#0FDH <br />
其程序如下: <br />
<br />
MOV TMOD,#20H;定时器工作方式选择 <br />
MOV TH1,#0FDH;定时器初始赋值 <br />
MOV TL1,#0FDH; <br />
MOV PCON,#00H;串口工作方式选择 <br />
SETB TR1 <br />
MOV SCON,#70H;串口工作方式选择 </p>
<p>第二是液晶模块初始化模块。 <br />
在该设计中所使用的是1602液晶模块,其初始化方法参阅了该模块的相关说明书。<br />
延时15ms <br />
写指令38H(不检测忙信号) <br />
延时15ms <br />
写指令38H(不检测忙信号) <br />
延时15ms <br />
写指令38H(不检测忙信号) <br />
写指令38H <br />
写指令38H:显示模式设置 <br />
写指令08H:显示关闭 <br />
写指令01H:显示清屏 <br />
写指令06H:显示关标移动设置 <br />
写指令0CH:显示开及光标设置 <br />
<br />
其中在实际使用中延时段程序的实际延时可以比15ms长些,对初始化并无影响。 </p>
<p>第三是数据接收模块。<br />
首先要对GPS接收模块串口是否有信号发送给单片机进行识别,而且由于GPS接收模块通过串口发送出来的数据不是我们全部需要的,所以有必要再对语句进行识别,然后取入我们所需要的语句$GPRMC,&hellip;&hellip;&hellip;&hellip;。</p>
<p>此处及以下源程序较长,恕不赘述。</p>
<p>第四是数据格式调整送显模块 <br />
对于前面程序模块取入的数据,还要通过数据格式调整才能送到显示模块进行显示,在4.1GPS NAEA 0183语句中我们已经知道,所取入的GPRMC中包含了很多的地理信息,但是由于我们的应用所限,往往只能用到其中的一部分,比如我们所用到的纬度、经度、UTC时间和UTC日期,由于我们在上面数据接收模块程序中已经把GPRMC所包含的所有数据已经顺序存放在单片机中,所以我们只需要按照NAEA 0183语句所提供的格式按位选取出纬度、经度、UTC时间和UTC日期就可以了。对于我们已经选取出的将要送去显示的数据,为了在液晶屏上能及时清晰地显示出来,再经过一定的格式调整,最后再送液晶屏显示。 </p>
<p>至此,机机的硬件和软件基本完成,接下来是进行繁杂的调试。<br />
<br />
<br />
</p>
 楼主| 发表于 2007-6-18 07:07:00 | 显示全部楼层 IP归属地:
<p>硬件方面遇到的问题及解决办法。</p>
<p>一是液晶屏无显示 。<br />
在焊接好电路板后就开始对电路部分进行测试,首先在AT89S51上写了一个可让液晶屏显示数字的小程序,可是通电后发现液晶屏除了背光点亮(通电后就会亮),根本没有显示。在检查电路的过程中首先怀疑有可能电路连接有问题,使得单片机没有工作,后用万用表测量晶振两脚,发现起振电压正常,说明单片机正常工作。后又怀疑单片机P0口数据电缆和液晶屏没有连接好,又用万用表测试,结果都连接良好。经过分析后觉得这个问题不应该出在液晶屏和单片机上,而有可能是在一些辅助器件上发生了问题,果然经过检查后发现液晶模块对比度调节电阻(5K)有问题,电阻始终很大且无法调小(始终在1K以上),后更换一个同型号可变电阻,问题解决。 <br />
二是GPS模块送出数据单片机不能接收 <br />
在调试软件的时候用到了串口调试软件辅助软件的调试,并且通过电脑的串口成功的向单片机发送了模拟的GPS数据,单片机也成功接收并且液晶屏也有了显示,后为了进一步的调试软硬件便使用了GPS信号接收模块向单片机发送地理数据,结果这时液晶屏却没有了显示,开始以为是使用串口调试软件模拟GPS输出数据格式有误,所以造成了使用真正的GPS模块接收数据时程序不能匹配。分析后觉得开始的判断不对,就算模拟时格式不对也起码应该有显示。之前在换用GPS模块时对硬件有过一次改动,就是原先使用电脑串口模拟GPS向单片机发送数据,单片机串口接口使用的是9针的母头,其数据线接具体连接是串口的5号针脚连接MAX232芯片15脚(接地),串口的3号针脚连接MAX232芯片8脚(串口数据接收),串口的2号针脚连接MAX232芯片7脚(串口数据发送)。由于要使用GPS接收模块,以为模块的串口接口为母头故需要将单片机接收串口接口改为公头,在改的时候也按照了上述的连接方法,由于串口在更换公头后接线方式应该按照母头接线方式镜像连接,在实际连接时忽略了这点结果造成了不能接收串口数据的问题。经重新连接后问题解决。 <br />
</p>
 楼主| 发表于 2007-6-18 07:43:00 | 显示全部楼层 IP归属地:
<p>软件方面遇到的问题数量早已无从统计,改写程序吧,前后大约用了一周时间。最后我将软件命名为1.0,因为今后升级空间还很大。至于硬件,便命名为GPS最小系统就行了。学无止境,空间差距令我前行。</p>
<p>这次设计制作,参阅的主要文献有:</p>
<p>[1] 刘基余.GPS卫星导航定位原理与方法.北京:科学出版社,2003 <br />
[2] 刘基余,李征航.全球定位系统原理及其应用.北京:测绘出版社,1993 <br />
[3]王惠南,GPS导航原理与应用.北京:科学出版社,2003 <br />
[4] Encyclop鎑ia Britannica 2007 Ultimate Reference Suite.Version.2007.01.00.000000000 Encyclop鎑ia Britannica, Inc.2007.01 <br />
[5] 潘永雄.新编单片机原理与应用.西安:西安电子科技大学出版社,2003 <br />
[6] 张鹏.单片机原理及应用.成都:电子科技大学出版社,2004.8 <br />
[7]贾金玲.微型计算机原理与接口技术课程设计指导.重庆:重庆大学出版社,2001.12 <br />
[8] GS1100 Seriers Operational manual.Verison1.0.Serf Company.2004.11 <br />
[9] MAX220-MAX249 5V供电、多通道RS-232驱动器/接收器.Rev15. Maxim Integrated Products, Inc.2006.01 <br />
[10] NMEA Protocol Specification . Verison1.31. Fastrax Oy.2003.06 <br />
特向文献作者前辈恩师致谢。</p>
<p>经过这段时间的实际使用,这个系统不依靠任何物理连接独立运行,每秒自动切换日期、时间、经纬度等实时数据,卫星信号也同时每秒刷新一次,精确度和可靠性与商品机毫无二致。</p>
<p>但是我必须得申明三点。</p>
<p>第一,这个系统适合有GPS使用经验且有地理常识的人士使用。驾车可将接收模块(含天线)置于车顶,徒步手持也十分轻微小巧。瞄一眼也会成竹在胸,哪里会走丢哦!但是无经验人士千万不能冒险,包括使用麦哲伦的GPS2000,也权当实习而已。</p>
<p>第二,本帖开宗明义是弄着玩的,不存在任何谋利色彩,只是一个郑重其事的预告&mdash;&mdash;驴友们:GPS低价的春风就要吹来了!学生娃娃尚且以几十元单产(绝非量产)成功,于是我大胆预测,明年的今天,驴友们将会以很低的价格用上价廉物美的GPS。</p>
<p>第三,我是一个新驴,同时也是一个电子领域的新手,热切期待各位前辈鞭策教诲。这个系统还有相当大的提升空间,革命尚未成功,学生尚需努力。</p>
<p></p>
<p></p>
发表于 2007-6-20 23:38:00 | 显示全部楼层 IP归属地:
<p>好贴!</p>
 楼主| 发表于 2007-6-21 21:59:00 | 显示全部楼层 IP归属地:
谢谢鼓励和鞭策!
发表于 2007-6-21 22:04:00 | 显示全部楼层 IP归属地:
你太有才了 ``<img alt="" src="/oldbbs/editorFace/thumbsup.gif" />
 楼主| 发表于 2007-6-21 23:52:00 | 显示全部楼层 IP归属地:
<p>这次的设计制作受到导师和同学们的高度评价,并作了现场演示,效果还是可靠而准确的。<br />
<br />
有朋友短信询问能否订做,我实在没有时间做了。明天就参加毕业典礼和表彰大会了,然后去一家企业担任电气设计师职务。 <br />
<br />
对于想购买到适合自己的GPS的朋友,如果实在急切,可购买麦哲伦的GPS315军用手持机,我国维和部队也在使用中。但是买行货1600元也还是太贵,寻找&ldquo;悄悄货&rdquo;(我命名的)吧,600元左右。我手里在用的就是这个机机。至于性情安然的朋友就耐心等等吧,明年今天,肯定价廉物美! <br />
</p>
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|联系我们

Copyright © 2013 cq69.com, All Rights Reservde. CQ69.COM 版权所有  Powered by Discuz!

电子邮箱:Service@cq69.com 电话:023-86688385

GMT+8, 2025-6-27 00:28 , Processed in 0.075856 second(s), 23 queries , Gzip On.

快速回复 返回顶部 返回列表