APP下载

基于单片机的GPS定位系统的设计与实现*

2016-11-15俊,董

甘肃科技 2016年19期
关键词:解码串口命令

杜 俊,董 松

(陇东学院,甘肃 庆阳 745000)

基于单片机的GPS定位系统的设计与实现*

杜俊,董松

(陇东学院,甘肃庆阳745000)

GPS(Global Positioning System)在船舶、车辆、飞机等运动物体进行定位导航、车辆监控管理系统、物联网系统等都有重要的应用,但其高昂的成本让普通客户无法接受。本文设计了基于单片机的GPS定位系统,该系统以51单片机为主控制器,通过uart接口与GPS信息采集模块进行通信,GPS信息格式采用NMEA-0183协议格式,单片机对GPS信息格式进行解码,获得时间、经度、纬度、海拔高度、速度等信息,并根据需求将所需信息通过显示器显示。

NMEA-0183协议;UART;数据解码

1 概述

GPS(NavigationSatelliteTimingandRanging/Global Positioning System),中文名为“卫星授时测距导航/全球定位系统”。该系统由覆盖全球的24颗卫星组成。它可以保证在任意时刻、任意地方都可以同时观测到4颗卫星,以保证卫星可以采集到该观测点的经纬度和高度,以便实现导航、定位、授时等功能。

2 GPS定位系统总体设计

本系统主要以u-blox公司的NEO-6M GPS定位芯片和GPS有源天线组成GPS信息接收模块,利用UART接口将GPS模块的采集的NMEA-0183格式的信息传输给单片机,单片机对接收到的NMEA-0183格式的信息进行解码和处理,通过液晶屏显示出来,从而实现定位、授时、测速的功能,如图1所示。

图1 基于单片机的GPS定位系统结构

2.1GPS接收模块

本系统中GPS信息接收模块采用u-blox公司的NEO-6M芯片,该芯片具有高灵敏度、低功耗、小型化、其极高追踪灵敏度大大扩大了其定位的覆盖面,在普通GPS接收模块不能定位的地方,如狭窄都市天空下、密集的丛林环境,NEO-6M都能高精度定位。模块的高灵敏度、小静态漂移、低功耗及轻巧的体积,非常适用于车载、手持设备如PDA,车辆监控、手机、摄像机及其他移动定位系统的应用,是GPS产品应用的最佳选择。

在开发GPS定位系统的过程中,并不需要去关心如何计算坐标数据,这些工作GPS芯片都会自动完成。但是在设计过程中,应重点注意GPS模块的工作条件、通信接口、数据格式、波特率等问题。

NEO-6M GPS信息接收模块采用USB接口供电,支持3.3V-5V电源,支持UART接口,使用前可使用模块配置软件配置UART接口的波特率,使其与单片机串口的波特率一致。

2.2NMEA-0183协议

NMEA 0183是美国国家海洋电子协会(National Marine Electronics Association)为海用电子设备制定的标准格式。目前业已成了GPS导航设备统一的RTCM(Radio Technical Commission for Maritime services)标准协议。该协议采用ASCII码,UART默认波特率4800bps,采用10位异步传输方式,无奇偶校验。NMEA-0183协议常用的数据格式有6种,见表1。

其中NMEA-0183的GPGGA命令的信息格式及含义如下,其他命令格式可查询相关文献。

$GPGGA,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>,<13>,<14>*<15><CR><LF>

表1 NMEA-0813常用的数据格式

该信息格式中的“$”表示命令起始位,GPGGA表示命令类型,其他字段含义如下:

<1>UTC时间,格式为hhmmss.sss。

<2>纬度,格式为ddmm.mmmm(前导位数不足则补0)。

<3>纬度半球,N或S(北纬或南纬)。

<4>经度,格式为dddmm.mmmm(前导位数不足则补0)。

<5>经度半球,E或W(东经或西经)。

<6>定位质量指示,0=定位无效,1=定位有效。

<7>使用卫星数量,从00到12(前导位数不足则补0)。

<8>水平精确度,0.5到99.9。

<9>天线离海平面的高度,-9999.9到9999.9米。

<10>高度单位,M表示单位米。

<11>大地椭球面相对海平面的高度(-999.9到9999.9)。

<12>高度单位,M表示单位米。

<13>差分GPS数据期限(RTCM SC-104),最后设立RTCM传送的秒数量。

<14>差分参考基站标号,从0000到1023(前导位数不足则补0)。

<15>“*”表示校验和前缀。

<16>校验和。

<17>CR和LR表示信息结束符合。

