GNSS-RTK厘米级免调试定位套件

1.简介

过去,提起高精度厘米级RTK定位,人们的第一印象是专业领域和高昂的价格,行业内用户可能会想到全站仪,测绘仪,手持高精度设备等等,且专业领域才会使用。但是,如今随着技术的发展和更新,RTK高精度定位技术被越来越多的人熟知和应用到各种场景中,传统的GPS和GNSS定位精度已经不能满足于现有的一些应用场景,基于此,DFRobot推出了一款入门级的RTK定位套件,其采用移远的LC29HDA移动站模块和LC29HBS基站模块,结合LoRa无线传输,可实现半径1.5KM,空旷地带的高精度厘米级定位。
基站移动站都是L1/L5双频模块,支持同时接收GNSS,GPS,GLONASS,Galileo,BDS和QZSS卫星,同时跟踪GPS L1 C/A,GLONASS L1,Galileo E1,BDS B1I,QZSS L1 C/A,GPS L5,GalileoE5a,BDS B2a and QZSS L5频带。移动站上电可快速获取经纬度、时间、高度等信息;基站上电可快速收敛,提供校准数据。基站通过LoRa无线传输RTCM数据,移动站接受RTCM数据后,经过差分运算后,在空旷地段可快速实现厘米级定位。
不同于市面上常见高精度定位模块,入手后还需要去搭建数据链,仅仅数据链的搭建可能就会劝退大部分新手玩家,该款套件已经配置好完整的数据链。作为开箱即用的套件,您可用该套件用于RTK高精度定位入门学习,空旷地带设备跟踪,轨迹绘制,人员定位等等。

注:由于GNSS天线和Lora天线的特性,使用时,需处于空旷地带,且Lora天线的高度尽量大于2m,否则会影响定位精度和定位的范围!!!

2.外观接口介绍

2.1移动站

移动站

名称 介绍
RTK RTK状态指示灯,定位状态值为5,1s闪烁一次;定位状态值为4,常量,其他状态,灭
PWR 电源指示灯
UART I2C 移动站通讯接口UART/I2C输出切换开关
Gravity I2C&UART 移动站数据输出Gravity接口

2.2基站

基站

名称 介绍
Type-C Type-C供电接口
PWR 电源指示灯
PWR IN 外部接线端子供电接口(5~10V)

3.定位基础知识

3.1 常见的定位系统

GPS

利用GPS进行定位的基本原理就是四颗卫星定位地面一个标的物的三维坐标
由于信号传输过程中会经过电离层、对流层,导致信号的传播路径并非遵循两点之间直线最近的原则,因此又会产生对流层和电离层误差。这就导致仅仅利用GPS的四颗定位卫星无法准确的获得标的物的位置信息(误差通常在10米这个量级)。

GNSS

全球导航卫星系统(英文:Global Navigation Satellite System [16-17],缩写:GNSS [13] [15],又称全球卫星导航系统),是能在地球表面或近地空间的任何地点为用户提供全天候的3维坐标和速度以及时间信息的空基无线电导航定位系统

BDS(中国)

北斗卫星导航系统(英文名称:BeiDou Navigation Satellite System,简称BDS),是中国自行研制的全球卫星导航系统 北斗卫星导航系统由空间段、地面段和用户段三部分组成,可在全球范围内全天候、全天时为各类用户提供高精度、高可靠定位、导航、授时服务,并且具备短报文通信能力,已经初步具备区域导航、定位和授时能力,定位精度为分米、厘米级别,测速精度0.2米/秒,授时精度10纳秒。

GPS(美国)

全球定位系统(Global Positioning System,GPS),是一种以人造地球卫星为基础的高精度无线电导航的定位系统,它在全球任何地方以及近地空间都能够提供准确的地理位置、车行速度及精确的时间信息。

GLONASS (俄罗斯)

格洛纳斯(GLONASS),是俄语“全球卫星导航系统GLOBAL NAVIGATION SATELLITE SYSTEM”的缩写 ,格洛纳斯卫星导航系统作用类似于美国的GPS、欧洲的伽利略卫星定位系统和中国的北斗卫星导航系统。

