如何呈现gps定位模块获得定位信息

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何呈现gps定位模块获得定位信息相关的知识,希望对你有一定的参考价值。

参考技术A

gps定位模块定位之后会输出定位语句信息,GPS定位信息串行输出格式大多采用美国国家海洋电子协会制定的NMEA-0183 通信标准格式。其输出数据采用的是ASCII码,内容包含了纬度、经度、高度、速度、日期、时间、航向以及卫星状况等信息,常用语句有6 种,包括GGA、GLL、GSA、GSV、RMC 和 VTG。

GPS模块发送到单片机的数据主要由帧头,帧尾和帧内数据组成,因此,必须明确其帧结构,然后才能根据其结构完成对各个定位信息的提取。

如:$aaccc,ddd,ddd,…,ddd*hh<CR><LF>

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

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

3、ddd…ddd——数据

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

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

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

NMEA-0183的数据信息有十几种,这些信息的作用分别是:$GPGGA:输出GPS的定位信息;$GPGSA:输出卫星DOP值信息;$GPGSV:输出可见的卫星信息;$GPRMC:输出最小数据量的GPS信息;$GPVTG:地面速度信息;$GPGLL:输出大地坐标信息;$GPZDA:输出UTC时间信息;$GPGST:输出定位标准差信息;$GPALM:输出卫星星历信息;

定位模块介绍及使用(GPS北斗GLONASS伽利略准天顶)

定位模块

需求

我们在平时的开发中,卫星定位模块是我们非常常用的一种模块,比如无人机的定位、智能手表的定位和机器人的定位等。开发中往往将定位模块和一些支持远距离传输的通信模块共同使用,像NB-IOT这类远距离无线通信技术。而通常不使用WiFi和蓝牙这类短距离无线通信技术。我们通常是将定位模块和MCU通过串口连接,实时的检测位置信息并发送到MCU上,MCU再对这些位置信息进行相应的使用。

介绍

定位卫星

日常的智能硬件的开发中,往往卫星多、频点多、信号质量好,那么定位效果就越好。目前使用的卫星导航主要有中国北斗(BDS)、美国 GPS、俄罗斯GLONASS、欧盟 Galileo 及日本准天顶(QZSS)这 5 套卫星导航系统的总计 16 个频点。

GPS

GPS的空间部分是由24 颗工作卫星组成,它位于距地表20 200km的上空,均匀分布在6 个轨道面上(每个轨道面4 颗),轨道倾角为55°。此外,还有4 颗有源备份卫星在轨运行。卫星的分布使得在全球任何地方、任何时间都可观测到4 颗以上的卫星,并能保持良好定位解算精度的几何图象。这就提供了在时间上连续的全球导航能力。GPS 卫星产生两组电码,一组称为C/A 码,一组称为P 码(Procise Code 10123MHz),P 码因频率较高,不易受干扰,定位精度高,因此受美国军方管制,并设有密码,一般民间无法解读,主要为美国军方服务。C/A 码人为采取措施而刻意降低精度后,主要开放给民间使用。

中国“北斗”卫星导航系统

卫星数量:3颗卫星组成,2颗为工作卫星,1颗为备用卫星;用途为军民两用。前两颗卫星分别于2000年和2003年发射成功。2012年12月27日,北斗卫星导航系统正式运行。

俄罗斯GLONASS卫星导航系统

卫星数量:24颗卫星组成; 精度:10米左右; 用途:军民两用;

欧洲“伽利略”卫星导航系统

卫星数量:共由30颗中高度圆轨道卫星组成,其中27颗为工作卫星,3颗为候补。轨道高度为24126公里,位于3个倾角为56度的轨道平面内,最高精度小于1米,主要为民用。

日本准天顶卫星系统

卫星数量:以三颗人造卫星透过时间转移完成全球定位系统区域性功能的卫星扩增系统。

常用的定位模块介绍

本文中进行测试和使用的卫星定位模块是EVB_Air551G。
EVB_Air551G 是基于 Air551G 模块的天线一体化模组,这是一款双频、高性能、高集成 度的多模卫星定位导航模块。体积小、功耗低,可用于车载导航、智能穿戴、无人机等 GNSS 定位的应用中。支持北斗三代/GPS/GLONASS/GALILEO/QZSS/SBAS 等卫星定位系统,支持 L1/L5 两个频段同时定位,支持多系统联合定位和单系统独立定位。
我们在平时的开发中经常会遇到接线正确,却没有卫星信号的情况,这类问题绝大多数都是因为,使用者是在室内进行测试的,定位模块的局限是只有在室外才能正常运行,在室内的卫星信号就会很差。


本文主要使用此模块进行卫星定位的测试。

使用

接线

首先是接线,因为常用的定位模块都是通过串口的方式进行传输数据,所以接线一般也比较类似。

定位模块引脚名称描述
VCC供电电源,电压输入范围常是 3.3V-5.5V
TXD串口数据输出,连接到开发板的RXD
RXD串口数据输入,连接到开发板的TXD
GND接地

卫星测试

