基于单片机的GPS开发 (four) GPS基础知识

一、GPS硬件模块:

VCC:兼容3.3V和5V

GND:地

TXD:接51单片机的RXD  ( P3.0 )

RXD:可接单片机的TXD  ( P3.1 ) 或者直接悬空

PPS:时钟脉冲输出脚 直接悬空不接

二、GPS主要参数:

(1).默认波特率9600

(2).指示灯:

     常亮:模块供电正常,但是并未成功定位。

     闪烁:模块已经定位成功。定位的时候,模块的天线要放在室外,室内是没有办法定位的。

三、GPS串口调试步骤:

连接模块和开发板,使用开发板的5V电源接口给模块直接供电,配置好后,下载程序,等待GPS定位成功(指示灯闪烁)。

我们先打开多功能调试助手,如下图

 

 

我们选择对应的端口号,然后选择波特率9600,再选择打开串口,等待接收数据。下面是成功接收数据的截图

 

四、GPS硬件电路原理图:

 

五、GPS指令详解:

1$GPGGA (GPS定位信息,Global Positioning System Fix Data)

$GPGGA语句的基本格式如下(其中M指单位M, hh指校验和,CR和LF代表回车换行,下同) :

$GPGGA,(1),(2),(3),(4),(5),(6),(7),(8),(9),M,(10),M,(11),(12)*hh(CR)(LF)

(1)UTC时间,格式为hhmmss.ss;

(2)纬度,格式为ddmm.mmmmm (度分格式) ;

(3)纬度半球,N或S (北纬或南纬) ;

(4)经度,格式为dddmm.mmmmm (度分格式) ;

(5)经度半球,E或W (东经或西经) ; 

(6)GPS状态,0=未定位,1=非差分定位,2= 差分定位;

(7)正在使用的用于定位的卫星数量(00~12)

(8)HDOP水平精确度因子(0.5~99.9)

(9)海拔高度(-9999.9到9999.9米 )

(10)大地水准面高度(-9999.9到9999.9米)

(11)差分时间(从最近- -次接收到差分信号开始的秒数,非差分定位,此项为空)(12)差分参考基站标号(0000到1023, 首位0也将传送,非差分定位,此项为空)

举例如下: 

$GPGGA,023543.00,2308.28715,N,1 1322.09875,E,1,06,1.49,41.6,M, 5.3,M,*7D

 

2,$GPGSA (当前卫星消息 ):

$GPGSA语句的基本格式如下:

$GPGSA,(1),(2),(3),(3),(3),(3),(3),(3),(3),(3),(3),(3),(3),(3),(4),(5),(6)* hh(CR)(LF)

(1)模式,M=手动,A=自动。

(2)定位类型,1=未定位,2=2D定位,3=3D定位。

(3)正在用于定位的卫星号(01~32)

(4)PDOP综合位置精度因子 (0.5-99.9)            注:精度因子值越小,则准确度越高。

(5)HDOP水平精度因子1 (0.5-99.9)

(6)VDOP垂直精度因子(0.5-99.9)

举例如下:

$GPGSA,A,3,26,02,0529,15,2*2.45,1.49,1.94*0E

 

3,$GPGSV (可见卫星数,GPS Satellites in View)

$GPGSV语句的基本格式如下:

$GPGSV, (1),(2),(3),(4),(5),(6),(7),....,(4),(5),(6),(7)*hh(CR)(LF)

(1) GSV语句总数。

(2)本句GSV的编号。

(3)可见卫星的总数(00~12, 前面的0也将被传输)。

(4)卫星编号(01~32, 前面的0也将被传输)。

(5)卫星仰角(00~90度, 前面的0也将被传输)。

(6)卫星方位角(000~359度, 前面的0也将被传输)

(7)信噪比 (00~99dB, 没有跟踪到卫星时为空)。注:每条GSV语句最多包括四颗卫星的信息,其他卫星的信息将在下一条$GPGSV语句中输出。

