quecgnss - 内置GNSS

此模块提供内置GNSS的使用接口

QuecPython模组当前内置GNSS支持列表:

ECX00U AA/LA系列

EG91XU AA系列

EC800M GA/GB/GC/GD系列

EG810M GA系列

EC800G GA系列

BG95M1/M3型号

使用示例

import quecgnss


def main():
    quecgnss.configSet(0,1)#设置定位星系为GPS+Beidou
    quecgnss.configSet(2,1)#打开AGPS
    quecgnss.configSet(4,1)#打开备电
    ret = quecgnss.init()
    if ret == 0:
        print('GNSS init ok.')
    else:
        print('GNSS init failed.')
        return -1
    data = quecgnss.read(4096)
    print(data[1].decode())

    quecgnss.gnssEnable(0)


if __name__ == '__main__':
    main()


#===================================================================================================
#运行结果
167,169,170,,,,,,,,1.773,1.013,1.455*15
$GPGSV,2,1,8,3,23,303,34,16,32,219,28,22,74,98,26,25,16,43,25*77
$GPGSV,2,2,8,26,70,236,28,31,59,12,38,32,55,127,34,4,5,,21*49
$BDGSV,2,1,8,163,51,192,32,166,70,11,31,167,52,197,32,169,59,334,31*61
$BDGSV,2,2,8,170,40,205,31,161,5,,31,164,5,,27,165,5,,29*59
$GNRMC,022326.000,A,3149.324624,N,11706.921702,E,0.000,261.541,180222,,E,A*38
$GNGGA,022326.000,3149.324624,N,11706.921702,E,1,12,1.013,-8.580,M,0,M,,*47
$GNGLL,3149.324624,N,11706.921702,E,022326.000,A,A*44
$GNGSA,A,3,31,32,3,16,22,25,26,,,,,,1.773,1.013,1.455*1C
$GNGSA,A,3,163,166,167,169,170,,,,,,,,1.773,1.013,1.455*15
$GPGSV,2,1,8,3,23,303,34,16,32,219,27,22,74,98,26,25,16,43,25*78
$GPGSV,2,2,8,26,70,236,28,31,59,12,37,32,55,127,34,4,5,,20*47
$BDGSV,2,1,8,163,51,192,32,166,70,11,31,167,52,197,32,169,59,334,31*61
$BDGSV,2,2,8,170,40,205,31,161,5,,31,164,5,,27,165,5,,29*59
$GNRMC,022327.000,A,3149.324611,N,11706.921713,E,0.000,261.541,180222,,E,A*3F
$GNGGA,022327.000,3149.324611,N,11706.921713,E,1,12,1.013,-8.577,M,0,M,,*48
$GNGLL,3149.324611,N,11706.921713,E,022327.000,A,A*43
...... # 数据较多,省略
$GNGSA,A,3,31,32,3,16,22,25,26,,,,,,1.837,1.120,1.456*11
$GNGSA,A,3,163,166,167,169,170,,,,,,,,1.837,1.120,1.456*18
$GPGSV,2,1,8,3,23,302,27,16,32,220,26,22,73,101,27,25,16,43,27*45
$GPGSV,2,2,8,26,70,237,28,31,59,13,33,32,54,128,28,4,5,,24*44
$BDGSV,2,1,8,163,51,192,33,166,71,11,35,167,52,198,33,169,59,334,34*6E
$BDGSV,2,2,8,170,40,205,32,161,5,,33,164,5,,28,165,5,,30*5F
$GNRMC,022507.000,A,3149.324768,N,11706.922344,E,0.000,261.541,180222,,E,A*31
$GNGGA,022507.000,3149.324768,N,11706.922344,E,1,12,1.120,-8.794,M,0,M,,*48
$GNGLL,3149.324768,N,11706.922344,E,022507.000,A,A*4D
$GNGSA,A,3,31,32,3,16,22,25,26,,,,,,1.837,1.120,1.455*12
$GNGSA,A,3,163,166,167,169,170,,,,,,,,1.837,1.120,1.455*1B
$GPGSV,2,1,8,3,23,302,26,16,32,220,26,22,73,101,27,25,16,43,26*45
$GPGSV,2,2,8,26,70,237,28,31,59,13,32,32,54,128,28,4,5,,24*45
$BDGSV,2,1,8,163,51,192,24,166,71,11,35,167,52,198,33,169,59,334,34*68
$BDGSV,2,2,8,170,40,205,31,161,5,,33,164,5,,28,165,5,,30*5C
$GNRMC,022508.000,A,3149.324754,N,11706.922338,E,0.002,261.541,180222,,E,A*38
$GNGGA,022508.000,3149.324754,N,11706.922338,E,1,12,1.120,-8.750,M,0,M,,*4B
$GNGLL,3149.324754,N,11706.922338,E,022508.000,A,A*46
$GNGSA,A,3,31,3