Galileo(欧盟)

伽利略卫星导航系统(Galileo satellite navigation system),是由欧盟研制和建立的全球卫星导航定位系统

QZSS(日本)

准天顶卫星系统(日语:准天顶卫星システム,英文:Quasi-Zenith Satellite System;缩写:QZSS)是以三颗人造卫星透过时间转移完成全球定位系统区域性功能的卫星扩增系统 。其发射信号与 GPS L1 C/A、L1C、L2C 和 L5 信号兼容,覆盖包 括日本和澳洲在内的太平洋地区。模块可同时接收和跟踪 QZSS 与 GPS L1 C/A 和 L5 信号,因而具有更强 的可用性,特别是在诸如城市峡谷等弱信号环境下

RTK

RTK定位技术是一种基于高精度载波相位观测值的实时动态差分定位技术(Real Time Kinematic,RTK ),基准站首先将自己获得的载波相位观测值及站点坐标,通过数据通信链实时发送给周围工作的动态用户。流动站数据处理模块使用动态差分定位的方法确定流动站相对基准站的坐标,然后根据基准站的坐标反算自身的瞬时坐标。
RTK的英文全称是(Real Time Kinematic,RTK)是实时动态载波相位差分技术的简称,是一种通过基准站和流动站的同步观测,利用载波相位观测值实现快速高精度定位功能的差分测量技术。

3.2 RTK数据传输示意图

3.3 RTK技术定位常见应用场景

  • 各种控制测量比如传统的大地测量 , 工程控制测量采用三角网 , 导线网方法来施测,采用RTK技术实时测得定位精度保证观测质量 , 提高作业效率 , 相比常规GPS静态测量 , 快速静态 , 伪动态这些非实时性方法在测量完成后,后续处理若发现精度不合要求还须返测 . 另外RTK技术用于公路控制测量 , 电子线路控制测量 , 水利工程控制测量 , 大地测量 , 可减少人力强度 , 节省费用 , 在几分钟甚至于几秒钟内就可完成控制点测量 .
  • 地形测图 . 采用RTK时,仅需一人背着仪器在要测的地形地貌碎部点呆上一二秒种,并同时输入特征编码,通过手簿可以实时知道点位精度,把一个区域测完后回到室内,由专业的软件接口就可以输出所要求的地形图,这样用RTK仅需一人操作,不要求点间通视,大大提高了工作效率,采用RTK配合电子手簿可以测设各种地形图,如普通测图、铁路线路带状地形图的测设,公路管线地形图的测设,配合测深仪可以用于测水库地形图,航 海海洋测图等等。
  • 放样程放样是测量一个应用分支,采用RTK技术放样时,仅需把设计好的点位坐标输入到电子手簿中,背着GPS接收机,它会提醒你走到要放样点的位置,既迅速又方便,由于GPS是通过坐标来直接放样的,而且精度很高也很均匀,因而在外业放样中效率会大大提高,且只需一个人操作。

3.4 定位数据解析

模块支持的标准NMEA 0183数据包含RMC、GGA、GSV、GSA、VTG、GLL、ZDA、GRS、GST
$后跟随的字符代表国家或地区或GNSS系统,比如GPGGA代表美国GPS ,BDGGA代表中国北斗 ,GLGGA代表俄罗斯GLONASS ,GAGGA代表欧盟Galileo,GNGGA代表多星联合定位。
此处以GGA数据为例分析,更多数据分析 参考NMEA 0183数据解析 2.2. Standard Messages部分

以下是一组GGA数据解析
$GNGGA,063924.000,3037.643956,N,10348.010829,E,5,34,0.46,507.909,M,-32.181,M,1.0,3335*76

