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 logging模块详解及其日志定时清理方式

《pythonlogging模块详解及其日志定时清理方式》:本文主要介绍pythonlogging模块详解及其日志定时清理方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录python logging模块及日志定时清理1.创建logger对象2.logging.basicCo

使用Python开发一个带EPUB转换功能的Markdown编辑器

《使用Python开发一个带EPUB转换功能的Markdown编辑器》Markdown因其简单易用和强大的格式支持,成为了写作者、开发者及内容创作者的首选格式,本文将通过Python开发一个Markd... 目录应用概览代码结构与核心组件1. 初始化与布局 (__init__)2. 工具栏 (setup_t

深入理解Apache Kafka(分布式流处理平台)

《深入理解ApacheKafka(分布式流处理平台)》ApacheKafka作为现代分布式系统中的核心中间件,为构建高吞吐量、低延迟的数据管道提供了强大支持,本文将深入探讨Kafka的核心概念、架构... 目录引言一、Apache Kafka概述1.1 什么是Kafka?1.2 Kafka的核心概念二、Ka

Spring Shell 命令行实现交互式Shell应用开发

《SpringShell命令行实现交互式Shell应用开发》本文主要介绍了SpringShell命令行实现交互式Shell应用开发,能够帮助开发者快速构建功能丰富的命令行应用程序,具有一定的参考价... 目录引言一、Spring Shell概述二、创建命令类三、命令参数处理四、命令分组与帮助系统五、自定义S

Qt spdlog日志模块的使用详解

《Qtspdlog日志模块的使用详解》在Qt应用程序开发中,良好的日志系统至关重要,本文将介绍如何使用spdlog1.5.0创建满足以下要求的日志系统,感兴趣的朋友一起看看吧... 目录版本摘要例子logmanager.cpp文件main.cpp文件版本spdlog版本:1.5.0采用1.5.0版本主要

C++ vector的常见用法超详细讲解

《C++vector的常见用法超详细讲解》:本文主要介绍C++vector的常见用法,包括C++中vector容器的定义、初始化方法、访问元素、常用函数及其时间复杂度,通过代码介绍的非常详细,... 目录1、vector的定义2、vector常用初始化方法1、使编程用花括号直接赋值2、使用圆括号赋值3、ve

Pytest多环境切换的常见方法介绍

《Pytest多环境切换的常见方法介绍》Pytest作为自动化测试的主力框架,如何实现本地、测试、预发、生产环境的灵活切换,本文总结了通过pytest框架实现自由环境切换的几种方法,大家可以根据需要进... 目录1.pytest-base-url2.hooks函数3.yml和fixture结论你是否也遇到过

在Android平台上实现消息推送功能

《在Android平台上实现消息推送功能》随着移动互联网应用的飞速发展,消息推送已成为移动应用中不可或缺的功能,在Android平台上,实现消息推送涉及到服务端的消息发送、客户端的消息接收、通知渠道(... 目录一、项目概述二、相关知识介绍2.1 消息推送的基本原理2.2 Firebase Cloud Me

Python通过模块化开发优化代码的技巧分享

《Python通过模块化开发优化代码的技巧分享》模块化开发就是把代码拆成一个个“零件”,该封装封装,该拆分拆分,下面小编就来和大家简单聊聊python如何用模块化开发进行代码优化吧... 目录什么是模块化开发如何拆分代码改进版:拆分成模块让模块更强大:使用 __init__.py你一定会遇到的问题模www.

Nginx中配置HTTP/2协议的详细指南

《Nginx中配置HTTP/2协议的详细指南》HTTP/2是HTTP协议的下一代版本,旨在提高性能、减少延迟并优化现代网络环境中的通信效率,本文将为大家介绍Nginx配置HTTP/2协议想详细步骤,需... 目录一、HTTP/2 协议概述1.HTTP/22. HTTP/2 的核心特性3. HTTP/2 的优