NEO-6M GPS接收模块可以接收以上6种常用的命令信息,可使用该模块的配置程序设置该模块的接收信息类型,设置好后,该模块只接收允许接收的信息类型。本设计方案中,对允许接收的命令信息类型没有筛选。

3 定位系统软件设计

GPS定位系统程序主要完成单片机串口初始化、LCD液晶屏的初始化,GPS命令信息的接收、解码、处理任务,最后将处理后的信息显示在LCD液晶屏上。GPS定位系统程序总体流程如图2所示。

图2 系统程序流程图

在整个系统程序设计中,解码是关键。单片机通过串口接收到来自GPS接收模块的NMEA-0183格式的命令信息后,将该信息解码,提取出用户需要的信息。NMEA-0183解码算法如下:

s1:初始化:定义逗号字符计数变量comma_cnt=0,数据字符计数变量char_cnt=0,命令类型数组cmd[5],模式变量mode(mode=0,结束,mode=1,接收命令类型,mode=2,接收数据),命令类型编号cmd_num,启动串口接收,进入s2。

s2:判断串口的sbuf接收到的字符:

如果是“$”,设置mode=1,准备接收命令类型信息;

若是字符“,”,逗号字符计数comma_cnt自增1、数据字符计数char_cnt清零;

若是字符“*”,mode=0,进入结束模式;

若是其他,执行s3;

s3:若mode=1,则接收命令类型,依次将串口接收到的5个字符数据存储到cmd[5]数组中。

若 cmd[5]存储的是 “GPGGA”命令类型,则cmd_num=1,执行s4;

若是“GPGSV”命令类型,则cmd_num=2,执行s4;

若是“GPRMC”命令类型,则cmd_num=3,设置mode=2,进入接收数据模式,执行s4。

s4:若 mode=2,进入数据接收模式。判断cmd_num的值:

若cmd_num等于1,开始解码GPGGA命令类型的数据,判断逗号计数comma_cnt的值。根据2.2节中的NMEA-0183的GPGGA命令信息格式,数据字段之间用逗号分隔,因此根据逗号计数可以获取所需信息。

若comma_cnt的值等于1,表示后面接收的10个字符是UTC时间,然后存储在时间变量里。

若comma_cnt的值等于2,表示接下来接收的10个字符是纬度信息并存储,char_cnt清零。

若comma_cnt的值等于3,表示接下来接收的1个字符是纬度方向信息并存储,char_cnt清零。

若comma_cnt的值等于4,表示接下来接收的11个字符是经度信息并存储,char_cnt清零。

若comma_cnt的值等于5,表示接下来接收的1个字符是经度方向信息并存储,char_cnt清零。

用类似的方法将GPGGA中的所需的其他信息解码。

若cmd_num等于2,开始解码GPGSV命令类型数据,用上述办法解码获得所需信息并存储。

若cmd_num等于3,开始解码GPRMC类型数据,用上述方法解码获取所需的其他信息并存储。

s5:退出。

数据解码完成后,使用LCD屏实时显示解码后需要显示的数据。另外,系统接收到的时间信息是UTC时间,如要输出北京时间,还需对UTC时间进行处理转换成北京时间,在进行输出显示。

4 结论

本文提出了对GPS全球定位系统的各命令类型数据的解码方法,设计并实现了基于51单片机的GPS定位系统,由单片机控制GPS接收模块较为精确地计算和显示日期、时间、经度、纬度等卫星信息。

[1] 吴东东.基于单片机的GPS定位显示设计[J].上海师范大学学报(自然科学版),2016,45(1).

[2] 于铁军.基于ARM的GPS定位系统设计与实现[D].中北大学,2014.

[3]杜天杰.基于GPS的定位系统设计与实现[D].西安电子科技大学,2014.

[4]张烁.基于移动GIS定位导航系统的设计与实现[J].计算机系统应用,2010,19(7).

[5]赵志礼.基于单片机的GPS定位信息处理[J].电子测试,2009.

[6]刘俊成.GPS软件接收机关键技术研究[D].国防科技大学,2006.11.

[7]张鹏超.智能车载信息系统研究[D].西安工业大学,2004.

[8]袁安存.全球定位系统原理及应用[M].大连海事大学出版社,1999.

TP313

陇东学院紧缺人才科研启动资金资助项目(XYBY140207)。

猜你喜欢

解码串口命令
《解码万吨站》
只听主人的命令
浅谈AB PLC串口跟RFID传感器的通讯应用
解码eUCP2.0
NAD C368解码/放大器一体机
Quad(国都)Vena解码/放大器一体机
移防命令下达后
数字电源内部数据传输的串口通信方法实现
USB接口的多串口数据并行接收方法探索
这是人民的命令