字段序号 字段名称 说明 示例值
0 标识符 每个NMEA数据的起始符) $
1 区域或系统 固定为 $GP(GPS)或 $GL(GLONASS)或$GN(GNSS)等 $GNGGA
2 语句标识符 全球定位系统修正数据 GGA
1 UTC 时间 定位UTC时间 (hhmmss.sss格式) 063924.000
2 纬度 纬度值 (ddmm.mmmmmm格式) 3037.643956
3 纬度半球 N=北纬, S=南纬 N
4 经度 经度值 (dddmm.mmmmmm格式) 10348.010829
5 经度半球 E=东经, W=西经 E
6 定位状态 0=无效
1=GPS定位
2=差分定位
4=RTK固定解
5=RTK浮点解
6=估算值
5
7 使用卫星数 参与解算的卫星数量 34
8 HDOP 水平精度因子 (值越小精度越高)
• <1:极好
• 0-2:很好
• 2-5:好
• 5-10:中等
• >10:较差
0.46
9 海拔高度 天线海拔高度 (米,相对于平均海平面MSL) 507.909
10 高度单位 固定为 M (米) M
11 大地水准面高度 大地水准面与WGS84椭球面的高度差 (米)
• 正值:大地水准面高于椭球面
• 负值:大地水准面低于椭球面
-32.181
12 高度差单位 固定为 M (米) M
13 差分数据龄期 仅RTK固定解或浮点解有效 1
14 差分参考站ID 仅RTK固定解或浮点解有效 3335
15 校验和 *后的十六进制校验值 *76

4. 产品特点

  • Lora传输数据
  • 使用简单易上手
  • 使用成本低
  • 空旷地带厘米级定位精度
  • 可单基站对应多移动站

5. 产品性能参数

5.1基站

  • 供电方式
    • type-c
    • 接线柱: 5~10V
  • GNSS天线接口:SMA
  • 接收频段
    • GPS/QZSS:L1 C/A,L5
    • GLONASS:L1
    • Galileo:E1,E5a
    • BDS:B1l,B2a
  • 默认星系:GPS+GLONASS+Galileo+BDS+QZSS
  • 并发接收星系数量:4+QGNSS
  • 功能:基站
  • 灵敏度
    • 捕获:-147dBm
    • 跟踪:-165dBm
    • 重捕获:-159dBm
  • 动态性能
    • 最高海拔:10000m
    • 最大速率:500m/s
    • 最大加速度:4g
  • 原始数据更新频率:1Hz
  • 协议:NMEA 0183/RTCM 3.x
  • 尺寸:92×58×31mm

5.2 移动站

  • 工作电压:3.3V~5V
  • 输出信号:I2C/UART
  • 天线接口:SMA
  • 接收频段
    • GPS/QZSS:L1 C/A,L5
    • GLONASS:L1
    • Galileo:E1,E5a
    • BDS:B1l,B2a
  • 默认星系:GPS+GLONASS+Galileo+BDS+QZSS
  • 并发接收星系数量:4+QGNSS
  • SBAS:WAAS、EGNOS、MSAS、GAGAN
  • 功能:RTK
  • 水平定位精度
    • 自主定位:1m
    • RTK:5cm+1ppm
  • 速度精度:0.03m/s
  • 1pps精度:20ns
  • RTK收敛时间:RTK<10s
  • 灵敏度
    • 捕获:-145dBm
    • 跟踪:-165dBm
    • 重捕获:-157dBm
  • 动态性能
    • 最高海拔:10000m
    • 最大速率:500m/s
    • 最大加速度:4g
  • 导航更新频率:RTK:1Hz
  • 原始数据更新频率:GNSS:1Hz
  • 协议:NMEA 0183/RTCM 3.x
  • 尺寸:92×58×31mm

5.3 Lora模块参数

  • 射频芯片:LLCC68
  • 工作频率:433MHz
  • 调制方式:Lora扩频
  • 最大发射功率:22dBm
  • 接收灵敏度:-129dBm

6 使用教程

6.1 Arduino IDE使用教程

6.1.1硬件准备

6.1.2 软件准备

6.1.3 API接口

/**
 * @fn getUTC
 * @brief Get UTC, standard time 
 * @return sTim_t type, represents the returned hour, minute and second 
 * @retval sTim_t.hour hour 
 * @retval sTim_t.minute minute 
 * @retval sTim_t.second second 
 */
  sTim_t getUTC(void);