举例如下:

$GPGSV,3,1,12,02,39,117,25,04,02,127,05,40,036,24,08,10,052,*7E

$GPGSV,3,2,12,09,35,133,10,01,073,,15,72,240,22,18,05,274,*7B 

$GPGSV,3,3,12,21,10,316,31,24,16,176,26,65,035,42,29,46,277,18*7A

 

4,$GPRMC (推荐定位信息,Recommended Minimum Specific GPS/Transit Data)

$GPRMC语句的基本格式如下:

$GPRMC,(1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12)*hh(CR)(LF)

(1)UTC时间,hhmmss (时分秒)

(2)定位状态,A=有效定位,V=无效定位

(3)纬度ddmm.mmmmm (度分)

(4)纬度半球N (北半球)或S (南半球)

(5)经度dddmm.mmmmm (度分)

(6)经度半球E (东经)或W (西经)

(7)地面速率(000.0~999.9节)

(8)地面航向(000.0~359.9度,以真北方为参考基准)

(9) UTC日期,ddmmyy (日月年)

(10)磁偏角(000.0~180.0度, 前导位数不足则补0)

(11)磁偏角方向,E (东)或W (西)

(12) 模式指示(A=自主定位,D=差分,E=估算,N=数据无效)

举例如下:

$GPRMC,023543.00,A,2308.28715,N,1 1322.09875,E,0.195,240213..,A*7899  999

 

5,$GPVTG (地面速度信息,Track Made Good and Ground Speed )

$GPVTG语句的基本格式如下:

$GPVTG,(1),T,(2),M,(3),N,(4),K,(5)*hh(CR)(LF)

(1)以真北为参考基准的地面航向(000~359度, 前面的0也将被传输)

(2)以磁北为 参考基准的地面航向(000 -359度,前面的0也将被传输)

(3)地面速率(000.0 999.9节,前面的0也将被传输)

(4)地面速率(0000.0~1851.8公里/小时,前面的0也将被传输)

(5)模式指示(A=自主定位,D=差分,E=估算,N=数据无效)

举例如下:

$GPVTG,,T,M,0.195,N,0.361,K,A*2A

 

6,$GPGLL (定位地理信息,Geographic Position)

$GPGLL语句的基本格式如下:

$GPGLL,(1),(2),(3),(4),(5),(6),(7)*hh(CR)(LF)

(1) 纬度ddmm.mmmmm (度分)

(2)纬度半球N (北半球)或S (南半球)

(3)经度dddmm.mmmmm (度分)

(4)经度半球E (东经)或W (西经)

(5)UTC时间: hhmmss (时分秒)

(6)定位状态,A=有效定位,V=无效定位

(7)模式指示(A=自主定位,D=差分,E=估算,N=数据无效)

举例如下:

$GPGLL,2308.28715,N,1 1322.09875,E,023543.00,A,A*6A

 

7,$GPZDA (当前时间信息)

$GPZDA语句的基本格式如下:

$GPZDA,(1),(2),(3),(4),(5),(6)*hh(CR)(LF)

(1) UTC时间: hhmmss (时分秒)

(2)日

(3)月

(4)年

(5)本地区域小时(NEO-6M未用到,为00)

(6)本地区域分钟(NEO-6M未用到,为00)

举例如下:

$GPZDA,082710.00,1 6,09,2002,00,00*64

 

六、获取到的GPS指令换算成实际经纬度:

假设你获取到的上面GPS输出的数据:

          N    2318.13307      纬度

          E    11319.72036    经度

将其转换为度(°)分(')秒(")

纬度=2318.13307 / 100 = 23°

2318.13307 % 100= 180.13307 * 60= 7.984"

经度= 11319.72036/ 100 = 113°

11319.72036 % 100= 190.72036 * 60= 43.2216”

posted @ 2023-08-02 11:42  Lauriee  阅读(350)  评论(0编辑  收藏  举报  来源