NXP i.MX8系列平台开发讲解 - 4.1.3 GNSS 篇(三) - 定位模块与协议介绍

2024-08-23 09:36

本文主要是介绍NXP i.MX8系列平台开发讲解 - 4.1.3 GNSS 篇(三) - 定位模块与协议介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

专栏文章目录传送门:返回专栏目录

Hi, 我是你们的老朋友,主要专注于嵌入式软件开发,有兴趣不要忘记点击关注【码思途远】


文章目录

目录

1. 定位模块介绍

1.1 Ublox M8N参数认识

1.2 GNSS 选型指导

2.评估软件

2.1 u-center2

2.2 Teseo-suite

2.3 其他软件

3. NMEA 协议

4. 总结


关注+星号公众号,不容错过精彩

图片

作者:HywelStar

本章节接GNSS的定位原理,本想直接写最后一章节,但发现还有内容需要补充,本章节主要对定位模块与协议介绍,为后续开发调试模块有所帮助。

相关文章:

GNSS 篇(二) - 卫星导航定位原理

GNSS篇(一) - 定位基础知识

1. 定位模块介绍

目前GNSS 定位模块使用范围广,主要包括物联网,测绘,无人机,机器人,汽车驾驶,手机平板等等行业。生产厂家从国外到国内越来越多,知名国外的SiRF, Ubolx, ST, Boadcom等等,国内SoC厂商也是最近几年疯狂崛起,以北斗为代表的和芯星通,司南卫星导航,华大北斗,中科微等厂家。

图片

1.1 Ublox M8N参数认识

这里以Ublox M8N展开介绍,虽然这个不是最新的产品,但还是具有一些学习价值,这里以它的参数进行分析。

图片

重要参数:

支持定位的模式:

是单模还是多模:比如某些只支持GPS,有的定位芯片支持 GPS, BeiDou, GaLileo 等;还有是否支持一些卫星增强系统,图中看到支持SBAS 系统,增加定位精度。另外对于多模还有一个就是频段支持,支持多个频段。

首次定位时间 TTFF(Time to First Fix)

  • 冷启动(Cold Start):设备在没有任何位置信息的情况下启动,需要重新下载星历、时钟数据等,耗时较长。一般是在一个陌生的环境下启动GNSS, 可能电池耗尽时候出现星历丢失,还有一种是关机情况下移动了1000公里以上就会出现这种冷启动,从手册看大概需要20多秒,时间上相比其他还是很长。

  • 热启动(Hot Start):设备已经有最近的位置信息和卫星数据,因此只需几秒钟即可定位。

  • 辅助启动(Aided Start):这个也叫做温热启动,使用辅助信息(如网络数据)帮助快速定位,TTFF通常介于热启动和冷启动之间。通常在距离上一次定位超过2小时会发生这种情况。

灵敏度(Sensitivity):表示设备能够接收的最弱信号强度。较高的灵敏度可以在信号较弱的环境下(如城市峡谷或室内)保持稳定的定位。

速度精度(Velocity Accuracy):指定位设备在速度测量上的准确性。对于一些应用(如车辆导航或高动态运动物体),高精度的速度测量非常重要。

操作限制(Operation Limits):包括设备的最大速度、最大高度和最大加速度等限制。例如,一些 GNSS 接收器可能在飞机上受到限制,因为它们的设计不是为高空和高速应用而优化的。图中可以看到只能适合重力加速度小于4个g, 海拔在50000m以内,速度小于500m/s的环境下。

1.2 GNSS 选型指导

对于那么多生产厂家,如何去选型,选型主要考虑因素如下:

  • 接受灵敏度:具有较高的接受灵敏度,可以确保在一些环境比较苛刻的条件下实用,比如峡谷,部分物体遮挡地方使用。

  • 多模式功能:卫星导航系统有很多种,有的SoC可能只支持某些或者在某个模式下支持几种一起使用。

  • 内置记忆:存储卫星星历数据,这个将影响定位速度。

  • 功耗:对于这种带电池设计的非常看中,GNSS模块的功耗其实也不小,选择更低功耗的SoC将助你产品更有竞争力。

  • 尺寸和封装:考虑自己设计,选用什么样的尺寸和封装。

  • 使用环境:是工业级,消费级,车规级or 其他;

  • 通信接口:考虑当前产品采用哪种接口方式进行与GNSS 通信,比较有代表的是UART, SPI, USB 这些接口。

  • 附加功能:有些GNSS 模块还添加了类似这种Cellular 模块,支持固件更新。

  • 模组还是芯片:选择模组形式还是芯片形式,芯片形式需要考虑到天线设计相关。