GNSS 定位数据介绍

NMEA端口数据分类:
                $GPGGA 卫星定位信息
                $GPGSA  卫星PRN数据
                $GPGSV  可视卫星信息
                $GPRMC 推荐定位信息
                $GPVTG  地面速度信息
                $GPDTM 大地坐标系信息
                $GPGNS  GNSS定位数据
NMEA语句解析:
GSV 语句的基本格式如下:

                $GPGSV,(1),(2),(3),(4),(5),(6),(7),...,(4),(5),(6),(7)*hh(CR)(LF)

                字段1:GSV 语句总数

                字段2:本句 GSV 的编号

                字段3:可见卫星的总数(00~12,前面的 0 也将被传输)

                字段4:卫星编号(01~32,前面的 0 也将被传输)

                字段5:卫星仰角(00~90 度,前面的 0 也将被传输)

                字段6:卫星方位角(000~359 度,前面的 0 也将被传输)

                字段7:信噪比(00~99dB,没有跟踪到卫星时为空)(就是常说的CN值)

GGA 语句的基本格式如下:

                $GPGGA,(1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12)*hh(CR)(LF)

                字段1:UTC 时间,hhmmss.sss,时分秒格式

                字段2:纬度ddmm.mmmm,度分格式(前导位数不足则补0)

                字段3:纬度N(北纬)或S(南纬)

                字段4:经度dddmm.mmmm,度分格式(前导位数不足则补0)

                字段5:经度E(东经)或W(西经)

                字段6:GPS状态,0=未定位,1=非差分定位,2=差分定位,3=无效PPS,6=正在估算

                字段7:正在使用的卫星数量(00 - 12)(前导位数不足则补0)

                字段8:HDOP水平精度因子(0.5 - 99.9)

                字段9:海拔高度(-9999.9 - 99999.9)

                字段10:海拔高度单位,米

                字段11:地球椭球面相对大地水准面的高度

                字段12:地球椭球面相对大地水准面的高度单位,米

GSA 语句的基本格式如下:

                $GPGSA,(1),(2),(3),(3),,,,,,,,,,(3),(4),(5),(6),(7)*hh(CR)(LF)

                字段1:定位模式,A=自动手动2D/3D,M=手动2D/3D

                字段2:定位类型,1=未定位,2=2D定位,3=3D定位

                字段3:PRN码(伪随机噪声码),第1信道正在使用的卫星PRN码编号(00)(前导位数不足则补0)(最多12个)

                字段4:PDOP综合位置精度因子(0.0 - 500.0)

                字段5:HDOP综合位置精度因子(0.0 - 500.0)

                字段6:VDOP水平精度因子(0.0 - 500.0)

                字段7:卫星系统ID

VTG语句的基本格式如下:

                $GPVTG,(1),(2),(3),(4),(5),(6),(7),(8),(9)*hh(CR)(LF)

                字段1:运动角度,000 - 359,(前导位数不足则补0)

                字段2:T=真北参照系

                字段3:运动角度,000 - 359,(前导位数不足则补0)

                字段4:M=磁北参照系

                字段5:水平运动速度(0.00)(前导位数不足则补0)

                字段6:N=节,Knots

                字段7:水平运动速度(0.00)(前导位数不足则补0)

                字段8:K=公里/时,km/h

                字段9:状态指示 E(航迹推算) A(非DGPS)

