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

相关文章

Python进阶之Excel基本操作介绍

《Python进阶之Excel基本操作介绍》在现实中,很多工作都需要与数据打交道,Excel作为常用的数据处理工具,一直备受人们的青睐,本文主要为大家介绍了一些Python中Excel的基本操作,希望... 目录概述写入使用 xlwt使用 XlsxWriter读取修改概述在现实中,很多工作都需要与数据打交

基于Python开发电脑定时关机工具

《基于Python开发电脑定时关机工具》这篇文章主要为大家详细介绍了如何基于Python开发一个电脑定时关机工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 简介2. 运行效果3. 相关源码1. 简介这个程序就像一个“忠实的管家”,帮你按时关掉电脑,而且全程不需要你多做

java脚本使用不同版本jdk的说明介绍

《java脚本使用不同版本jdk的说明介绍》本文介绍了在Java中执行JavaScript脚本的几种方式,包括使用ScriptEngine、Nashorn和GraalVM,ScriptEngine适用... 目录Java脚本使用不同版本jdk的说明1.使用ScriptEngine执行javascript2.

Java中的Opencv简介与开发环境部署方法

《Java中的Opencv简介与开发环境部署方法》OpenCV是一个开源的计算机视觉和图像处理库,提供了丰富的图像处理算法和工具,它支持多种图像处理和计算机视觉算法,可以用于物体识别与跟踪、图像分割与... 目录1.Opencv简介Opencv的应用2.Java使用OpenCV进行图像操作opencv安装j

Python实现NLP的完整流程介绍

《Python实现NLP的完整流程介绍》这篇文章主要为大家详细介绍了Python实现NLP的完整流程,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 编程安装和导入必要的库2. 文本数据准备3. 文本预处理3.1 小写化3.2 分词(Tokenizatio

多模块的springboot项目发布指定模块的脚本方式

《多模块的springboot项目发布指定模块的脚本方式》该文章主要介绍了如何在多模块的SpringBoot项目中发布指定模块的脚本,作者原先的脚本会清理并编译所有模块,导致发布时间过长,通过简化脚本... 目录多模块的springboot项目发布指定模块的脚本1、不计成本地全部发布2、指定模块发布总结多模

Python中构建终端应用界面利器Blessed模块的使用

《Python中构建终端应用界面利器Blessed模块的使用》Blessed库作为一个轻量级且功能强大的解决方案,开始在开发者中赢得口碑,今天,我们就一起来探索一下它是如何让终端UI开发变得轻松而高... 目录一、安装与配置:简单、快速、无障碍二、基本功能:从彩色文本到动态交互1. 显示基本内容2. 创建链

基于Qt开发一个简单的OFD阅读器

《基于Qt开发一个简单的OFD阅读器》这篇文章主要为大家详细介绍了如何使用Qt框架开发一个功能强大且性能优异的OFD阅读器,文中的示例代码讲解详细,有需要的小伙伴可以参考一下... 目录摘要引言一、OFD文件格式解析二、文档结构解析三、页面渲染四、用户交互五、性能优化六、示例代码七、未来发展方向八、结论摘要

Node.js 中 http 模块的深度剖析与实战应用小结

《Node.js中http模块的深度剖析与实战应用小结》本文详细介绍了Node.js中的http模块,从创建HTTP服务器、处理请求与响应,到获取请求参数,每个环节都通过代码示例进行解析,旨在帮... 目录Node.js 中 http 模块的深度剖析与实战应用一、引言二、创建 HTTP 服务器:基石搭建(一

在 VSCode 中配置 C++ 开发环境的详细教程

《在VSCode中配置C++开发环境的详细教程》本文详细介绍了如何在VisualStudioCode(VSCode)中配置C++开发环境,包括安装必要的工具、配置编译器、设置调试环境等步骤,通... 目录如何在 VSCode 中配置 C++ 开发环境:详细教程1. 什么是 VSCode?2. 安装 VSCo