gps-NMEA协议
GPS定位系统的通信协议主要分为两大类:NMEA 0183标准文本协议和厂商二进制协议(如UBX、SiRF等)。以下是详细说明:
一、NMEA 0183 标准协议
NMEA 0183是由美国国家海洋电子协会制定的通用GPS数据格式协议,采用ASCII明文传输,兼容性极强,广泛应用于民用设备。
1. 协议特性
数据格式:逗号分隔的文本字符串,以$
开头,*
后接校验和,结尾为<CR><LF>
。
1 | $GPGGA,092255.00,4807.0386,N,01131.0000,E,1,08,1.2,545.4,M,46.9,M,,*42 |
- 校验和:
$
与*
之间的字符异或运算(XOR)后的十六进制值,用于验证数据完整性。 - 传输速率:默认波特率通常为9600 bps,可通过配置修改。
2. 核心语句类型
以下为最常见的NMEA语句及其功能:
语句类型 | 描述 | 关键字段示例 |
---|---|---|
$GPGGA | 全球定位系统固定数据 | 时间、纬度、经度、定位质量、卫星数、HDOP、海拔 |
$GPRMC | 推荐最小定位数据 | 时间、状态(A/V)、纬度、经度、速度、日期 |
$GPGSV | 可见卫星信息 | 卫星总数、仰角、方位角、信噪比(SNR) |
$GPGSA | 精度因子与活动卫星 | 定位模式(2D/3D)、卫星ID、PDOP/HDOP/VDOP |
$GPVTG | 地面速度与航向 | 真北航向、磁北航向、地面速度(km/h或节) |
$GPGLL | 地理定位信息(简化版) | 纬度、经度、UTC时间、状态 |
3. 多系统扩展
支持多卫星系统(如北斗、GLONASS、Galileo)的模块会使用以下前缀:
- GP:GPS(美国)
- GL:GLONASS(俄罗斯)
- GA:Galileo(欧盟)
- BD 或 GB:北斗(中国)
- GN:混合系统(如
$GNGGA
表示多系统联合定位数据)
二进制协议(厂商私有协议)
为提高效率和实现高级控制,厂商设计了二进制协议,例如:
1. UBX协议(u-blox模块)
特点:高效二进制格式,支持配置、诊断、高精度定位。
消息结构:
1
2
3
4
5[0xB5][0x62] // 同步头
[Class][ID] // 消息类型标识
[Length] // 数据长度
[Payload] // 数据内容
[CK_A][CK_B] // 校验和常用功能:
- 配置输出频率(
CFG-MSG
) - 设置定位模式(
NAV5
) - 获取原始观测数据(
RXM-RAW
)
- 配置输出频率(
2. SiRF协议(SiRFstar芯片)
- 特点:早期广泛使用的二进制协议,支持星历下载和低功耗模式。
- 消息结构:以
0xA0
开头,包含消息ID和数据负载。
三、协议应用场景
协议类型 | 适用场景 | 优势与劣势 |
---|---|---|
NMEA 0183 | 通用设备(车载导航、手持终端) | ✅ 兼容性强,易解析 ❌ 效率低,冗余多 |
UBX/SiRF | 高精度定位(无人机、测绘) | ✅ 高效,支持高级功能 ❌ 需专用解析库 |
四、协议解析示例
NMEA语句解析(以$GPGGA为例)
1 | $GPGGA,092255.00,4807.0386,N,01131.0000,E,1,08,1.2,545.4,M,46.9,M,,*42 |
字段分解:
序号 字段 含义 1 092255.00 UTC时间(09:22:55) 2 4807.0386 纬度(48°07.0386’) 3 N 北纬 4 01131.0000 经度(011°31.0000’) 5 E 东经 6 1 定位质量(0=无效,1=单点定位) 7 08 参与定位的卫星数量 8 1.2 HDOP(水平定位精度因子) 9 545.4,M 海拔高度(米)
UBX协议解析示例(配置消息)
plaintext
1 | B5 62 06 00 14 00 01 00 00 00 D0 08 00 00 00 96 00 00 07 00 01 00 00 00 00 00 9A 99 |
- 解析:
- 同步头:
B5 62
- Class-ID:
06 00
(CFG-MSG) - 负载:设置NMEA语句
GGA
的输出频率为1Hz。
- 同步头:
五、协议调试工具
- 串口调试助手:如Putty、Tera Term,直接查看原始数据。
- 专用软件:
- u-blox u-center(支持UBX协议配置)
- GPSInfo(可视化NMEA数据)
- 在线校验工具:验证NMEA校验和(如nmea-checksum)。
六、注意事项
- 数据完整性:需校验和验证,避免解析错误。
- 多系统兼容:混合定位时需注意语句前缀(如$GNGGA可能包含GPS+北斗数据)。
- 波特率匹配:确保设备与接收端波特率一致(常见值:4800/9600/115200 bps)。
掌握GPS协议是开发定位系统的核心基础,通过协议解析可快速诊断硬件问题(如天线信号弱、卫星数不足)或配置错误(如输出频率设置不当)。
3. 如何查看日志?
方法1:直接阅读NMEA日志
示例日志行:
1
$GNGGA,102842.00,2231.86157,N,11356.30255,E,1,05,10.50,129.7,M,-2.7,M,,*65
解析:
- **
102842.00
**:UTC时间(10:28:42.00) - **
2231.86157,N
**:纬度(22°31.86157’ 北纬) - **
11356.30255,E
**:经度(113°56.30255’ 东经) - **
1
**:定位质量(1=单点定位) - **
05
**:参与定位的卫星数 - **
10.50
**:HDOP(水平精度因子,越小越好) - **
129.7,M
**:海拔高度(129.7米
- **
4. 如何判断GPS数据是否有效?
关键指标 | 有效值 | 无效值 |
---|---|---|
定位状态($GNRMC) | A (有效) |
V (无效) |
定位质量($GNGGA) | 1 (单点定位) |
0 (无效) |
卫星数($GNGGA) | ≥4 | <4 |
HDOP($GNGGA) | <2(优) | >10(差) |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 螃蟹壳!