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

相关文章

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

C# WinForms存储过程操作数据库的实例讲解

《C#WinForms存储过程操作数据库的实例讲解》:本文主要介绍C#WinForms存储过程操作数据库的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、存储过程基础二、C# 调用流程1. 数据库连接配置2. 执行存储过程(增删改)3. 查询数据三、事务处

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

Python使用date模块进行日期处理的终极指南

《Python使用date模块进行日期处理的终极指南》在处理与时间相关的数据时,Python的date模块是开发者最趁手的工具之一,本文将用通俗的语言,结合真实案例,带您掌握date模块的六大核心功能... 目录引言一、date模块的核心功能1.1 日期表示1.2 日期计算1.3 日期比较二、六大常用方法详

MySQL中慢SQL优化的不同方式介绍

《MySQL中慢SQL优化的不同方式介绍》慢SQL的优化,主要从两个方面考虑,SQL语句本身的优化,以及数据库设计的优化,下面小编就来给大家介绍一下有哪些方式可以优化慢SQL吧... 目录避免不必要的列分页优化索引优化JOIN 的优化排序优化UNION 优化慢 SQL 的优化,主要从两个方面考虑,SQL 语

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件

C++中函数模板与类模板的简单使用及区别介绍

《C++中函数模板与类模板的简单使用及区别介绍》这篇文章介绍了C++中的模板机制,包括函数模板和类模板的概念、语法和实际应用,函数模板通过类型参数实现泛型操作,而类模板允许创建可处理多种数据类型的类,... 目录一、函数模板定义语法真实示例二、类模板三、关键区别四、注意事项 ‌在C++中,模板是实现泛型编程

Python实现html转png的完美方案介绍

《Python实现html转png的完美方案介绍》这篇文章主要为大家详细介绍了如何使用Python实现html转png功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 1.增强稳定性与错误处理建议使用三层异常捕获结构:try: with sync_playwright(

Java使用多线程处理未知任务数的方案介绍

《Java使用多线程处理未知任务数的方案介绍》这篇文章主要为大家详细介绍了Java如何使用多线程实现处理未知任务数,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 知道任务个数,你可以定义好线程数规则,生成线程数去跑代码说明:1.虚拟线程池:使用 Executors.newVir