RMC语句的基本格式如下:

                $GPRMC,(1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12),(13)*hh(CR)(LF)

                字段1:UTC时间,hhmmss.sss格式

                字段2:状态,A=定位,V=未定位

                字段3:纬度ddmm.mmmm,度分格式(前导位数不足则补0)

                字段4:纬度N(北纬)或S(南纬)

                字段5:经度dddmm.mmmm,度分格式(前导位数不足则补0)

                字段6:经度E(东经)或W(西经)

                字段7:速度,节,Knots

                字段8:方位角,度

                字段9:UTC日期,DDMMYY格式

                字段10:磁偏角,(000 - 180)度(前导位数不足则补0)

                字段11:磁偏角方向,E=东W=西

                字段12:状态指示 E(航迹推算) A(非DGPS)

                字段13:导航状态,V 表示不提供导航状态

DTM语句的基本格式如下:

                 $GNDTM,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>*<9>(CR)(LF)

                <1>本地坐标系代码 W84,P90

                <2>坐标系子代码 空

                <3>纬度偏移量

                <4>纬度半球N(北半球)或S(南半球)

                <5>经度偏移量

                <6>经度半球E(东经)或W(西经)

                <7>高度偏移量

                <8>坐标系代码 W84

                <9>校验码

GNS语句的基本格式如下:

                $GNGNS,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>.<9>,<10>,<11>,<12>,<13>,*<14>(CR)(LF)

                <1> UTC时间: 定位时间 hhmmss.ss——000000.00~235959.99

                <2> 纬度: ddmm.mmmmm——0000.00000~8959.9999

                <3> 南纬北纬: 北纬N,S南纬

                <4>经度:dddmm.mmmmm——0000.00000~17959.99999

                <5>东经西经: 东经E,西经W

                <6>定位模式: N-未定位;A-已定位;D-普通差分定位;P-高精度定位;R-RTK定位固定解;F-RTK定位浮点解;E-估算值;M-注入位置;S-模拟输入

                <7>定位卫星:参与定位卫星,00-99

                <8>HDOP:水平精度因子,0.5-99.9

                <9>海拔:单位:米

                <10>大地水准面: 地球椭球面相对大地水准面的高度

                <11>差异数据时间:GN开头时为空

                <12>基准站ID:GN开头时为空

                <13>导航状态—— C=告警, S=安全, U=不安全, V=无效

                <14>校验和

GNSS 功能初始化

quecgnss.init

quecgnss.init()

模组内置GNSS模块功能的初始化。

返回值描述
成功返回整型 0 ,失败返回整型 -1

GNSS 工作状态获取

quecgnss.get_state

quecgnss.get_state()

获取GNSS模块当前工作状态

返回值描述

返回值 类型 说明
0 int GNSS模块处于关闭状态
1 int GNSS模块固件升级中
2 int GNSS模块定位中,这种模式下即可开始读取GNSS定位数据,定位数据是否有效需要用户获取到定位数据后,解析对应语句来判断,比如判断GNRMC语句的status是 A 还是 V,A 表示定位有效,V 表示定位无效。

GNSS开关

quecgnss.gnssEnable

quecgnss.gnssEnable(opt)

开启或者关闭GNSS模块。如果是上电后第一次使用内置GNSS功能,一般不需要调用该接口来开启GNSS功能,直接调用init()接口即可,init() 接口在初始化时会自动开启GNSS功能。

参数描述

opt ,int类型

0 - 关闭GNSS功能

1 - 开启GNSS功能

返回值描述

成功返回整型 0 ,失败返回整型 -1

GNSS定位数据获取

quecgnss.read

quecgnss.read(size)

读取GNSS定位数据。

参数描述

size ,int类型,指定读取数据的大小,单位字节。

返回值描述

成功返回一个元组,失败返回整型-1。元组形式如下:
(size, data)
size - 实际读取数据的大小
data - GNSS定位数据

GNSS/LTE优先级设置

当前仅BG95M1/M3型号支持该功能。

quecgnss.setPriority

quecgnss.setPriority(Priority)

在部分模组上,GNSS和LTE会复用射频资源,该接口用来控制GNSS和LTE之间使用射频资源的优先级

参数描述

Priority ,int类型,设定GNSS/LTE优先级的值。

不同平台GNSS/LTE优先级的对应关系:

优先级 BG95M1/M3
0 GNSS>LTE
1 LTE>GNSS

返回值描述

成功返回整型 0 ,失败返回整型 -1

GNSS/LTE优先级获取

当前仅BG95M1/M3型号支持该功能。

quecgnss.getPriority

quecgnss.getPriority()