我们将卫星定位模块和USB转TTL相连,使用NaviTrack进行卫星测试。

  1. 图中是串口速率匹配区域,我们可以选择相应的串口号和波特率。
  2. 从这里可以看到模块所处位置的卫星强度,因为我是放在室内进行测试,所以卫星强度并没有很高。
    图中就可以看到G7、Q199、B26三颗卫星的信号强度。
  3. 下图可以看到模块运行时检测到的卫星方位。
  4. 从图中可以看到卫星定位的消息,比如现在的时间,经纬度等,我们主要需要的信息就是在这里显示。以下图为例,此模块的测试时间就是以世界统一时间为标准的2022年3月10日7点56分13秒。经纬度为:
    纬度:33.86884350N
    经度:115.47853917E

    我们通过这个经纬度就可以算出大概位置,比如上图这个就可确定定位模块所在位置为中国河南。

串口数据

我们要想使用定位的数据,当然不可能像测试一样,用电脑的上位机看定位的数据,而往往是通过串口将数据发送到MCU上,之后查看数据或者对数据进行解析并使用。

图中就是定位模块通过串口发送出来的数据。

解析信息及使用

解析定位信息

首先,我们从串口调试助手查看一下收到的数据。

我们可以看到每一行数据各不相同,但大制可以分为语句标识符和具体信息,每条信息用$开头。

标识符

语句标识符以可以拆分为两部分,前两位是第一部分,标识是哪种卫星发来的数据;后三位是第二部分,标识后面的数据是那种类型的数据。

  1. 第一部分中,具体有五种类型的卫星。
标识符含 义
BDBDS,北斗三代/二代卫星系统
GPGPS
GL俄罗斯GLONASS卫星导航系统
GAGalileo,欧洲“伽利略”卫星导航系统
GNGNSS,全球导航卫星系统

我们只需要根据标识符的前两位就可以判断出数据来自哪种卫星定位。
比如:$GNGGA,062904.094,3352.18877,N,11528.72841,E,0,1,,20.19,M,-8.76,M,,*77
标识符的前两位为GN,既可以判断出是收到的是GNSS(全球导航卫星系统)的信息。
2. 第二部分中,标识数据类型主要也有五种。

标识符含 义
GGA时间、位置、卫星数量
GSAGPS 接收机操作模式,定位使用的卫星,DOP 值,定位状态
GSV可见 GPS 卫星信息、仰角、方位角、信噪比
RMC时间、日期、位置、速度
VTG地面速度信息

我们只需要根据标识符的后三位就可以判断出数据是什么类型。
比如:$GNGGA,062904.094,3352.18877,N,11528.72841,E,0,1,,20.19,M,-8.76,M,,*77
标识符的后三位为GGA,即代表后面的具体数据为时间、位置和卫星数量。

具体信息

我们现在来解析以下具体的数据。
我们根据标识符对后面的信息进行截取,比如
$GNGGA,063327.094,3352.18138,N,11528.75505,E,0,4,,20.21,M,-8.75,M,,*78
我们可以根据GPS-GGA数据格式进行解析这些数据。可分为具体17个字段:
标识符,UTC时间,纬度,纬度半球,经度,经度半球,定位指示,卫星数量,水平精确度,海拔高度,高度单位,大地水准面高度,高度单位,差分GPS数据期限,差分参考基站标号,校验和,结束标记(用回车符和换行符),分别用14个逗号进行分隔。
格式为
$–GGA,hhmmss.ss,llll.ll,a,yyyyy.yy,a,x,xx,x.x,x.x,M,x.x,M,x.x,xxxx*hh
下面来具体解析一些数据,方便大家进行理解。

  1. 时间信息为:063327.094
    时间格式为前两位为小时,三四位是分钟,后面是秒。所以这个数据可以解析为,UTC时间06:33:27.094
  2. 位置信息为:3352.18138,N,11528.75505,E
    时间格式为先是纬度,再是经度,中间用逗号隔开并且用位置的首字母来区分是北纬还是南纬,东经还是西经,和经纬度也用逗号隔开。经纬度的具体度数的格式为小数点前两位以前为度,后面为分
    以这个数据可以解析为,位置,北纬33度52.18138分,东经115度28.75505
  3. 剩余信息根据手册进行使用,对日常的开发用处较少,下面将GGA的数据格式分享出来。

    从这里我们可以看出,$GNGGA,063327.094,3352.18138,N,11528.75505,E,0,4,,20.21,M,-8.75,M,,*78
    中的卫星数量是4,剩下的数据可以自行和表对照。

使用

我们使用这些数据,可以通过位数的值来使用。比如如果接收到一组数据data。那么如果data[1]= =‘B’ ,
data[2]= =‘D’,那么就代表这个数据收到的是北斗导航的数据。
或者可以使用字符串匹配算法进行使用,当数据中有GAGSV,明显这条数据就是Galileo卫星后面是可见 GPS 卫星信息、仰角、方位角、信噪比的数据。

后续

如果想了解更多物联网、智能家居项目知识,可以关注我的项目实战专栏。
或者关注公众号。

编写不易,感谢支持。

以上是关于如何呈现gps定位模块获得定位信息的主要内容,如果未能解决你的问题,请参考以下文章

android 版百度地图如何通过定位功能获得当前的位置所在的城市?

定位模块介绍及使用(GPS北斗GLONASS伽利略准天顶)

定位模块介绍及使用(GPS北斗GLONASS伽利略准天顶)

GPS定位函数

LocationManager-定位方式原理解析

android打开网页,并保存当前位置源码