2.评估软件

对于GNSS 的功能和性能来说,一般厂商都会提供一套相应的评估测试工具,可以有些厂家没有自己的软件工具,但是通用功能还是一样可以用的,这里介绍两家Ublox 和 ST

2.1 u-center2

u-center2 是Ublox官方 从u-center 的升级版本,使用起来方便,直接可以通过串口连接,查看GNSS数据,可以设置相关数据信息,对GNSS 进行一个评估。

图片

 

2.2 Teseo-suite

TESEO-SUITE 是ST 开发管理GNSS解决方案的软件。在每个ST TESEO GNSS解决方案上,Teseo套件都能够读取、修改和保存配置。

支持NMEA句子记录和分析。每个端口可配置 NMEA 消息列表。

图片

2.3 其他软件

包含各种平台的软件,比较多,包括简单的Android 的GPS View等,还有很多国外著名的Trimble, Leica, NovAtel等等。

3. NMEA 协议

NMEA是National Marine Electronics Association ,即美国国家海洋电子协会的缩写,NMEA是GPS的管理者,为方便GPS的推广应用,发布了一系列GPS协议的标准格式。

存在两个版本:

NMEA 0183

是用于回声测深仪、声纳、风速计、陀螺罗盘、自动驾驶仪、GPS 接收器和许多其他类型仪器等海洋电子设备之间通信的综合电气和数据规范。它由国家海洋电子协会 (NMEA) 定义和控制。它取代了早期的 NMEA 0180 和 NMEA 0182 标准。[2]在休闲航海应用中,它正在逐渐被淘汰,取而代之的是较新的NMEA 2000标准,尽管 NMEA 0183 仍然是商业航运的标准。

NMEA 2000 

NMEA 2000简称为 NMEA2k 或 N2K,标准化为IEC 61162-3,是一种即插即用通信标准,用于连接船舶内的海洋传感器和显示单元。通信速度为每秒 250 千比特,允许任何传感器与任何显示单元或其他兼容 NMEA 2000 协议的设备通信。

目前的接收机GNSS 基本是采用NMEA 0183,包括我们的北斗也是遵循该协议,那么协议长什么样子,这里简单介绍,如果详细可以查看pdf 文档【0183.PDF (tronico.fi)】.

GPS 模块开机后将会自动发出相关数据报文【以下室内环境】:

图片

一般语法:

