GPS定位及通信协议解析

2023-05-16

1.简介

上图为某公司的GPS定位模块,自己在使用其进行GPS定位过程中学习到的知识分享给大家。

主要参数如下

◆半双工 UART(3.3V_TTL 电平)/RS232/IIC/CAN 接口输出,更快速的应用;

◆采用 KDS 0.5PPM 高精度 TCXO;

◆丰富的数据输出速率:115200bps(默认) [可选: 9600/38400];

◆输出语句:NMEA 0183 V3.0/UBX 协议;

◆支持可调的数据刷新率:1Hz-10Hz;

◆自主研发设计天线振子,保证相位中心与几何中心重合,将天线对测量误差的影响 降低到最小; ◆支持选配 A-GPS 服务、地磁传感器、压力传感器;

◆GPS、BD、GLONASS 混合引擎可选;

◆采用无铅工艺制造,符合 RoHS 标准。

它支持两种协议:

NMEA 0183 通用协议UBX通信协议

 

2. NMEA 0183 协议

NMEA 0183 是美国国家海洋电子协会(National Marine Electronics Association)为海用电子设备制定的标准格式。目前业已成了 GPS 导航设备统一的 RTCM(Radio Technical Commission for Maritime services)标准协议。NMEA0183 协议采用 ASCII 码来传递 GPS 定位信息,我们称之为帧。帧格式形如:

$aaccc,ddd,ddd,„,ddd*hh(CR)(LF)

1. “$”:帧命令起始位

2. “aaccc”:地址域,前两位为识别符(aa),后三位为语句名(ccc)

3. “ddd,ddd”:数据内容

4. “*”:校验和前缀(也可以作为语句数据结束的标志)

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

6. “(CR)(LF)”:帧结束,回车和换行符

主要命令:

序号 命令 说明 最大帧长(Byte)

1 $GPRMC 推荐定位信息 70

2 $GPGGA GPS 定位信息 72

3 $GPVTG 地面速度信息 34

4 $RHXZ 地磁信息 24

5 $GPGSA 当前卫星信息 65

6 $GPGSV 可见卫星数 210

7 $GPGLL 大地坐标信息

指令解析:

1.$GPRMC(推荐定位信息,Recommended Minimum Specific GPS/Transit Data) $GPRMC 语句的基本格式如下: $GPRMC,(1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12)*hh(CR)(LF)

(1)UTC 时间,hhmmss(时分秒)

(2)定位状态,A=有效定位,V=无效定位

(3)纬度 ddmm.mmmmm 度分)

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

(5)经度 dddmm.mmmmm 度分)

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

(7)地面速率(000.0~999.9 节)

(8)地面航向(000.0~359.9 度,以真北方为参考基准)

(9)UTC 日期,ddmmyy(日月年)

(10)磁偏角(000.0~180.0 度,前导位数不足则补 0)

(11)磁偏角方向,E(东)或 W(西) (12)模式指示(A=自主定位,D=差分,R=RTK,E=估算,N=数据无效) 举例如下: $GPRMC,084103.00,A,2233.395441,N,11356.556656,E,0.035,,220618,,,A*7A

 

2.$GPGGA(GPS 定位信息,Global Positioning System Fix Data) $GPGGA 语句的基本格式如下(其中 M 指单位 M,下同): $GPGGA,(1),(2),(3),(4),(5),(6),(7),(8),(9),M,(10),M,(11),(12)*hh(CR)( LF)

(1)UTC 时间,格式为 hhmmss.ss;

(2)纬度,格式为 ddmm.mmmmmm 度分格式);

(3)纬度半球,N 或 S(北纬或南纬);

(4)经度,格式为 dddmm.mmmmmm 度分格式);

(5)经度半球,E 或 W(东经或西经);

(6)GPS 状态,0=未定位,1=非差分定位,2=差分定位;

(7)正在使用的用于定位的卫星数量(00~12)

(8)HDOP 水平精确度因子(0.5~99.9)

(9)海拔高度(-9999.9 到 9999.9 米)

(10)大地水准面高度(-9999.9 到 9999.9 米)

(11)差分时间(从最近一次接收到差分信号开始的秒数,非差分定位,此项为 空)

