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的secrets模块

《一文深入详解Python的secrets模块》在构建涉及用户身份认证、权限管理、加密通信等系统时,开发者最不能忽视的一个问题就是“安全性”,Python在3.6版本中引入了专门面向安全用途的secr... 目录引言一、背景与动机:为什么需要 secrets 模块?二、secrets 模块的核心功能1. 基

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

使用Python开发一个现代化屏幕取色器

《使用Python开发一个现代化屏幕取色器》在UI设计、网页开发等场景中,颜色拾取是高频需求,:本文主要介绍如何使用Python开发一个现代化屏幕取色器,有需要的小伙伴可以参考一下... 目录一、项目概述二、核心功能解析2.1 实时颜色追踪2.2 智能颜色显示三、效果展示四、实现步骤详解4.1 环境配置4.

MybatisPlus service接口功能介绍

《MybatisPlusservice接口功能介绍》:本文主要介绍MybatisPlusservice接口功能介绍,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友... 目录Service接口基本用法进阶用法总结:Lambda方法Service接口基本用法MyBATisP

Python使用smtplib库开发一个邮件自动发送工具

《Python使用smtplib库开发一个邮件自动发送工具》在现代软件开发中,自动化邮件发送是一个非常实用的功能,无论是系统通知、营销邮件、还是日常工作报告,Python的smtplib库都能帮助我们... 目录代码实现与知识点解析1. 导入必要的库2. 配置邮件服务器参数3. 创建邮件发送类4. 实现邮件

MySQL复杂SQL之多表联查/子查询详细介绍(最新整理)

《MySQL复杂SQL之多表联查/子查询详细介绍(最新整理)》掌握多表联查(INNERJOIN,LEFTJOIN,RIGHTJOIN,FULLJOIN)和子查询(标量、列、行、表子查询、相关/非相关、... 目录第一部分:多表联查 (JOIN Operations)1. 连接的类型 (JOIN Types)

Java进程CPU使用率过高排查步骤详细讲解

《Java进程CPU使用率过高排查步骤详细讲解》:本文主要介绍Java进程CPU使用率过高排查的相关资料,针对Java进程CPU使用率高的问题,我们可以遵循以下步骤进行排查和优化,文中通过代码介绍... 目录前言一、初步定位问题1.1 确认进程状态1.2 确定Java进程ID1.3 快速生成线程堆栈二、分析

java中BigDecimal里面的subtract函数介绍及实现方法

《java中BigDecimal里面的subtract函数介绍及实现方法》在Java中实现减法操作需要根据数据类型选择不同方法,主要分为数值型减法和字符串减法两种场景,本文给大家介绍java中BigD... 目录Java中BigDecimal里面的subtract函数的意思?一、数值型减法(高精度计算)1.

基于Python开发一个有趣的工作时长计算器

《基于Python开发一个有趣的工作时长计算器》随着远程办公和弹性工作制的兴起,个人及团队对于工作时长的准确统计需求日益增长,本文将使用Python和PyQt5打造一个工作时长计算器,感兴趣的小伙伴可... 目录概述功能介绍界面展示php软件使用步骤说明代码详解1.窗口初始化与布局2.工作时长计算核心逻辑3

Pytorch介绍与安装过程

《Pytorch介绍与安装过程》PyTorch因其直观的设计、卓越的灵活性以及强大的动态计算图功能,迅速在学术界和工业界获得了广泛认可,成为当前深度学习研究和开发的主流工具之一,本文给大家介绍Pyto... 目录1、Pytorch介绍1.1、核心理念1.2、核心组件与功能1.3、适用场景与优势总结1.4、优