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

作者:良知犹存

转载授权以及围观:欢迎添加微信公众号:Conscience_Remains

写在前头,因为排版问题,一些数据无法在知乎正常显示,大家可以直接搜索添加公众号观看文章

总述

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

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

通常GNSS定位的功能有:

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

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

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

导航: 

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

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

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

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

    星际导航:卫星轨道定位 

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

定位:

    车辆防盗系统 

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

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

精准农业:

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

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

维基百科

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

一、寻找合适模块

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

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

二、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数据的文章,里面数据是实践过的,下一篇分享代码实现。如果大家有什么更好的思路,欢迎分享交流哈。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,558评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,002评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,036评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,024评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,144评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,255评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,295评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,068评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,478评论 1 305
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,789评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,965评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,649评论 4 336
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,267评论 3 318
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,982评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,223评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,800评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,847评论 2 351