$aaaaa,df1,df2,....[CR][LR]
# $aaaaa 表示起始标志# , 为分隔符# df1 df2 代表特定数据# [CR][LR] 结尾​​​​​​​
# 常用语法:# 常用的 $GPGGA、$GPGSA、$GPGSV、$GPRMC、$GPVTG、$GPGLL
# 这里只介绍一个
$GPGGA,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,M,<10>,M,<11>,<12>*hh<CR><LF><1> UTC 时间,hhmmss(时分秒)格式<2> 纬度 ddmm.mmmm(度分)格式<3> 纬度半球 N 或 S<4> 经度 dddmm.mmmm(度分)格式<5> 经度半球 E 或 W<6> GPS 状态:0=未定位,1=非差分定位,2=差分定位,6=正在估算<7> 正在使用解算位置的卫星数量(00~12)<8> HDOP 水平精度因子(0.5~99.9)<9> 海拔高度(-9999.9~99999.9)<10> 地球椭球面相对大地水准面的高度<11> 差分时间(从最近一次接收到差分信号开始的秒数,如果不是差分定位将为空<12> 差分站 ID 号 0000~1023(前面的 0 也将被传输,如果不是差分定位将为空)

主要用途:NMEA 主要用于GNSS接收机与其他设备(如显示器、导航系统)之间的数据通信。

4. 总结

本章节主要介绍了定位模块的一些参数特性,一些概念,包括选型相关,还有软件评估以及在后续软件调试用到的NMEA协议,难度不是很大,后续软件上去调试,应用到嵌入式系统中,记得关注<码思途远>+分享。

往期推荐

  • GNSS 篇(二) - 卫星导航定位原理

  • GNSS篇(一) - 定位基础知识

  • 认识Type-C 与快充相关知识

  • USB 接口小科普

  • Type-C 的工作原理

这篇关于NXP i.MX8系列平台开发讲解 - 4.1.3 GNSS 篇(三) - 定位模块与协议介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1099012

相关文章

MySQL常用字符串函数示例和场景介绍

《MySQL常用字符串函数示例和场景介绍》MySQL提供了丰富的字符串函数帮助我们高效地对字符串进行处理、转换和分析,本文我将全面且深入地介绍MySQL常用的字符串函数,并结合具体示例和场景,帮你熟练... 目录一、字符串函数概述1.1 字符串函数的作用1.2 字符串函数分类二、字符串长度与统计函数2.1

PyQt5 GUI 开发的基础知识

《PyQt5GUI开发的基础知识》Qt是一个跨平台的C++图形用户界面开发框架,支持GUI和非GUI程序开发,本文介绍了使用PyQt5进行界面开发的基础知识,包括创建简单窗口、常用控件、窗口属性设... 目录简介第一个PyQt程序最常用的三个功能模块控件QPushButton(按钮)控件QLable(纯文本

RabbitMQ消费端单线程与多线程案例讲解

《RabbitMQ消费端单线程与多线程案例讲解》文章解析RabbitMQ消费端单线程与多线程处理机制,说明concurrency控制消费者数量,max-concurrency控制最大线程数,prefe... 目录 一、基础概念详细解释:举个例子:✅ 单消费者 + 单线程消费❌ 单消费者 + 多线程消费❌ 多

Linux之platform平台设备驱动详解

《Linux之platform平台设备驱动详解》Linux设备驱动模型中,Platform总线作为虚拟总线统一管理无物理总线依赖的嵌入式设备,通过platform_driver和platform_de... 目录platform驱动注册platform设备注册设备树Platform驱动和设备的关系总结在 l

基于Python开发一个图像水印批量添加工具

《基于Python开发一个图像水印批量添加工具》在当今数字化内容爆炸式增长的时代,图像版权保护已成为创作者和企业的核心需求,本方案将详细介绍一个基于PythonPIL库的工业级图像水印解决方案,有需要... 目录一、系统架构设计1.1 整体处理流程1.2 类结构设计(扩展版本)二、核心算法深入解析2.1 自

从入门到进阶讲解Python自动化Playwright实战指南

《从入门到进阶讲解Python自动化Playwright实战指南》Playwright是针对Python语言的纯自动化工具,它可以通过单个API自动执行Chromium,Firefox和WebKit... 目录Playwright 简介核心优势安装步骤观点与案例结合Playwright 核心功能从零开始学习

Python通用唯一标识符模块uuid使用案例详解

《Python通用唯一标识符模块uuid使用案例详解》Pythonuuid模块用于生成128位全局唯一标识符,支持UUID1-5版本,适用于分布式系统、数据库主键等场景,需注意隐私、碰撞概率及存储优... 目录简介核心功能1. UUID版本2. UUID属性3. 命名空间使用场景1. 生成唯一标识符2. 数

zookeeper端口说明及介绍

《zookeeper端口说明及介绍》:本文主要介绍zookeeper端口说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、zookeeper有三个端口(可以修改)aVNMqvZ二、3个端口的作用三、部署时注意总China编程结一、zookeeper有三个端口(可以

怎样通过分析GC日志来定位Java进程的内存问题

《怎样通过分析GC日志来定位Java进程的内存问题》:本文主要介绍怎样通过分析GC日志来定位Java进程的内存问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、GC 日志基础配置1. 启用详细 GC 日志2. 不同收集器的日志格式二、关键指标与分析维度1.

Java进程异常故障定位及排查过程

《Java进程异常故障定位及排查过程》:本文主要介绍Java进程异常故障定位及排查过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、故障发现与初步判断1. 监控系统告警2. 日志初步分析二、核心排查工具与步骤1. 进程状态检查2. CPU 飙升问题3. 内存