专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

[原创]GPS卫星定位模块使用及感受

作者:佚名   来源:本站原创   点击数:  更新时间:2012年11月09日   【字体:
  一直以来都以为GPS模块使用比较麻烦,觉得那是高科技的东东,接收卫星信号啊~~神秘。直到最近有朋友在项目中询问这方面的事,正好手头上没有其它事项要忙,就决心要把GPS模块搞搞,以前Cpeark论坛上有做过一款GPS接收板的,当时没有参加这个活动,后来东东把他手上的送给我(谢谢东东),于是找出板板,又在论坛上下载了一些软件,折腾了一外晚上未果,一点数据都没有,开始以为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在室内可以随时定位并且有四五颗星。模块使用相当方便,标准速率串行数据的输出也很方便与电脑或单片机连接,由于不需要任何控制指令,大大方便了程序编写,而且价格便宜,淘宝上单独的模块(SIRF Ⅲ级别)基本是在三十多元的价格但不带天线,配上转USB的线或转蓝牙模块的线,可以很方便的应用到各种设备。

 

 


 

    这是使用的模块,自带的陶瓷天线,这个天线体积比较大,比我之前一款手上用的陶瓷天线要大些。
    模块的性能参数:
    衛星頻率通道數:12顆衛星訊號。
    接收衛星頻率:1575.42 MHZ。
    接收碼:L1,C/A 碼。
    精確度 位置誤差 : 5米( CEP )
    感度 -152dBm
    使用坐標系統 WGS84
    定位時間 冷開機:<45秒(平均時間)
    暖開機:<35秒(平均時間)
    熱開機:<5秒(平均時間)
    重新抓取:1 秒
    適用範圍 海拔:極限18,000米
    速度:極限515米/秒
    加速度:極限4G(G為地心引力單位)
    輸出格式:NMEA 0183 V3.01、ASCII輸出(default: GGA)。
    波特率:9600BPS
    適用環境 操作溫度: -20℃ to + 60℃
    儲存溫度: -30℃ to + 80℃
    操作濕度: 5%R.H. to 95% R.H.
    外接天線 MMCX接頭。



    这是模块的元件一面,大的IC是PL-6313芯片,采用简化型32位CPU,内建韧体版本为LQFP64,面积仅7x7mm。小的一块是SiGE公司的 SE4100L芯片,面积4x4mm,这个芯片内集成了IF滤波器、带储备电路的电压控制振荡器 (VCO),以及高性能低噪声放大器 (LNA)。 



    
    这是连接实验板解码成功的图片,图片是放在靠窗的电脑桌上拍的,显示的时间是UTC时间、经纬度数据都是直接显示,位置数据上图片处理了,不然要泄漏自己的位置了,呵呵,要知道这个可是只有几米的误差。右上角的A表示定位成功,V则表示未定位,下面的03/09表示当前可见卫星数9颗,当前使用定位卫星数 3颗。
关闭窗口

相关文章