/**
 * @fn getDate
 * @brief Get date information, year, month, day 
 * @return sTim_t type, represents the returned year, month, day 
 * @retval sTim_t.year year
 * @retval sTim_t.month month 
 * @retval sTim_t.day day 
 */
  sTim_t getDate(void);

/**
 * @fn getLat
 * @brief Get latitude 
 * @return sLonLat_t type, represents the returned latitude  
 * @retval sLonLat_t.latDD   Latitude degree(0-90)
 * @retval sLonLat_t.latMM   The first and second digits behind the decimal point 
 * @retval sLonLat_t.latMMMMM Latitude  The third and seventh digits behind the decimal point 
 * @retval sLonLat_t.latitude Latitude value with 7 decimal digits
 * @retval sLonLat_t.latDirection Direction of latitude
 */
  sLonLat_t getLat(void);

/**
 * @fn getLon
 * @brief Get longitude 
 * @return sLonLat_t Type, represents the returned longitude
 * @retval sLonLat_t.lonDDD  Longitude degree(0-90)
 * @retval sLonLat_t.lonMM   Longitude  The first and second digits behind the decimal point
 * @retval sLonLat_t.lonMMMMM Longitude The third and seventh digits behind the decimal point
 * @retval sLonLat_t.lonitude Longitude value with 7 decimal digits
 * @retval sLonLat_t.lonDirection Direction of longitude 
 */
  sLonLat_t getLon(void);

/**
 * @fn getNumSatUsed
 * @brief Get the number of the used satellite used
 * @return uint8_t type, represents the number of the used satellite
 */
  uint8_t getNumSatUsed(void);

/**
 * @fn getAlt
 * @brief Altitude information
 * @return double type, represents altitude 
 */
  double getAlt(void);

/**
 * @fn getSep
 * @brief At the height of geoid
 * @return double 
 */
  double getSep(void);

/**
 * @fn getHdop
 * @brief Indicates the horizontal accuracy of positioning
 * @return double
 */
  double getHdop(void);

/**
 * @fn getQuality
 * @brief message Quality
 * @return uint8_t 
 */
  uint8_t getQuality(void);

/**
 * @fn getSiteID
 * @brief The site id of differential gps data, commonly used for differential gps positioning
 * @return uint16_t
 */
  uint16_t getSiteID(void);

/**
 * @fn getDifTime
 * @brief The number of seconds in which a differential signal was last received
 * @return double 
 */
  double getDifTime(void);

/**
 * @fn setModule
 * @brief Set the Module
 * @param mode 4G or lora
 */
  void setModule(eModuleMode_t mode);

/**
 * @fn getModule
 * @brief Get the Module run mode
 * @return eModuleMode_t 
 */
  eModuleMode_t getModule(void);

  /**
   * @fn transmitAT
   * @brief Interface for transparent transmission of gnss commands
   * @return char * return commands
   */
  char * transmitAT(const char* cmd);

/**
 * @fn getGnssMessage
 * @brief Get different types of gps data
 * @param mode eGnssData_t type
 * @return char* 
 */
  char * getGnssMessage(eGnssData_t mode);

/**
 * @fn getAllGnss
 * @brief Get GNSS data, call back and receive
 * @return null
 */
  void getAllGnss(void);

/**
 * @fn setModuleBaud
 * @brief Set the Module Baud rate
 * @param baud eModuleBaud_t
 */
  void setModuleBaud(eModuleBaud_t baud);

/**
 * @fn setLoraBaud
 * @brief Set the recevie Lora Baud rate
 * @param baud eModuleBaud_t
 */
  void setLoraBaud(eModuleBaud_t baud);

/**
 * @fn getModuleBaud
 * @brief Get the Module Baud rate
 * @return uint32_t Baud rate of serial communication
 */
  uint32_t getModuleBaud(void);

/**
 * @fn getLoraBaud
 * @brief Get the Lora Baud rate
 * @return uint32_t Baud rate of serial communication
 */
  uint32_t getLoraBaud(void);

/**
 * @fn setCallback
 * @brief Set callback function type
 * @param  call function name 
 * @return null
 */
  void setCallback(void (*call)(char *, uint8_t));

