从NMEA0183到GNSS定位数据获取(一)原理篇

简介: 从NMEA0183到GNSS定位数据获取(一)原理篇

总述

   GPS我们都知道,一种用来全球定位的系统,后来俄罗斯推出了格洛纳斯定位系统,中国推出了北斗定位,欧盟有伽利略,印度与日本也有有发展。所以后来把覆盖全球的自主地利空间定位的卫星系统成为GNSS。

   现在卫星定位那么热,那么作为一个嵌入式人怎么获取这些数据为我们所用呢?下面就听作者一一道来。

通常GNSS定位的功能有:

精确定时:广泛应用在天文台、通信系统基站、电视台中

工程施工:道路、桥梁、隧道的施工中大量采用GPS设备进行工程测量

勘探测绘:野外勘探及城区规划中都有用到

导航:

   武器导航:精确制导导弹、巡航导弹

   车辆导航:车辆调度、监控系统

   船舶导航:远洋导航、港口/内河引水

   飞机导航:航线导航、进场着陆控制

   星际导航:卫星轨道定位

   个人导航:个人旅游及野外探险

定位:

   车辆防盗系统

   手机,PDA,PPC等通信移动设备防盗,电子地图,定位系统

   儿童及特殊人群的防走失系统

精准农业:

   农机具导航、自动驾驶,土地高精度平整

提供时间数据:用于给电信基站、电视发射站等提供精确同步时钟源

维基百科

从上面可知GNSS的功能相当丰富,那么作为一个嵌入式开发者怎么获得这些数据呢?


一、寻找合适模块

4edc953e2c684bbe819ffa954c899c08.png

当然大家可以用各种渠道找到合适的模块,对于嵌入式端我们要选择哪种呢?我推荐了一下本篇所实际应用的模块——中移物联网的M6313模块,GSM与GNSS二合一模块(改天我介绍一下它的GSM功能)。4edc953e2c684bbe819ffa954c899c08.png

使用也比较方便,利用SOC的串口连接就可以

4edc953e2c684bbe819ffa954c899c08.png


二、NMEA-0183协议

模块选好了,SOC也连接完毕,配置好模块,连接好GPS天线,这个时候GNSS模块的串口开始向SOC按照一定频率发送数据。并且猛的一看,我们可能看不懂,例如M6313的示例格式如下:

AT+QGNSSC=1 // 开启 GNSS 功能
OK
AT+QGNSSRD?
+QGNSSRD: 
$GNRMC,032220.291,V,,,,,0.00,0.00,140716,,,N*5D
$GNVTG,0.00,T,,M,0.00,N,0.00,K,N*2C
$GNGGA,032220.291,,,,,0,0,,,M,,M,,*5D
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$BDGSA,A,1,,,,,,,,,,,,,,,*0F
$GPGSV,2,1,07,23,,,31,08,,,49,30,,,33,16,,,45*7E
$GPGSV,2,2,07,07,,,44,27,,,49,26,,,43*72
$BDGSV,1,1,03,10,,,47,04,,,40,07,,,48*62
$GNGLL,,,,,032220.291,V,N*6F
OK

除去模块的回应的数据,中间那些数据是什么,我们分辨不清,这时候就要请NMEA-0183协议出场了。

NMEA-0183是美国国家海洋电子协会(National Marine Electronics Association)为海用电子设备制定的标准格式。目前业已成了GPS导航设备统一的RTCM(Radio Technical Commission for Maritime services )标准协议。

由于美国GPS推出的时间很早,所以很多GNSS的标准都是依托美国一些协会制定好的标准。

上面看到的诸如$GNRMC打头数据每一个都代表不同的信息:

序号

命令

说明

1

$*GGA

卫星定位信息

2

$*GSA

卫星PRN数据

3

$*GSV

可视卫星信息

4

$*RMC

推荐定位信息

5

$*VTG

地面速度信息

6

$*GLL

地理定位信息

7

$*GPZDA

UTC时间和日期

注:* 美国的GPS标准中*代表GP,现在由于其他国家的定位系统,所以扩展到其他字符例如:

标识符 含义
BD BDS,北斗二代卫星系统
GP GPS
GL GLONASS
GA Galileo
GN GNSS,全球导航卫星系统

协议帧总说明:

该协议采用ASCII码,其串行通信默认参数为:M6313的波特率默认为115200bps,数据位=8bit,开始位=1bit,停止位=1bit,无奇偶校验。

帧格式形如:$aaccc ,ddd ,ddd ,...... ,ddd*hh<CR><LF>

1、“$”——帧命令起始位

2、aaccc——地址域,前两位为识别符,后三位为语句名

3、ddd...ddd——数据

4、“*”——校验和前缀

5、hhh——校验和(check sum),$与*之间所有字符ASCII码的校验和(各字节做异或运算,得到校验和后,在转换16进制格式的ASCII字符。)

6、<CR><LF>——CR(Carriage  Return)+ LF (Line Feed)帧结束,回车换行。

1.Global Positioning Positioning Positioning Positioning System Fix Data(GGA)GPS 定位信息