(12)差分参考基站标号(0000 到 1023,首位 0 也将传送,非差分定位,此项为 空) 举例如下: $GPGGA,070343.90,2236.360900,N,11352.021690,E,1,04,68.82,-72.83,M,- 1.00,M,,*68

3.$GPVTG(地面速度信息,Track Made Good and Ground Speed) $GPVTG 语句的基本格式如下: $GPVTG,(1),T,(2),M,(3),N,(4),K,(5)*hh(CR)(LF)

(1)以真北为参考基准的地面航向(000~359 度,前面的 0 也将被传输)

(2)以磁北为参考基准的地面航向(000~359 度,前面的 0 也将被传输)

(3)地面速率(000.0~999.9 节,前面的 0 也将被传输)

(4)地面速率(0000.0~1851.8 公里/小时,前面的 0 也将被传输)

(5)模式指示(A=自主定位,D=差分,E=估算,N=数据无效) 举例如下: $GPVTG,,T,,M,0.106,N,0.196,K,A*2A

 

4.$RHXZ(地磁传感器信息) $RHXZ 语句的基本格式如下: $RHXZ,(1),(2),(3) *hh(CR)(LF)

(1)地磁传感器 X 轴的 16 进制值(高位在前,如 0057 表示 0x0057,范围 0000~FFFF,前面的 0 也将被传输)

(2)地磁传感器 Y 轴的 16 进制值(高位在前,如 FE6E 表示 0xFE6E,范围 0000~FFFF,前面的 0 也将被传输)

(3)地磁传感器 Z 轴的 16 进制值(高位在前,如 0210 表示 0x0210,范围 0000~FFFF,前面的 0 也将被传输) 举例如下: $RHXZ,0057,FE6E,0210*45

 

5.$GPGSA(当前卫星信息) $GPGSA 语句的基本格式如下: $GPGSA,(1),(2),(3),(3),(3),(3),(3),(3),(3),(3),(3),(3),(3),(3),(4),(5 ),(6)*hh(CR)(LF)

(1)模式,M = 手动,A = 自动。

(2)定位类型,1=未定位,2=2D 定位,3=3D 定位。

(3)正在用于定位的卫星号(01~32)

(4)PDOP 综合位置精度因子(0.5-99.9)

(5)HDOP 水平精度因子 1(0.5-99.9)

(6)VDOP 垂直精度因子(0.5-99.9) 举例如下: $GPGSA,A,3,26,02,05,29,15,21,,,,,,,2.45,1.49,1.94*0E

 

6.$GPGSV(可见卫星数,GPS Satellites in View) $GPGSV 语句的基本格式如下: $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,没有跟踪到卫星时为空)。

注:每条 GSV 语句最多包括四颗卫星的信息,其他卫星的信息将在下一条 $GPGSV 语句中输出。

举例如下: $GPGSV,3,1,12,02,39,117,25,04,02,127,,05,40,036,24,08,10,052,*7E $GPGSV,3,2,12,09,35,133,,10,01,073,,15,72,240,22,18,05,274,*7B $GPGSV,3,3,12,21,10,316,31,24,16,176,,26,65,035,42,29,46,277,18*7A

 

7.$GPGLL(定位地理信息,Geographic Position) $GPGLL 语句的基本格式如下: $GPGLL,(1),(2),(3),(4),(5),(6),(7)*hh(CR)(LF)

(1)纬度 ddmm.mmmmm(度分)

(2)纬度半球 N(北半球)或 S(南半球)

(3)经度 dddmm.mmmmm(度分)

(4)经度半球 E(东经)或 W(西经)