6.1.4 使用I2C读取数据NMEA数据

移动站接线图

  • 将产品取出,按照上图方式移动站与Arduino按照上方的连线图相连
  • 将移动站上的选择开关,拨到I2C一侧。
  • 下载并安装RTK库如何安装库?
  • 打开Arduino IDE,将下面的代码上传到Arduino UNO。
  • 将基站和移动站都置于室外空旷地带,基站上电后保持天线位置不移动
  • 打开Arduino IDE的串口监控视器,把波特率调至115200,观察串口打印结果。
 /*!
  * @file  getAllGNSS.ino
  * @brief read all gnss data
  * @copyright Copyright (c) 2010 DFRobot Co.Ltd (http://www.dfrobot.com)
  * @license The MIT License (MIT)
  * @author ZhixinLiu(zhixin.liu@dfrobot.com)
  * @version V0.5.0
  * @date 2024-04-23
  * @url https://github.com/DFRobot/DFRobot_RTK_LoRa
  */

#include "DFRobot_RTK_LoRa.h"

void callback(char *data, uint8_t len)
{
  for(uint8_t i = 0; i < len; i++){
    Serial.print((char)data[i]);
  }
}

#define I2C_COMMUNICATION  //use I2C for communication, but use the serial port for communication if the line of codes were masked

#ifdef  I2C_COMMUNICATION
  DFRobot_RTK_LoRa_I2C rtk(&Wire ,DEVICE_ADDR);
#else
/* -----------------------------------------------------------------------------------------------------
 * |  Sensor  | Connect line | Leonardo/Mega2560/M0 |    UNO    | ESP8266 | ESP32 |  microbit  |   m0  |
 * |   VCC    |=============>|        VCC           |    VCC    |   VCC   |  VCC  |     X      |  vcc  |
 * |   GND    |=============>|        GND           |    GND    |   GND   |  GND  |     X      |  gnd  |
 * |   RX     |=============>|     Serial1 TX1      |     5     |   5/D6  |  D2   |     X      |  tx1  |
 * |   TX     |=============>|     Serial1 RX1      |     4     |   4/D7  |  D3   |     X      |  rx1  |
 * ----------------------------------------------------------------------------------------------------*/
/* Baud rate cannot be changed  */
  #if defined(ARDUINO_AVR_UNO) || defined(ESP8266)
    SoftwareSerial mySerial(4, 5);
    DFRobot_RTK_LoRa_UART rtk(&mySerial, 57600);
  #elif defined(ESP32)
    DFRobot_RTK_LoRa_UART rtk(&Serial1, 115200 ,/*rx*/D2 ,/*tx*/D3);
  #else
    DFRobot_RTK_LoRa_UART rtk(&Serial1, 115200);
  #endif
#endif

void setup()
{
  Serial.begin(115200);
  while(!rtk.begin()){
    Serial.println("NO Deivces !");
    delay(1000);
  }
  Serial.println("Device connected !");

  rtk.setModule(eMoudleLora);
  while(rtk.getModule() != eMoudleLora){
    Serial.println("Module type is not lora!  please wait!");
    delay(1000);
  }
  rtk.setCallback(callback);
}

void loop()
{
  rtk.getAllGnss();
}

更多数据分析 参考NMEA 0183数据解析 2.2. Standard Messages部分

6.1.5 使用UART读取解析后的数据

6.1.5.1 修改波特率

注:如使用UNO,需要使用库文件里面的configparam例程,需先调到I2C模式配置移动站模块波特率修改为57600,使用如MEGA2560、ESP32等UART接口无需修改波特率

移动站接线图

  • 将模块与Arduino按照上方的连线图相连

  • 将传感器上的选择开关,拨到I2C一侧。

  • 下载并安装库文件

  • 打开Arduino IDE,将下面的代码上传到Arduino UNO。

  • 打开Arduino IDE的串口监控视器,把波特率调至57600,观察串口打印结果。

  • 注:配置模式只支持I2C模式,运行该示例需拨到I2C