$GPGGA,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,M,<10>,M,<11>,<12>*hh

范例数据:

$GPGGA,065545.789,2109.9551,N,12023.4047,E,1,9,0.85,18.1,M,-2.2,M,8.0,,*5E  

名称 示例 单位 字节位置
消息 ID $GPGGA GGA  
UTC 065545.789 hhmmss.sss <1>
纬度 2109.9551 ddmm.mmmm <2>
N/S 指示 N N=北, S=南 <3>
经度 12023.4047 dddmm.mmmm <4>
E/W 指示 E W=西, E=东 <5>
定位指示 1 0:未定位
1:SPS 模式,定位有效
2:差分, SPS 模式,定位有效
3:PPS 模式,定位有效
<6>
星数目 9 范围 0 到 12 <7>
HDOP 0.85 水平精度(0.5~99.9) <8>
MSL 幅度
(海拔)
18.1 米(-9999.9~99999.9) <9>


单位 M  
大地 -2.2 <10>
单位 M -  
差分时间 8.0 <11>
差分 ID 0000   <12>
校验和 *5E    
<CR><LF> 消息结束    

2.GPS DOP and Active Satellites Satellites Satellites Satellites(GSA)当前卫星信息

$GPGSA,<1>,<2>,<3>,<3>,<3>,<3>,<3>,<3>,<3>,<3>,<3>,<3>,<3>,<3>,<4>,<5>,<6>*hh

范例数据:

$GPGSA,A,3,10,24,12,32,25,21,15,20,31,,,,1.25,0.85,0.91*04

名称 示例 单位 描述
消息 ID $GPGSA GSA  
模式 1 A M=手动, 强制在 2D 或 3D 模

A=自动
 
模式 2 3 1:定位无效
2:2D 定位
3:3D 定位
 
卫星使用 10 通道 1  
卫星使用 24 通道 2  
卫星使用 12 通道 3  
卫星使用 32 通道 4  
卫星使用 25 通道 5  
卫星使用 21 通道 6  
卫星使用 15 通道 7  
卫星使用 20 通道 8  


,,, ,,, ,,, ,,,
卫星使用 通道 12    
PDOP 1.25 位置精度  
HDOP 0.85 水平精度  
VDOP 0.91 垂直精度  
校验和 *04    
<CR><LF> 消息结束    

3. GPS Satellites Satellites Satellites Satellites in View(GSV)可见卫星信息

$GPGSV,<1>,<2>,<3>,<4>,<5>,<6>,<7>,…<4>,<5>,<6>,<7>*hh

范例数据:

$GPGSV,3,1,12,14,75,001,31,32,67,111,38,31,57,331,33,26,47,221,20*73

名称 示例 单位 描述
消息 ID $GPGSV GSV  
消息数目 3 范围 1 到 3  
消息编号 1 范围 1 到 3  
卫星数目 12    
卫星 ID 14 范围 1 到 32  
仰角 75 最大 90°
方位角 001 范围 0 到 359°
信噪比 31 dBHz 范围 0 到 99,没有跟踪时为
卫星 ID 32 范围 1 到 32  
仰角 67 最大 90°
方位角 111 范围 0 到 359°
信噪比 38 dBHz 范围 0 到 99,没有跟踪时为
卫星 ID 31 范围 1 到 32  


仰角 57 最大 90°
方位角 331 范围 0 到 359°
信噪比 33 dBHz 范围 0 到 99,没有跟踪时为
卫星 ID 26 范围 1 到 32  
仰角 47 最大 90°
方位角 221 范围 0 到 359°
信噪比 20 dBHz 范围 0 到 99,没有跟踪时为
校验和 *73    
<CR><LF> 消息结束    


4. Recommended Recommended Recommended Recommended Minimum Minimum Minimum Minimum Specific Specific Specific Specific GPS/TRANSIT GPS/TRANSIT GPS/TRANSIT GPS/TRANSIT Data(RMC)推荐定位信息

$GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>*hh

范例数据:

$GPRMC,100646.000,A,3109.9704,N,12123.4219,E,0.257,335.62,291216,,,A*59

名称 示例 单位 描述
消息 ID $GPRMC RMC  
UTC 100646.000 hhmmss.ss  
状态 A A=数据有效;V=数据无效  
纬度 2109.9704 ddmm.mmmm  
N/S 指示 N N=北, S=南  
经度 11123.4219 dddmm.mmmm  
E/W 指示 E W=西, E=  
地面速度 0.257 Knot(节)  
方位 335.62  
日期 291216 ddmmyy  
磁 量 -    
校验和 *59    
<CR><LF> 消息结束    

5. Track Made Good and Ground Speed(VTG)地面速度信息$GPVTG,<1>,T,<2>,M,<3>,N,<4>,K,<5>*hh

范例数据:

$GPVTG,335.62,T,,M,0.257,N,0.477,K,A*38

名称 示例 单位 描述
消息 ID $GPVTG VTG  
方位 335.62  
参考 T True  
方位 335.62  
参考 M Magnetic  
速度 0.257 Knot  
单位 N    
速度 0.477 公里/小时  
单位 K 公里/小时  
校验和 *10    
<CR><LF> 消息结束    