(5)UTC 时间:hhmmss(时分秒

(6)定位状态,A=有效定位,V=无效定位

(7)模式指示(A=自主定位,D=差分,E=估算,N=数据无效)

举例如下: $GPGLL,2308.28715,N,11322.09875,E,023543.00,A,A*6A

 

3. NMEA0183 协议校验参考程序

unsigned char Calc_GPS_Sum( const char* Buffer )
{
unsigned char i, j, k, sum;
sum = 0;
for ( i = 1; i < 255; i++ ) //i 从 1 开始是闪过$开始符
{
if ( ( Buffer[i] != '*' ) && ( Buffer[i] != 0x00 ) ) //判断结束符
{
sum ^= Buffer[i];//GPS 校验和算法为 XOR
}
else
{
break;
}
}
j = Buffer[i + 1];//取结束符后两位字符
k = Buffer[i + 2];
if ( isalpha( j ) ) //判断字符是否为英文字母,为英文字母时返回非零值,否则返回零
{
if ( isupper( j ) ) //判断字符为大写英文字母时,返回非零值,否则返回零
{
j -= 0x37;//强制转换为 16 进制
}
else
{
j -= 0x57;//强制转换为 16 进制
}
}
else
{
if ( ( j >= 0x30 ) && ( j <= 0x39 ) )
{
j -= 0x30;//强制转换为 16 进制
}
}
if ( isalpha( k ) ) //判断字符是否为英文字母,为英文字母时返回非零值,否则返回零
{
if ( isupper( k ) ) //判断字符为大写英文字母时,返回非零值,否则返回零
{
k -= 0x37;//强制转换为 16 进制
}
else
{
k -= 0x57;//强制转换为 16 进制
}
}
else
{
if ( ( k >= 0x30 ) && ( k <= 0x39 ) )
{
k -= 0x30;//强制转换为 16 进制
} }
j = ( j << 4 ) + k; //强制合并为 16 进制
// gps_sum = j;
if ( sum == j )
{
return Valid; //校验和正常
}
else
{
return Invalid; //校验和错误
} }

 

4.GPS模块测试软件

gps模块可以使用u-center测试软件来测试,可以支持串口和网口两种方式。

也可以使用SSCOM串口来采集GPS数据保存到文件使用

5.相关软件下载

数字地球软件下载地址:https://download.csdn.net/download/xipengbozai/19774250

GPS测试软件下载地址:https://download.csdn.net/download/xipengbozai/19774233

GPS数据转换工具:https://download.csdn.net/download/xipengbozai/19774213

 

附图(数字地球截软件截图)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

GPS定位及通信协议解析 的相关文章

随机推荐

  • 项目1在线交流平台-7.构建安全高效的企业服务-3. Security整合Kafka,ES,Thymeleaf实例-对帖子置顶、加精、删除

    文章目录 功能需求一 置顶 加精 删除帖子功能的实现1 dao层处理数据接口定义sal语句定义 2 service层业务处理3 Controller层处理按钮事件异步请求异步请求及kafka发送消息删除帖子 消费消息 4 模板页面和js文件
  • JVM虚拟机学习笔记之-5. 字节码执行引擎

    文章目录 1 字节码执行引擎工作概览2 栈帧2 1 栈帧概述和概念结构2 2 局部变量表2 2 1 局部变量表分配规则2 2 2 局部变量表回收机制 2 3 操作数栈2 4 动态连接2 5 方法返回地址2 6 方法调用 3 分派3 1 静态
  • leetcode刷题记录总结-7.递归回溯算法(进行中)

    文章目录 零 回溯算法理论总览什么是回溯法回溯法的效率回溯法解决的问题如何理解回溯法回溯法模板 一 组合问题 77 组合 https leetcode cn problems combinations 题解递归实现组合型枚举 xff1a 每
  • Linux服务器开发-1. Linux系统编程复习

    文章目录 1 GCC1 1 gcc概念1 2 编程语言的发展1 3 gcc工作流程1 4 常见指令选项预处理 xff1a 指令 E xff1a 编译 xff1a 指令 S汇编 xff1a 指令 c链接 xff1a 指令 o指定宏 xff1a
  • 8皇后问题

    span class hljs keyword bool span check span class hljs stl container span class hljs built in vector span lt span class
  • Linux服务器开发-2. Linux多进程开发

    文章目录 1 进程概述1 1 程序概览1 2 进程概念1 3 单道 多道程序设计1 4 时间片1 5 并行与并发1 6 进程控制块 xff08 PCB xff09 2 进程的状态转换2 1 进程的状态2 2 进程相关命令查看进程实时显示进程
  • CMakeLists.txt 构建 Qt工程

    源码路径下包括 xff1a main cpp test cpp test h test ui test qrc cmake minimum required VERSION 3 1 0 project test SET CMAKE INCL
  • 【技术】RTK定位是什么?危化安全生产必看

    RTK定位技术是建立在流动站与基准站误差非常类似的基础上的 xff0c 它利用GPS载波相位观测值进行实时动态定位 RTK定位广受危化行业欢迎 xff0c 成为危化安全生产的热门技术选项 伴随着经济的高速发展 xff0c 信息技术取得了进一
  • GPS/RTK高精度定位系统有什么优势?

    GPS RTK高精度定位系统能提供厘米级 毫米级高精度位置服务 xff0c 逐渐成为智能社会高精度定位的趋势和理想选择 GPS RTK高精度定位系统的出现是信息化时代发展的产物 从移动互联到物联网 xff0c 位置是一个基础的不可或缺的信息
  • 【分享】高精度RTK定位解决方案

    高精度RTK定位系统采用高精度定位标签 xff0c 通过计算机技术 地理信息技术 移动定位技术 通信技术 网络技术 xff0c 为生产现场作业人员配发定位终端 xff0c 实时追踪其位置信息进行相关管控 xff0c 为其活动提供安全技术保障
  • 【分享】5G+北斗RTK高精度人员定位解决方案

    5G 43 北斗RTK高精度定位系统旨在通过5G网络实时提供亚米级 厘米级 毫米级高精度定位服务 xff0c 构建全天候 全天时 全地理的精准时空服务体系 伴随着信息技术日新月异的发展 xff0c 各类 智慧 顺势而出 xff0c 智慧城市
  • 5G+北斗RTK定位:高精度定位技术发展更进一步

    5G 43 北斗RTK定位采用5G定位与北斗RTK定位技术 xff0c 在信号 信息 设施 应用等层面深度融合 xff0c 5G自身可实现亚米级的定位能力与北斗形成信号覆盖互补 xff0c 实现从室内到室外无缝隙衔接与定位 5G通信技术的到
  • 室外定位:高精度北斗RTK定位技术

    北斗RTK定位技术 xff0c 也称北斗差分定位技术 xff0c 利用我国自主研发的北斗卫星定位系统实现精确定位功能 定位精度可根据需要 xff0c 通过选择不同精度的人员定位终端来实现 在科技强国的战略驱动下 xff0c 北斗RTK定位技
  • 【高精度定位】RTK定位与RTD定位知识科普

    高精度定位一般指亚米级别或厘米级别的定位 xff0c 常见的室内有蓝牙AoA和UWB两种技术 xff0c 室外有北斗地基增强技术 xff0c 这些技术都是采用算法进行定位 工业4 0时代 xff0c 在资源和环境约束不断强化的背景下 xff
  • curl http或https上传下载

    curl的使用 注意如果是https请求需要带上ssl的库和curl库如下图 上传文件 回调函数 span class token keyword static span size t span class token function h
  • 层次遍历构建二叉树

    span class hljs keyword struct span TreeNode span class hljs keyword int span val span class hljs keyword struct span Tr
  • Jetson tx2 使用 jetpack 4.3刷机全过程

    1 首先准备一台安装有ubuntu 18 04 ubuntu16 04 系统的主机 xff08 host也就是笔记本 xff09 2 在nvidia官网注册一个nvidia的账号用于下载jetpack 4 3时使用 xff08 刷机过程中需
  • 2020/2/21 Linux Socket编程 高级篇——广播

    广播 xff1a 实现一对多的通信 SO BROADCAST选项 它控制了UDP套接字是否能发广播数据报 xff0c 选项类型是int xff0c 非零表示 是 只有UDP能用 xff0c TCP不能 如果是一个广播地址 xff0c 但SO
  • 大小端字节序(Big Endian和Little Endian)

    那么何为字节序 xff08 Endia xff09 呢 xff1f Big Endian是指低地址存放最高有效字节 xff08 MSB xff09 xff0c 而Little Endian则是低地址存放最低有效字节 xff08 LSB xf
  • GPS定位及通信协议解析

    1 简介 上图为某公司的GPS定位模块 xff0c 自己在使用其进行GPS定位过程中学习到的知识分享给大家 主要参数如下 半双工 UART 3 3V TTL 电平 RS232 IIC CAN 接口输出 xff0c 更快速的应用 xff1b