参数配置样例代码

  /*!
  * @file  configParam.ino
  * @brief config moudle param
  * @copyright Copyright (c) 2010 DFRobot Co.Ltd (http://www.dfrobot.com)
  * @license The MIT License (MIT)
  * @author ZhixinLiu(zhixin.liu@dfrobot.com)
  * @version V0.5.0
  * @date 2024-04-24
  * @url https://github.com/DFRobot/DFRobot_RTK_LoRa
  */

#include "DFRobot_RTK_LoRa.h"

// must use iic config parameter
DFRobot_RTK_LoRa_I2C rtk(&Wire ,DEVICE_ADDR);
void setup()
{
  Serial.begin(115200);
  while(!rtk.begin()){
    Serial.println("NO Deivces !");
    delay(1000);
  }
  Serial.println("Device connected !");

  /**
   * | Support Baud | UNO/ESP8266 | Leonardo/Mega2560 | ESP32 |  M0 |
   * | eBaud9600    |      √      |         √         |   √   |  √  |
   * | eBaud14400   |      √      |         √         |   √   |  √  |
   * | eBaud19200   |      √      |         √         |   √   |  √  |
   * | eBaud38400   |      √      |         √         |   √   |  √  |
   * | eBaud56000   |      √      |         √         |   √   |  √  |
   * | eBaud57600   |      √      |         √         |   √   |  √  |
   * | eBaud115200  |             |         √         |   √   |  √  |
   * | eBaud256000  |             |                   |   √   |  √  |
   * | eBaud512000  |             |                   |   √   |  √  |
   * | eBaud921600  |             |                   |   √   |  √  |
   */
  rtk.setModuleBaud(eBaud115200);

  Serial.print("module mode = ");
  Serial.println(rtk.getModule());

  Serial.print("moudle buad = ");
  Serial.println(rtk.getModuleBaud());
}

void loop()
{
  // Reserved interface, direct communication with gnss firmware, use with the original factory data manual
  Serial.println(rtk.transmitAT("$PQTMVERNO*58\r\n"));
  delay(2000);
}

打开串口监视器,按下复位按钮查看当前通信波特率

6.1.5.2 UART模式获取经纬度和定位状态

移动站接线图

UART模式样例代码

  • 将产品取出,按照上图方式移动站与Arduino按照上方的连线图相连
  • 将移动站上的选择开关,拨到UART一侧。
  • 下载并安装RTK库如何安装库?
  • 打开Arduino IDE,将下面的代码上传到Arduino UNO
  • 将基站和移动站都置于室外空旷地带,基站上电后保持天线位置不移动
  • 打开Arduino IDE的串口监控视器,把波特率调至115200,观察串口打印结果
   /*!
  * @file  getAllGNSS.ino
  * @brief read all gnss data
  * @copyright Copyright (c) 2010 DFRobot Co.Ltd (http://www.dfrobot.com)
  * @license The MIT License (MIT)
  * @author ZhixinLiu(zhixin.liu@dfrobot.com)
  * @version V0.5.0
  * @date 2024-04-23
  * @url https://github.com/DFRobot/DFRobot_RTK_LoRa
  */

#include "DFRobot_RTK_LoRa.h"

void callback(char *data, uint8_t len)
{
  for(uint8_t i = 0; i < len; i++){
    Serial.print((char)data[i]);
  }
}

// #define I2C_COMMUNICATION  //use I2C for communication, but use the serial port for communication if the line of codes were masked

#ifdef  I2C_COMMUNICATION
  DFRobot_RTK_LoRa_I2C rtk(&Wire ,DEVICE_ADDR);
#else
/* -----------------------------------------------------------------------------------------------------
 * |  Sensor  | Connect line | Leonardo/Mega2560/M0 |    UNO    | ESP8266 | ESP32 |  microbit  |   m0  |
 * |   VCC    |=============>|        VCC           |    VCC    |   VCC   |  VCC  |     X      |  vcc  |
 * |   GND    |=============>|        GND           |    GND    |   GND   |  GND  |     X      |  gnd  |
 * |   RX     |=============>|     Serial1 TX1      |     5     |   5/D6  |  D2   |     X      |  tx1  |
 * |   TX     |=============>|     Serial1 RX1      |     4     |   4/D7  |  D3   |     X      |  rx1  |
 * ----------------------------------------------------------------------------------------------------*/
