- NMEA协议由GPS模块发送输出数据给单片机系统/电脑串口/uCenter配置查看等,主要为输出数据;
- 若需设置GPS配置参数,可以考虑采用UBX协议,主要为输入数据;
1. NMEA-0183 协议简介
NMEA - 0183 是美国国家海洋电子协会(National Marine Electronics Association)为海用电子设备制定的标准格式。目前业已成了 GPS/北斗导航设备统一的 RTCM(Radio Technical Commission for Maritime services)标准协议。
NMEA-0183 协议采用 ASCII 码来传递 GPS 定位信息,我们称之为帧。
帧格式形如:$aaccc,ddd,ddd,…,ddd*hh(CR)(LF)
- "$":帧命令起始位
- aaccc:地址域,前两位为识别符(aa),后三位为语句名(ccc)
- ddd…ddd:数据
- "*":校验和前缀(也可以作为语句数据结束的标志)
- hh:校验和(check sum),$与*之间所有字符 ASCII 码的校验和(各字节做异或运算,得到校验和后,再转换 16 进制格式的 ASCII 字符)
- (CR)(LF):帧结束,回车和换行符
- NMEA-0183 常用命令 如表所示:
序号 | 命令 | 说明 | 最大帧长 |
---|---|---|---|
1 | $GNGGA | GPS/北斗定位信息 | 72 |
2 | $GNGSA | 当前卫星信息 | 65 |
3 | $GPGSV | 可见 GPS 卫星信息 | 210 |
4 | $BDGSV | 可见北斗卫星信息 | 210 |
5 | $GNRMC | 推荐定位信息 | 70 |
6 | $GNVTG | 地面速度信息 | 34 |
7 | $GNGLL | 大地坐标信息 | |
8 | $GNGLL | 当前时间(UTC1)信息 |
上表为 NMEA-0183 常用命令表
注 1: 即协调世界时,相当于本初子午线(0 度经线)上的时间,北京时间比 UTC 早 8 个小时。
2. NMEA 0183协议解析(NMEA4.1)
NMEA-0183协议是目前GNSS接收机上使用最广泛的协议,大多数常见的GNSS接收机、GNSS数据处理软件、导航软件都遵守或者至少兼容这个协议。
原文地址:https://www.cnblogs.com/wind-under-the-wing/p/13997178.html
下面对其常用字段进行概述
序号 | 命令 | 说明 | 最大帧长 |
---|---|---|---|
1 | $XXGGA | GPS定位信息 | 72 |
2 | $XXGSA | 当前卫星信息 | 65 |
3 | $XXGSV | 可见卫星信息 | 210 |
4 | $XXRMC | 推荐定位信息 | 70 |
5 | $XXVTG | 地面速度信息 | 34 |
6 | $XXGLL | 大地坐标信息 | |
7 | $XXZDA | 当前时间(UTC1)信息 |
2.1. XXGGA (GPS 定位信息,Global Positioning System Fix Data)
此字段主要表示时间、经纬度位置、解算状态、卫星颗数、高程、差分延迟、基站号等相关信息,XX因模式的不同而不同
- 单GPS
$GPGGA,062938.00,3110.4700719,N,12123.2657056,E,1,25,0.6,58.9666,M,0.000,M,99,AAAA*50
- 单BD
$BDGGA,062938.00,3110.4700719,N,12123.2657056,E,1,25,0.6,58.9666,M,0.000,M,99,AAAA*4
- 单GLONASS
$GLGGA,062938.00,3110.4700719,N,12123.2657056,E,1,25,0.6,58.9666,M,0.000,M,99,AAAA*4
- 多星联合定位
$GNGGA,062938.00,3110.4700719,N,12123.2657056,E,1,25,0.6,58.9666,M,0.000,M,99,AAAA*4
$GNGGA 语句的基本格式如下(其中 M 指单位 M,hh 指校验和,CR 和 LF 代表回车换行,下同)
$GNGGA,(1),(2),(3),(4),(5),(6),(7),(8),(9),M,(10),M,(11),(12)*hh(CR)(LF)
- UTC 时间,格式为 hhmmss.ss;
- 纬度,格式为 ddmm.mmmmm(度分格式);
- 纬度半球,N 或 S(北纬或南纬);
- 经度,格式为 dddmm.mmmmm(度分格式);
- 经度半球,E 或 W(东经或西经);
- GPS 状态,0=未定位,1=非差分定位,2=差分定位;
- 正在使用的用于定位的卫星数量(00~12)
- HDOP 水平精确度因子(0.5~99.9)
- 海拔高度(-9999.9 到 9999.9 米)
- 大地水准面高度(-9999.9 到 9999.9 米)
- 差分时间(从最近一次接收到差分信号开始的秒数,非差分定位,此项为空)
- 差分参考基站标号(0000 到 1023,首位 0 也将传送,非差分定位,此项为空)
举例如下:
$GNGGA,095528.000,2318.1133,N,11319.7210,E,1,06,3.7,55.1,M,-5.4,M,,0000*69
2.2. XXGSA(当前卫星信息)
GSA信息:模式、定位状态、用于解算卫星信息。
- 单GPS
$GPGSA,M,3,25,14,15,18,31,27,09,21,22,12,1.5,0.9,1.3*30
- 单BD
$BDGSA,M,3,141,143,144,146,147,148,149,150,2.7,1.7,2.2*2B
- 单GLONASS
$GLGSA,M,3,47,58,55,46,53,57,56,1.7,1.1,1.3*2D
- 多星联合定位
$GNGSA,M,3,27,03,16,21,06,19,31,13,23,1.0,0.6,0.822 $GNGSA,M,3,141,142,143,144,147,148,150,1.0,0.6,0.810 $GNGSA,M,3,47,56,55,46,53,44,57,1.0,0.6,0.829
$GNGSA 语句的基本格式如下:
$GNGSA,(1),(2),(3),(4),(5),(6)*hh(CR)(LF)
- 模式,M = 手动,A = 自动。
- 定位类型,1=未定位,2=2D 定位,3=3D 定位。
- 正在用于定位的卫星号(01~32)
- PDOP 综合位置精度因子(0.5-99.9)
- HDOP 水平精度因子 1(0.5-99.9)
- VDOP 垂直精度因子(0.5-99.9)
举例如下:
$GNGSA,A,3,14,22,24,12,,,,,,,,,4.2,3.7,2.1*2D
$GNGSA,A,3,209,214,,,,,,,,,,,4.2,3.7,2.1*21
注 1: 精度因子值越小,则准确度越高。
2.3. XXGSV(可见卫星数,GPS Satellites in View)
GSA信息:卫星数量、编号、信噪比(信号强度)、可见卫星信息
每条GSV语句最多可以显示4个可见卫星的信息,其他的卫星都会在下一条语句中输出显示。每种卫星系统都会单独显示,如下:GPS有3条GSV报文,北斗有2条GSV报文,GLONASS有3条GSV报文。
$GPGSV,3,1,09,19,46,206,41,16,55,015,43,31,24,120,37,06,82,060,4373
$GPGSV,3,2,09,27,82,183,45,21,15,061,33,23,47,268,43,03,72,228,44*72
$GPGSV,3,3,09,13,34,304,38,*49
$BDGSV,2,1,07,143,53,202,37,145,15,257,40,148,72,234,38,141,49,145,37*67
$BDGSV,2,2,07,151,24,048,41,150,70,327,38,147,77,113,39,*65
$GLGSV,3,1,09,47,07,193,46,43,46,101,50,59,28,309,45,49,28,305,43*68
$GLGSV,3,2,09,48,35,239,45,42,21,040,44,57,24,063,39,44,24,161,47*67
$GLGSV,3,3,09,58, 46,012,45,51
$GPGSV 语句的基本格式如下:
$GPGSV, (1),(2),(3),...,(4),(5),(6),(7)*hh(CR)(LF)
- GSV 语句总数。
- 本句 GSV 的编号。
- 可见卫星的总数(00~12,前面的 0 也将被传输)。
- 卫星编号(01~32,前面的 0 也将被传输)。
- 卫星仰角(00~90 度,前面的 0 也将被传输)。
- 卫星方位角(000~359 度,前面的 0 也将被传输)
- 信噪比(00~99dB,没有跟踪到卫星时为空)。
注:每条 GSV 语句最多包括四颗卫星的信息,其他卫星的信息将在下一条$GPGSV 语句中输出。
举例如下:
$GPGSV,3,1,11,18,73,129,19,10,71,335,40,22,63,323,41,25,49,127,06*78
$GPGSV,3,2,11,14,41,325,46,12,36,072,34,31,32,238,22,21,23,194,08*76
$GPGSV,3,3,11,24,21,039,40,20,08,139,07,15,08,086,03*45
2.4. XXRMC(推荐定位信息,Recommended Minimum Specific GPS/Transit Data)
RMC信息:解状态、经纬度、地面速度、地面航向角、UTC时间、位置、速度、时间等信息。
- 单GPS
$GPRMC,064457.90,A,3110.4691141,N,12123.2667676,E,0.157,63.0,300713,0.0,W,A05
- 单BDS
$BDRMC,064457.90,A,3110.4691241,N,12123.2667666,E,0.157,63.0,300713,0.0,W,A*05
- 单GLONASS
$GLRMC,064457.90,A,3110.4691141,N,12123.2667646,E,0.157,63.0,300713,0.0,W,A*05
- 双星或多星联合定位
$GNRMC,064401.65,A,3110.4706987,N,12123.2653375,E,0.604,243.2,300713,0.0,W,A*3E
$GNRMC 语句的基本格式如下:
$GNRMC,(1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12)*hh(CR)(LF)
- UTC 时间,hhmmss(时分秒)
- 定位状态,A=有效定位,V=无效定位
- 纬度 ddmm.mmmmm(度分)
- 纬度半球 N(北半球)或 S(南半球)
- 经度 dddmm.mmmmm(度分)
- 经度半球 E(东经)或 W(西经)
- 地面速率(000.0~999.9 节)
- 地面航向(000.0~359.9 度,以真北方为参考基准)
- UTC 日期,ddmmyy(日月年)
- 磁偏角(000.0~180.0 度,前导位数不足则补 0)
- 磁偏角方向,E(东)或 W(西)
- 模式指示(A=自主定位,D=差分,E=估算,N=数据无效)
举例如下:
$GNRMC,095554.000,A,2318.1327,N,11319.7252,E,000.0,005.7,081215,,,A*73
3. NMEA 示例数据包
3.1. XXGGA 示例数据
设备命令:microcom -s 115200 /dev/ttymxc1 | grep GGA
$GNGGA,025030.400,3016.6134500,N,12000.6081451,E,1,12,0.791,51.8582,M,6.9910,M,*47
$GNGGA,025030.500,3016.6134500,N,12000.6081451,E,1,12,0.791,51.8582,M,6.9910,M,*46
$GNGGA,025030.600,3016.6134500,N,12000.6081451,E,1,12,0.791,51.8582,M,6.9910,M,*45
主要数据:UTC时分秒、经纬度、GPS状态
3.2. XXRMC 示例数据
设备命令:microcom -s 115200 /dev/ttymxc1 | grep RMC
$GNRMC,034432.500,A,3016.6181806,N,12000.6207537,E,0.000,,110122,,,A,V*27
$GNRMC,034432.600,A,3016.6181806,N,12000.6207537,E,0.000,,110122,,,A,V*24
$GNRMC,034432.700,A,3016.6181806,N,12000.6207537,E,0.000,,110122,,,A,V*25
主要数据:UTC时分秒日月年、经纬度、定位状态、速度、航向角
3.3. XXGSA 示例数据
设备命令:microcom -s 115200 /dev/ttymxc1 | grep GSA
$GNGSA,A,1,,,,,,,,,,,,,1.190,0.822,0.860,3*3E
$GNGSA,A,3,101,114,116,126,,,,,,,,,1.190,0.822,0.860,4*3C
$GNGSA,A,3,4,16,26,27,29,31,,,,,,,1.190,0.822,0.860,1*05
3.4. XXGSV 示例数据
$GPGSV,2,1,8,3,20,272,,4,24,318,,16,55,256,,26,69,354,,*6F
$GPGSV,2,2,8,27,23,186,,29,17,43,,31,50,60,,32,,,,*5C
$GBGSV,3,1,9,101,45,138,33,110,48,230,,112,25,149,26,114,42,228,26,1*48
$GBGSV,3,2,9,116,81,53,20,124,58,345,25,126,36,57,,133,42,267,25,1*4B
$GBGSV,3,3,9,135,23,62,30,1*7E
GBGSV是哪种?https://www.pianshen.com/article/9570653904/
4. NMEA 查看卫星数量、信号强度、时间、坐标、GPS状态
4.1. NMEA 查看卫星数量
- XXGSV:卫星数量、信号强度(信噪比、越大越好)
- XXGGA:
4.2. NMEA 查看信号强度
- XXGSV:卫星数量、信号强度(信噪比、越大越好)
4.3. NMEA 查看时间
- XXGGA:UTC时分秒
- XXRMC:UTC时分秒、UTC日月年
4.4. NMEA GPS状态
- XXGGA:GPS状态(0=未定位,1=单点定位,2=伪距/SBAS,3=无效PPS,4=RTK固定,5=RTK浮动,6=正在估算,7=手动启动基准站,8=RTK宽巷解,9=伪距)
- XXGSA:定位模式,A=自动手动2D/3D,M=手动2D/3D
- XXGSA:定位类型,1=未定位,2=2D定位,3=3D定位
- XXRMC:定位状态,A=有效定位,V=无效定位