在部分模组上,GNSS和LTE会复用射频资源,该接口用来读取GNSS和LTE之间使用射频资源的优先级

返回值描述

返回一个整型,代表GNSS/LTE优先级。

不同平台GNSS/LTE优先级的对应关系:

优先级 BG95M1/M3
0 GNSS>LTE
1 LTE>GNSS

内置GNSS配置参数设置

当前仅EC800M GA/GB/GC/GD系列、EG810M GA系列支持该功能

quecgnss.configSet

quecgnss.configSet(config_type, config_value)

设置GNSS参数,包括卫星系统、NMEA语句类型、是否使用AGNSS和APFLASH等

参数描述

  • config_type ,int,要设置的GNSS配置选项类型,含义如下:
参数 类型
0 配置使用的卫星系统
1 配置输出的NMEA语句类型
2 配置是否使能AGPS
3 配置是否使能APFLASH
4 配置是否使能GNSS备电
  • config_value ,int,GNSS配置选项的值,含义如下:

卫星系统(config_type = 0):

参数 含义
0 GPS
1 GPS + BeiDou
3 GPS + GLONASS + Galileo
4 GPS + GLONASS
5 GPS + BeiDou + Galileo
6 GPS + Galileo
7 BeiDou

NMEA语句类型(config_type = 1):该项以bitmap表示,需要打开的选项置为1
如需要输出GGA+RMC+GSV+GSA+VTG时,应使用bitmap(011111),换算为十进制为31

参数 含义
0 禁止输出NMEA语句(000000)
1 GGA(000001)
2 RMC(000010)
4 GSV(000100)
8 GSA(001000)
16 VTG(010000)
32 GLL(100000)
63 全部输出(111111)

是否使能AGPS(config_type = 2):打开该项时,GNSS会从网络下载星历,并在启动时尝试使用星历加速

参数 含义
0 关闭AGPS
1 打开AGPS

是否使能APFLASH(config_type = 3):打开该项时,GNSS会在Quecpython模组保存星历,并在启动时尝试使用星历加速

参数 含义
0 关闭APFLASH
1 打开APFLASH

是否使能备电 (config_type = 4):打开该项并正确连接备电时,GNSS芯片可自行保存星历信息

EC800M GB/GD系列支持备电

参数 含义
0 关闭备电
1 打开备电

返回值描述

int,0为成功,否则为失败

内置GNSS配置参数读取

当前仅EC800M GA/GB/GC/GD系列、EG810M GA系列支持该功能

quecgnss.configGet

quecgnss.configGet(config_type)

读取GNSS参数,包括卫星系统、NMEA语句类型、是否使用AGNSS和APFLASH等

参数描述

  • config_type ,int,要读取的GNSS配置选项类型,含义如下:
参数 类型
0 配置使用的卫星系统
1 配置输出的NMEA语句类型
2 配置是否使能AGPS
3 配置是否使能APFLASH
4 配置是否使能GNSS备电

返回值描述

int,含义如下(-1为失败)

卫星系统(config_type = 0):

参数 含义
0 GPS
1 GPS + BeiDou
3 GPS + GLONASS + Galileo
4 GPS + GLONASS
5 GPS + BeiDou + Galileo
6 GPS + Galileo
7 BeiDou

NMEA语句类型(config_type = 1):该项以bitmap表示,被打开的选项置为1
如输出GGA+RMC+GSV+GSA+VTG时,返回的值为31,换算为二进制即为bitmap(011111)

参数 含义
0 禁止输出NMEA语句(000000)
1 GGA(000001)
2 RMC(000010)
4 GSV(000100)
8 GSA(001000)
16 VTG(010000)
32 GLL(100000)
63 全部输出(111111)

是否使能AGPS(config_type = 2):打开该项时,GNSS会从网络下载星历,并在启动时尝试使用星历加速

参数 含义
0 关闭AGPS
1 打开AGPS

是否使能APFLASH(config_type = 3):打开该项时,GNSS会在Quecpython模组保存星历,并在启动时尝试使用星历加速

参数 含义
0 关闭APFLASH
1 打开APFLASH

是否使能备电 (config_type = 4):打开该项并正确连接备电时,GNSS芯片可自行保存星历信息

EC800M GB/GD系列支持备电

参数 含义
0 关闭备电
1 打开备电