这就是我分享的第一篇NMEA-0183到GNSS数据的文章,里面数据是实践过的,下一篇分享代码实现。如果大家有什么更好的思路,欢迎分享交流哈。

目录
相关文章
|
8月前
|
监控 安全 物联网
什么是UWB定位技术?UWB定位的应用场景及功能介绍
uwb定位技术全称Ultra Wide Band,超宽带技术。uwb超宽带技术是一种全新的通信技术,与传统通信技术有极大差异。它不需要使用传统通信体制中的载波,而是通过发送和接收极窄脉冲来实现无线传输,由于脉冲时间宽度极窄,使用的带宽在500MHz以上。 后来,由于uwb定位技术穿透力强、功耗低、安全性高、定位精度高等优势,人们意识到了它在高精度定位领域的价值,uwb在工业定位领域的应用逐渐成为主流。
|
10月前
|
数据可视化 定位技术 API
百度地图开发:海量点、测距以及定位聚合功能
百度地图开发:海量点、测距以及定位聚合功能
220 0
|
2月前
|
算法 机器人 定位技术
论文介绍:DexCap——用于灵巧操作的可扩展和便携式动作捕捉数据收集系统
【2月更文挑战第28天】论文介绍:DexCap——用于灵巧操作的可扩展和便携式动作捕捉数据收集系统
29 2
论文介绍:DexCap——用于灵巧操作的可扩展和便携式动作捕捉数据收集系统
|
6月前
|
监控 算法 安全
UWB定位技术源码:实现微米级精度的人员定位系统
UWB人员定位系统是一种基于超宽带技术的人员定位系统,它通过发送和接收超短脉冲信号,在测距方面可以达到微米级精度。这种系统通常需要具备高精度的定位能力,通常需要达到微米级别,这样可以在室内和室外的复杂环境中精确定位,为人员的个人安全提供更好地保障。
UWB定位技术源码:实现微米级精度的人员定位系统
|
7月前
|
5G 定位技术
UWB定位系统的定位维度及功能介绍
室内定位系统方案中,UWB室内定位技术目前应用较多,得益于UWB室内定位10-30厘米的超高定位精度。 UWB全称是超宽带技术,它是一种无线载波通信技术。 UWB不采用载波,而是利用纳秒至微微秒级的非正弦波窄脉冲传输数据。
UWB定位系统的定位维度及功能介绍
|
8月前
|
传感器 监控 Java
UWB源码 智慧工厂高精度定位系统源码
定位系统(RTLS)原理 定位原理:参照GPS系统,在定位场景中部署伪卫星小基站,实现对定位目标四周的信号覆盖,从而进一步实现对人员与车辆的定位、导航。该系统一般安装于无法接收GPS信号的室内环境,能实现比GPS系统更精细的的业务功能 定位模式:依据工程数学TDOA运算方法,4台基站可以实现3D定位,3台基站可实现2D平面定位,2台基站可实现长条状1维定位,1台基站则可实现小范围存在识别;所有基站需要上网,进行数据综合分析后,按照所设定的维度,运算出定位结果。
|
10月前
|
监控 算法 计算机视觉
转:九宫图算法对屏幕监控软件的精准度分析及应用场景
九宫图算法(Nine-grid algorithm)是一种用于屏幕监控软件的图像处理算法,通过将屏幕分割成九个等大小的网格区域,并对每个区域进行像素值的分析和比较,从而实现对屏幕图像的精准度分析。
80 0
|
11月前
|
数据可视化 C++
【变化检测】多时相遥感影像变化检测 Qt界面可视化 / 实现卷帘功能(附有完整代码)
【变化检测】多时相遥感影像变化检测 Qt界面可视化 / 实现卷帘功能(附有完整代码)
|
12月前
|
传感器 数据采集 算法
UWB高精度定位技术原理与实现
**UWB的定义** UWB(Ultra Wide Band,超宽带)技术是一种新型的无线通信技术,其与传统通信技术有很大的差异。 在传统通信体制中,数据传输一般都需要使用载波来承载,UWB则不需要,取而代之的是通过发送和接收具有纳秒甚至亚纳秒级的极窄脉冲来传输数据,一个信息比特可映射为数百个这样的脉冲。
UWB高精度定位技术原理与实现
JM
|
算法 图形学
实时全局光照技术(一)——开篇
去语雀阅读写在前面上图是计算机图形学领域里一篇经典论文的“预告图(teaser image)”,预告图通常是论文的结晶,放在开头用来吸引读者的。一些读者看到这张图片可能会想:“这张照片有什么吸引人的”?但是如果我说这不是照片,而是由计算机渲染出来的图片呢?计算机图形学论文的预告图一般是由论文中提出的技术渲染出来的,上图也不例外,但是它看起来太真实了,细节非常丰富(图中有标明),简直可以以假乱真!这
JM
405 0
实时全局光照技术(一)——开篇

热门文章

最新文章