基于单片机的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”