车载传感器数据研究-【GPS】

当前车联网领域研究一款智能小设备,可以用于对车辆的运行轨迹和三急数据的采集,需要用到相关的传感器。说道传感器,就有相关的datasheet要读了,为了确定智能设备和后台管理系统之间的数据传输报文格式,这里就有对相关的数据格式要有一点研究。

GPS的接收器芯片有很多,我这里就结合MTK的MT3337V/B为目标,相关的文档,自己可以去我网盘下载(https://pan.baidu.com/s/1JiCKBQq_Tk2WdqCiKVIKZg,提取码:upq8)。这款接收器的数据采集格式,完全符合NMEA-0183的规范,采集到的数据都是标准的ASCII码,结合业务的需要,我们可以重点关注自己感兴趣的部分。

GPS发送数据以行为单位,数据格式如下:

$信息类型,x,x,x,x,x,x,x,x,x,x,x,x,x

每行以字符”$”开头,以<CR><LF>为结尾,CR—Carriage Return,LF—Line Feed,表示回车和换行,这些都是NMEA-0813的规范定义的。信息类型有以下几种

GPS数据信息类型分类
信息类型 英文语义 中文语义
GPRMC Recommended Minimum Specific GPS/TRANSIT Data(RMC) 推荐定位信息
GPVTG Track Made Good and Ground Speed(VTG) 地面速度信息
GPGGA Global Positioning System Fix Data(GGA) 全球定位信息
GPGSA GPS DOP and Active Satellites(GSA) 当前卫星信息
GPGSV GPS Satellites in View(GSV) 可见卫星信息
GPGLL Geographic Position(GLL) 地理定位信息

首先,对于NMEA-0183规范做一点简单的介绍(GPS接收器采集的数据都准守这个规则):

 

下面,这个图可以看出,NMEA-0183不仅仅是针对GPS,还支持很多其他的通信协议的规范支持!

这里的GP就是GPS接收器采集的数据中$GP部分,后面可以带上前文表格中的RMC,VTG等等,所谓的sentence identifier。下面看看RMC这个sentence identifier的相关介绍。

因为我们的采集设备中,要采集经纬度,以及地面速度(节),所以,这个RMC的信息足够,其他的部分,这里不做介绍,可以自行从NMEA-0183里面阅读。

数据详解:

      $GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>*hh 
  <1> UTC 时间hhmmss(时分秒)格式 
  <2> 定位状态A=有效定位,V=无效定位 
  <3>纬度ddmm.mmmm(度分)格式(前面的0也将被传输) 
  <4> 纬度半球N(北半球)或S(南半球) 
  <5>经度dddmm.mmmm(度分)格式(前面的0也将被传输) 
  <6> 经度半球E(东经)或W(西经) 
  <7>地面速率(000.0~999.9节,前面的0也将被传输) 
  <8>地面航向(000.0~359.9度,以真北为参考基准,前面的0也将被传输) 
  <9> UTC 日期ddmmyy(日月年)格式 
  <10>磁偏角(000.0~180.0度,前面的0也将被传输) 
  <11> 磁偏角方向E(东)或W(西) 
  <12>模式指示(仅NMEA01833.00版本输出,A=自主定位,D=差分,E=估算,N=数据无效)

详细说明:

1.时间,这个是格林威治时间,是世界时间(UTC),我们需要把它转换成北京时间(BTC),BTC和UTC差了8个小时,要在这个时间基础上加8个小时。 
2. 定位状态,在接收到有效数据前,这个位是‘V’,后面的数据都为空,接到有效数据后,这个位是‘A’,后面才开始有数据。 
3. 纬度,我们需要把它转换成度分秒的格式,计算方法:如接收到的纬度是:4546.40891 
  4546.40891/100=45.4640891可以直接读出45度, 4546.40891–45*100=46.40891, 可以直接读出46分 
  46.40891–46 =0.40891*60=24.5346读出24秒, 所以纬度是:45度46分24秒。 
4. 南北纬,这个位有两种值‘N’(北纬)和‘S’(南纬) 
5. 经度的计算方法和纬度的计算方法一样 
6. 东西经,这个位有两种值‘E’(东经)和‘W’(西经) 
7.速率,这个速率值是海里/时,单位是节,要把它转换成千米/时,根据:1海里=1.85公里,把得到的速率乘以1.85。 
8. 航向,指的是偏离正北的角度 
9. 日期,这个日期是准确的,不需要转换

这里关于GPS的经纬度信息,有些小知识需要注意:

全球经纬度的取值范围为:纬度-90~90,经度-180~180
中国的经纬度范围大约为:纬度3.86~53.55,经度73.66~135.05
北京行政中心的纬度为39.92,经度为116.46

越北面的地方纬度数值越大,越东面的地方经度数值越大
度分转换: 将度分单位数据转换为度单位数据,公式:度=度+分/60
例如: 经度 = 116°20.12',纬度 = 39°12.34'
经度 = 116 + 20.12 / 60 = 116.33533°
纬度 = 39 + 12.34 / 60 = 39.20567°
分秒转换: 将度分秒单位数据转换为度单位数据,公式:度 = 度 + 分 / 60 + 秒 / 60 / 60
例如: 经度 = 116°20'43",纬度 = 39°12'37"
经度 = 116 + 20 / 60 + 43 / 60 / 60 = 116.34528°
纬度 = 39 + 12 / 60 + 37 / 60 / 60 = 39.21028°

针对上面的知识的总结:

① 基本规范定义

经度:-180~180,用负号(-)表示西经(W),正号(+)表示东经(E

纬度:-90~90,用负号(-)表示南纬(S),正号(+)表示北纬(N

② GPS的经纬度数据采用度分秒表示方式:

1=60分;1=60

经纬度信息,例如:a度b分c秒,a2字节表示,b和c分别1个字节表示

对于一般的车载设备定位或者导航而言,只需要经纬度信息即可,无需高度信息

原文地址:https://www.cnblogs.com/shihuc/p/12777257.html