/* Baud rate cannot be changed  */
  #if defined(ARDUINO_AVR_UNO) || defined(ESP8266)
    SoftwareSerial mySerial(4, 5);
    DFRobot_RTK_LoRa_UART rtk(&mySerial, 57600);
  #elif defined(ESP32)
    DFRobot_RTK_LoRa_UART rtk(&Serial1, 115200 ,/*rx*/D2 ,/*tx*/D3);
  #else
    DFRobot_RTK_LoRa_UART rtk(&Serial1, 115200);
  #endif
#endif

void setup()
{
  Serial.begin(115200);
  while(!rtk.begin()){
    Serial.println("NO Deivces !");
    delay(1000);
  }
  Serial.println("Device connected !");

  rtk.setModule(eMoudleLora);
  while(rtk.getModule() != eMoudleLora){
    Serial.println("Module type is not lora!  please wait!");
    delay(1000);
  }
  rtk.setCallback(callback);
}

void loop()
{
  rtk.getAllGnss();
}

结果和解析

运行结果

数据 含义 备注
N 北纬 纬度半球
E 东经 经度半球
lat degree 纬度
lon degree 经度
star 移动站搜索到的卫星数量 包含GNSS,GPS,GLONASS,Galileo,BDS
alt high 海拔高度 GNSS天线相当于海平面
sep 大地水准面与WGS84椭球面的高度差 (米) 正值:大地水准面高于椭球面;负值:大地水准面低于椭球面
hdop 水平精度因子 值越小精度越高
message mode 定位状态 1=GPS定位;2=差分定位;4=RTK固定解;5=RTK浮点解
siteID 差分参考站ID 仅RTK固定解或浮点解有效
diftime 数据差分龄期 仅RTK固定解或浮点解有效
$GNGGA NMEA数据 请参考 NMEA 0183数据解析部分
$GNRMC NMEA数据 请参考 NMEA 0183数据解析部分
$GNGLL NMEA数据 请参考 NMEA 0183数据解析部分
$GNVTG NMEA数据 请参考 NMEA 0183数据解析部分

6.2 树莓派4B使用教程

6.2.1 硬件准备

6.2.2 软件准备

6.2.3 I2C使用教程

移动站接线图

I2C接线图

使用前,请先确认I2C速率为400k,配置如下

配置I2C通信速率

**下载库文件并运行,默认为I2C模式

将硬件拨码开关拨到I2C模式,注意:波动拨码开关时设备时上电状态,请拨码后断电重启设备以生效。

	##新建文件获取库文件
	cd ~
	cd Desktop 
	mkdir df                                                         ##创建文件夹
	cd df															##切换到文件夹
	git clone https://github.com/DFRobot/DFRobot_RTK_LoRa            ##获取库文件
	cd DFRobot_RTK_LoRa/python/raspberrypi/examples				  ##切换到例程文件
	sudo python3 get_gnss.py

6.2.4 UART教程

移动站接线图

UART接线图

  • 修改为UART模式
	##新建文件获取库文件
	cd ~
	cd Desktop 
	mkdir df                                                         ##创建文件夹
	cd df															##切换到文件夹
	git clone https://github.com/DFRobot/DFRobot_RTK_LoRa            ##获取库文件
	cd DFRobot_RTK_LoRa/python/raspberrypi/examples				  ##切换到例程文件
	sudo vi get_gnss.py       ##选择要运行的程序修改为UART模式

切换为UART模式

将硬件拨码开关拨到UART模式,注意:波动拨码开关时设备时上电状态,请拨码后断电重启设备以生效。

sudo python3 get_gnss.py

相关资料

基站设计原理图.pdf

移动站设计原理图.pdf

模块规格书.pdf

Quectel_L89_R2.0&LC29H&LC79H_AGNSS_Application_Note_V1.0.pdf

Quectel_LC29H_GNSS_Specification_V1.1.pdf

更多信息参考资料

DFshopping_car1.png DFRobot商城购买链接