GPS卫星定位模块使用及感受
在淘宝上下手买了新的回来,严格来说应该是全新的旧货,三十多元,05年产的模块,采用的是台湾旺玖PROLIFIC公司的PL-6313芯片,这间公司比较陌生,但它的一款PL2303的芯片,相信多数搞电子的都知道吧。卖家说测试信号接收速度和灵敏度比SIRF3芯片稍弱,但是远强于使用SIRF2或是2E芯片,自带陶瓷天线和外接天线接口,自带锂电池存储数据,可惜我实测电池已经没电了,估计是存放太久的缘故。选择这款主要是看中它本身自带了天线,使用起来不用这么麻烦。下面看看我怎么折腾这块模块吧。
一、硬件结构
Cepark第一代的实验板,这块板用了好多年,比较简单好用,用得也顺手,LCD12864液晶屏做显示,因为考虑到要显示比较多的信息,比如经纬度、时间等等。模块串行输出直接接到MCU的RXD上,因为模块的工作电压是3.3V的,懒得搭板做稳压电路了,直接在实验板的5V上串三只二极管得到约 3.2V的电压。在用单片机解码前,先是接入到PC上用软件测试了模块是否能工作,通电后是每隔1秒输出一组数据,通信速率9600bps,以ASCII 格式传送,不需要任何初始指令,验证了之前的板板模块是坏的。
二、编程思路
一般GPS模块都支持NMEA0183协议,j这款也是,看厂家资料说是V3.01版本,不知道具体有什么不同,在网上找了一堆协议研究,NMEA0183协议的指令比较多,经过测试我手上这款是输出四种指令:$GPRMC、$GPGGA、$GPGSA、$GPGSV。通过单片机来读取指令数据,然后取出其中有用的数据,考虑到一些参数没什么用途,这次主要获取日期、时间、经度、纬度、可见卫星数、当前使用卫星数等较常用数据。这些信息分别包含在不同的指令中,$GPRMC是推荐使用定位信息语句,包了日期、时间、经纬度、定位成功标志,而可见卫星数则包含在$GPGSV中,当前定位使用卫星数包含在$GPGGA中,$GPGSA则包含有当前可见卫星的每一颗卫星的信息。、
语句的格式一般如下:
$GPRMC,060815.00,A,3956.64797,N,11618.02077,E,000.0,000.0,251006,05.9,W,A*1E
$GPGSV,2,1,06,19,75,039,38,03,43,052,37,27,60,290,38,08,35,313,38*77
$GPGGA,060815.00,3956.64797,N,11618.02077,E,1,06,1.26,00113,M,-006,M,,*42
$GPGSA,A,3,19,03,27,08,11,16,,,,,,,2.50,1.26,2.16*04
每一语句以“$”符号开头,然后跟着指令类型,如“GPRMC”,后面的数据以“,”号进行区分,每一数据长度固定,不足数在前面加0补足,没有数据时是连续的逗号分隔,每一语句数据总长度不固定,最长可达二百多字节,最短也有几十字节,由于51单片机的RAM一般只有一百多字节,去除系统使用留给用户仅有一百不到,而采用外部存储的话,程序通用性又大打折扣,而且也会增加硬件成本,所以在进行接收数据处理时,不能采用一次性全部接收再进行处理,而要边收边处理数据。主要编程思路如下:
1、程序以$判断数据列开始。
2、设定全局变量数组,记录开始的5个数据类型数据:GPRMC、GPGSV、GPGGA等。
3、设定全局变量数组,记录两个,号间的数据,以数据类型和,号个数来判断当前接收到的数据,然后进行处理。
用这个方法处理,接收数据只占用不到20个字节的RAM空间,算是较为节约的方法。剩下的就是程序上处理数据和显示了。需要注意的是GPS接收到的时间是 UTC时间(协调世界时,又称世界统一时间、世界标准时间、国际协调时间),北京是在+8时区,所以接收到的时间是要比北京时间慢8小时,如果在程序中需要用到GPS的时间,需要做数据处理。
三、总结和感受。
这个模块的信号还可以,在窗边一般能见到10颗星,有时能定位成功,伸出窗外能见12颗星,定位4-5颗左右,灵敏度基本上和手上几年前的手机相当,估计是和SIRF Ⅱ级别相当,不知道使用外接天线效果会如何,因为手上没有接口符合的天线,也就没有测试。灵敏度比现在手上的MOTO里程碑2手机要差多,里2在室内可以随时定位并且有四五颗星。模块使
GPS卫星定位模 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)