LoRa模块学习

什么是LoRa调制

LoRa(Long Range,远距离)是一种调制技术,与同类技术相比,提供更长的通信距离。调制是基于扩频技术,线性调制扩频(CSS)的一个变种,具有前向纠错(FEC)。

LoRa显著地提高了接受灵敏度,与其它扩频技术一样,使用了整个信道带宽广播一个信号,从而使信道噪声和由于使用低成本晶振而引起频率偏移的不敏感性更健壮。

LoRa 可以调制信号 19.5dB 低于底噪声,而大多数频移键控(FSK)在底噪声上需
要一个 8-10dB 的信号功率才可以正确调制。

LoRa调制是物理层(PHY),可为不同协议和不同网络架构所用-Mesh、Start、点对点等等。

LoRa网关

LoRa网关设计用于远距离星型架构,并运用在LoRaWAN系统中。
他们是多信道、多调制收发、可多信道同时解调、由于LoRa的特性甚至可以同一信道上同时多信号解调。

网关使用不同于终端节点的RF器件,具有更高的容量,作为一个透明桥在终端设备和中心网络服务器间中继消息。

网关通过标准IP连接到网络服务器,终端设备使用单跳的无线通信到一个或多个网关。

所有终端节点的通信一般都是双向的,但还支持如组播功能操作,软件升级,无线传输或其他大批量发布消息,这样就减少了无线通信时间。根据要求的容量和安装位置(家庭或塔),有不同的网关版本。

LoRa集中器是什么?

网关和集中器这两个术语都有在使用,但在LoRa系统中他们是等效的部件。

LoRa处理干扰怎么样

LoRa调制解调器对同信道GMSK干扰抑制可达19.5dB,换句话说,它可以接受低于干扰信号或低噪声的信号。
因为拥有这么强的抗干扰性,所以 LoRaTM 调制系统不仅可以用于频谱使用率较高的频段,也可以用于混合通讯网络,以便在网络中原有的调制方案失败时扩大覆盖范围。

LoRa数据速率

LoRa 定义了一组特定的数据速率,但终端芯片或 PHY 是可以有多种选项。SX1272 支持数据速率从 0.3到 37.5kbps,SX1276 支持 0.018 到 37.5kbps。

LoRa终端节点

LoRa终端节点是LoRa网络的部分,进行感应或控制。
他们在远程电池供电。
这些终端节点使用LoRa私有协议与LoRa网关建立通信。

自适应数据速率(ADR)

ADR是一种方法,改变实际的数据速率以确保可靠的数据包传送,最优的网络性能,容量的规模。
例如,靠近网关的节点使用较高的数据速率(缩短传输时间)和较低的输出功率。只有在链路预算非常边缘的节点才能使用最低的数据速率和最大的输出功率。

ADR方法可以适应网络基础设施的变化,支持变化的路径损耗。
为使中断设备的电池寿命和总体网络容量最大化,LoRa网络基础设施通过实现ADR对每个终端设备的数据速率和RF输出分别进行管理。

碰撞丢包

在LoRa调制技术中,同一时刻不同节点给同一集中器或主机的同一通道发送数据会造成碰撞丢包,避免此问题的方式是做分时处理然后增加多通道来缓解压力从而提高效率。

Ra-06如何进行组网?

模块通过AT指令设置其类型,申请入网成功后,变可与网关通信。
另外模块在class B模式下还可与网关同步。

Ra-06模块实现点对点通信的要求

两通信模块的频率,空中等级速率要想通,发送模块的目标节点地址须为接收模块的本地节点地址。

Ra-06与Ra-01,Ra-02最大的区别

Ra-06是带MCU的模组(同一模组上含有127X射频芯片和主控MCU芯片),此MCU内含有LoRa驱动固件,可以直接进行AT设置参数并进行数据透传;Ra-01和Ra-02是SPI硬件模块(模块时只有一片12x射频芯片),需要用户自己写LoRa驱动程序。

当两个LoRa模块不能相互通信时,故障检测的步骤是什么?

先检查SPI通信是否成功,成功的标志是读取芯片的Version值是0x12,DIO0引脚负责通知MCU接收完成,检查DIO0引脚配置是否正常。
LoRa的配置参数要一致,包括频率、扩频因子、带宽、编码率,前导码长度、跳频使能、同步自、低速率优化,以上参数有一个不同就无法通信。

LoRa网关,集中器,节点

LoRa网关:将多个节点或者集中器的LoRa数据转换为其它信号数据并且进行收发的设备。
集中器:将多个节点的数据收集,集中发送给网关和下发网关数据的设备,具有分担网关数据压力和中继的功能。
节点设备:节点设备又称为终端设备。

LoRa网关的容量?一个网关可以连接多少个节点?

容量是在一定时间内节接受数据包数量的一个结果。一个 SX1301 有 8 个通道,使用
LoRaWAN 协议每天可以接受接近 150 万包数据。因此,如果你的应用每小时发送一个包,那么一个 SX1301
网关可以处理大约 62500 个终端设备。

LoRa私有网关和LoRaWAN网关的区别

LoRa私有网关指对应客户私有服务器或者私有云开发的网关,走的自定义的加密及通信协议,只适用于对应协议及加密开发的节点模块,并且无法接入走LoRaWAN标准的物联网平台;
LoRaWAN 网关 L 联盟制定的通信标准,只要符合此标准开发的网关设备都可以接入走 LoRaWAN 标准的物联网平台,也能对接走此标准开发
的节点设备。

LoRa设备可以频繁地在FSK和LoRa调制之间改变模式

LoRa 模块低功耗模式是怎样实现的?

一种基于LoRa无线模块的低功耗无线网络的实现方法,该无线网络由发送源及多个节点组成,每一个LoRa无线模块自行维护一个计时器,节点进入休眠模式时,计时器开始计时;到达计时器预设时间后,节点被唤醒并进入CAD检测模式;节点在CAD模式下检测信号,如果检测到信号进入工作模式,执行下一步,如果没有信号则进入休眠模式;节点根据接收到的数据判断出该信号是否是发给自己的,如果是则进入正常数据接收模式,完成与发送源的数据交互;否则,节点重新设置计时器的休眠时间后,进入休眠模式。

本发明利用LoRa无线模块CAD模式下能耗低的特点,对接收到的数据进行判断分析来切换工作状态,从而实现低功耗的目的。

怎样把LoRa终端功耗降到极致?

硬件方面:

  1. 选用低功耗器件终端,MCU选用STM8L151C8T6,它属于超低功耗,不带RTC休眠为400nA,带RTC休眠为1.4uA。
  2. 终端射频芯片选用SX1278,在休眠模式下,该芯片功耗低至忽略不计。
  3. 尽可能快地让射频模块休眠,SX1278属于LoRa扩频调制技术,它的远距离优势得益于调制增益,不是靠增大发射功率(那将消耗更多电能)。
  4. 该射频芯片的电流消耗如下:休眠<0.2uA,空闲=1.6mA,接收=12mA,发射=120mA。
  5. 终端MCU通过“终端+定时器超时”方式控制SX1278,一旦射频完成发送或接收,立即进入休眠模式。
  6. 降低MCU的功耗首先尽可能少地开启外设,其次尽可能地让其休眠。
  7. 静态配置MCU引脚,即使MCU和RF都进入休眠模式,如果没有设置好MCU引脚,它们照样会“偷偷”消耗电能。

软件方面:

  1. 动态切换MCU引脚,有2类MCU引脚:MCU输出和MCU输入,它们需要动态进行配置。具体地说,在进入低功耗模式时,将其分别配置成:输入上拉和输入悬浮;在退出低功耗模式时,将配置成定义的功能状态。
  2. 在动态切换时需要考虑2点:首先,动态切换引脚是需要时间的,以STM8L151C8T6为例,动态切换5个引脚需要447us,可见它一般用于休眠这种长周期的节能模式,不适合空闲停止这种短暂节能模式。
  3. 其次,在实际开发中引脚的连接是变化的,换句话说,今天这个引脚是空闲,下次产品升级该引脚可能设计成特定功能。为减少软件维护成本,需要设计一种优秀的数据结构,它能描述 MCU 所有引脚,如果引脚功能改变,只需要修改数据定义,而不需要修改程序
  4. 一旦无事可干,MCU立即停止或休眠,在LoRa终端系统中,MCU是能源的持续消耗者,软件设计需要尽可能快地让MCU节能,有两种节能模式。
  5. 短暂等待:如等RF发送数据帧完毕,MCU执行WFI指令,一旦RF完成发送,中断将MCU唤醒继续运行;
  6. 长期等待:如等待下一次主动上报数据帧,MCU执行HALT执行,当指定时间到达时,RTC中断将MCU唤醒继续运行。
  7. 采用高效率算法,软件算法效率越高,MCU 计算时间更少,可以更快进入低功耗,也就更节能。在终端设计中有 2 个算法比较消耗时间:CRC16:无线传输易受干扰,一般通信帧需要添加 CRC16 检测正确性,我们采用查表的方法减少 CRC16 的计算时间。

在LoRA调制技术中,我们可以做定时唤醒或者前导码唤醒的方式做到低功耗。
前者利用主控MCU定时唤醒,后者采用前导码唤醒的方式来促使模组进入正常收发状态。

Preamble寄存器

x1278在接收数据期间会接收前导码,如果在设置的时间内接收不到便进入睡眠,如果接收到前导码则开始接收后面的数据。设置改寄存器确定接收前导码的查长度。在LoRaWAN的模式下一步设置到8。

中断是高电平有效。

在LoRa模式中最大数据包长度是256字节。

SX1276/77/78芯片数字IO引脚映射

SX1276/7/8的6个DIO通用IO引脚在LoRa模式下均可用。
在这里插入图片描述
DIO0最常用,主要是发送/接收/CAD完成的中断产生。

在LoRa模式中如何使用DIOx引脚?所有DIOx引脚都要连接到MCU吗?

在LoRa和FSK两种模式中检查DIO映射。可以在SX127x LoRa数据手册中找到DIO映射信息。
DIO没有像通常MCU GPIO那样的功能。有一些特殊的中断信息(或时钟输出)指示事件或芯片状态,也可以不连接DIO引脚,那么久轮询相关的寄存器知道状态结果。
当然,我们建议连接DIO尽可能多地用作外部中断功能,节省MCU的资源负载,可以很低功耗工作模式(当打包发送或接受数据包时,MCU睡眠)。

前导码长度如何设置?

前导码长度设置比较特殊,接收端配置的前导码长度必须大于等于发送端的前导码长度,接收端才能接收到数据,这就是基于前导码长度的数据包过滤,默认长度为8个字节,最小可以设置6个字节。

LoRa数据包结构

数据包包含以下三个组成部分:前导码、数据报头和数据有效负载。
在这里插入图片描述
前导码
前导码用于保持接收机与输入的数据流同步。
默认情况下,数据包含有12个符号长度的前导码。前导长度是一个可以通过编程来设置的变量,所以前导码的长度可以扩展。

例如,在接收密集型应用中,为了缩短接收机占空比,可缩短前导码的长度。然而,前导码的最小允许长度就可以满足所有通讯需求。

对于希望前导码是固定开销的情况,可以将前导码寄存器长度设置在 6 到65536 之间来改变发送前导码长度,实际发送前导码的长度范围为 6+4 至 65535+4 个符号。这样几乎就可以发送任意长的前导码序列。

接收机会定期执行前导码检测。因此,接收机的前导码长度应与发射机一致。
如果前导码长度为未知或可能会发生变化,应将接收机的前导码长度设置为最大值。

显示报头
显示报头模式是默认的操作模式。
在这种模式下,报头包含有效负载的相关信息,包括:

  • 以字节数表示的有效负载长度;
  • 前向纠错码率
  • 是否打开可选的16位负载CRC

报头按照最大纠错码(4/8)发送。另外,报头还包含自己的CRC,使接收机可以丢弃无效的报头。

隐式报头模式
在特定情况下,如果有效负载长度、编码率以及CRC为固定或已知,则比较有效的做法是通过调用隐式报头来缩短发送时间。
这种情况下,需要手动设置无线链路两端的有效负载长度、错误编码率以及CRC。

如果将扩频因子SF设定为6,则只能使用隐式报头模式。

低数据速率优化
由于扩频因子较高时,数据包的发送时间可能较长。因此可以选择在数据包发送和接受期间提高传输对频率变化的鲁棒性。
有效数据速率较低时,可通过 LowDataRateOptimize 位提高
LoRa 链路的鲁棒性。当单个符号传输时间超过 16 毫秒时,必须使用 LowDataRateOptimize
位。注意:发射机和接收机的 LowDataRateOptimize 位设置必须一致。

有效负载
数据包有效负载是一个长度不固定的字段,而实际长度和纠错编码率CR则由显示模式下的报头指定或者由隐式模式下载寄存器的设置来决定。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/10386.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

安装SQL Server详细教程_sql server安装教程

一&#xff0c;SQL Server数据库安装 1.首先&#xff0c;下载安装程序 &#xff08;1&#xff09;从网盘下载安装exe 点击此处直接下载 &#xff08;2&#xff09;从官网下载安装exe文件 在官网选择Developer进行下载 2.开始安装 双击安装程序&#xff0c;开始安装 这里直…

搭建vue3组件库(四): 样式库搭建

文章目录 1. 样式目录文件架构2. SCSS 样式变量2.1 设置颜色 SCSS 变量2.2 设置多种类型主题2.3 生成全局类型主题 SCSS 变量2.4 分组生成 SCSS 变量 1. 样式目录文件架构 packages/theme-chalk 目录结构&#xff1a; ├── packages │ ├── theme-chalk │ │ ├─…

excel表格里,可以把百分号放在数字前面吗?

在有些版本里是可以的&#xff0c;这样做&#xff1a; 选中数据&#xff0c;鼠标右键&#xff0c;点击设置单元格格式&#xff0c;切换到自定义&#xff0c;在右侧栏输入%0&#xff0c;点击确定就可以了。 这样设置的好处是&#xff0c;它仍旧是数值&#xff0c;并且数值大小没…

Veeam - 数据保护和管理解决方案_Windows平台部署备份还原VMware手册

Veeam - - 数据保护和管理解决方案 Veeam Backup & Replication Console Veeam Data Platform Veeam Backup & Replication是一款强大的虚拟机备份、恢复和复制解决方案 安全备份、干净恢复和数据弹性 — 即时交付 在混合云中随时随地管理、控制、备份和恢复您的所有数…

ARM时钟树结构(GD32)

时钟树的简易框图 初始化配置系统时钟 配置系统初始化时钟&#xff08;参考手册&#xff09; 对应hal库函数 使用72MHz的系统时钟 do -----------while&#xff08;0&#xff09;的使用方法 系统时钟 #include <stdint.h> #include "gd32f30x.h"int main(void)…

配置Docker对象与管理守护进程

前言&#xff1a;本博客仅作记录学习使用&#xff0c;部分图片出自网络&#xff0c;如有侵犯您的权益&#xff0c;请联系删除 本章节的快速目录导航&#xff1a; 一、配置Docker对象 1.1、Docker对象的标记 1.2、格式化命令和日志的输出 二、示例&#xff1a; 2.1、管理…

开源RAG框架汇总

前言 本文搜集了一些开源的基于LLM的RAG&#xff08;Retrieval-Augmented Generation&#xff09;框架&#xff0c;旨在吸纳业界最新的RAG应用方法与思路。如有错误或者意见可以提出&#xff0c;同时也欢迎大家把自己常用而这里未列出的框架贡献出来&#xff0c;感谢~ RAG应用…

【Linux】搭建私有yum仓库(类阿里云)

在搭建本地yum仓库并配置国内镜像阿里云源中了解yum源 yum &#xff1a; Yellow dog Updater&#xff0c;Modified&#xff0c;是一种基于rpm包的自动升级和软件包管理工具。yum能从指定的服务器自动下载rpm包并安装&#xff0c;自动计算出程序之间的依赖关系和软件安装的步骤&…

《Python编程从入门到实践》day25

# 昨日知识点回顾 如何创建多行外星人 碰撞结束游戏 创建game_stats.py跟踪统计信息 # 今日知识点学习 第14章 记分 14.1 添加Play按钮 14.1.1 创建Button类 import pygame.font# button.py class Button:def __init__(self, ai_game, msg):"""初始化按钮…

【Python系列】Python中列表属性提取

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

地下工程中测斜仪的关键应用

地下工程&#xff0c;如隧道、地铁和基坑等项目的建设&#xff0c;对于现代城市的发展至关重要。然而&#xff0c;这些工程的实施往往伴随着诸多风险&#xff0c;特别是与周围土体的稳定性有关的风险。为了确保工程的安全进行&#xff0c;实时监测技术变得尤为关键。其中&#…

vue3专栏项目 -- 三、使用vue-router 和 vuex(下)

一、添加columnDetail 页面 首页有专栏列表&#xff08;ColumnList组件&#xff09;&#xff0c;专栏列表中有很多专栏&#xff0c;然后点击某个专栏就进入专栏详情页&#xff08;ColumnDetail组件&#xff09;&#xff0c;专栏详情页中有很多文章&#xff0c;点击某个文章就进…

经开区创维汽车车辆交接仪式顺利举行,守护绿色出行助力低碳发展

5月10日&#xff0c;“创维新能源汽车进机关”交车仪式于徐州顺利举行&#xff0c;20辆创维EV6 II正式交付经开区政府投入使用。经开区陈琳副书记、党政办公室副主任张驰主任、经开区公车管理平台苑忠民科长、创维汽车总裁、联合创始人吴龙八先生、创维汽车营销公司总经理饶总先…

配置管理与IT资产管理:差异与协同共生

在信息技术日新月异的今天&#xff0c;高效、可靠的IT服务管理成为企业竞争力的关键一环。ITIL4 作为业界公认的IT服务管理框架&#xff0c;为我们提供了一套全面而系统的实践指南。在这一框架下&#xff0c;配置管理和IT资产管理作为两大核心实践&#xff0c;虽各有侧重&#…

线路和绕组中的波过程(三)

本篇为本科课程《高电压工程基础》的笔记。 本篇为这一单元的第三篇笔记。上一篇传送门。 冲击电晕对线路上波过程的影响 实际中的导线存在电阻&#xff0c;而且还有对地电导&#xff0c;会消耗一部分能量。但是因为雷击所涉及的传输距离很短&#xff0c;所以几乎可以忽略这…

深入解析RedisSearch:全文搜索的新维度

码到三十五 &#xff1a; 个人主页 在当今的数据时代&#xff0c;信息的检索与快速定位变得尤为关键。Redis&#xff0c;作为一个高性能的内存数据库&#xff0c;已经在缓存和消息系统中占据了重要地位。然而&#xff0c;Redis并不直接支持复杂的搜索功能。为了填补这一空白&am…

【计算机网络】计算机网络概述、计算机网络性能指标 习题1

0 1. 计算机网络可被理解为( )。 A.执行计算机数据处理的软件模块 B. 由自治的计算机互连起来的集合体 C.多个处理器通过共享内存实现的紧耦合系统 D. 用于共同完成一项任务的分布式系统 0 2.计算机网络最基本的功能是( )。 A.数据通信 B. 资源共享 C. 分布式处理 D. 信息综合…

【Python系列】字节串与字典字节串

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

ASP.NET WebApi 如何使用 OAuth2.0 认证

前言 OAuth 2.0 是一种开放标准的授权框架&#xff0c;用于授权第三方应用程序访问受保护资源的流程。 OAuth 2.0 认证是指在这个框架下进行的身份验证和授权过程。 在 OAuth 2.0 认证中&#xff0c;涉及以下主要参与方&#xff1a; 资源所有者&#xff08;Resource Owner&…

antd组件状态变换为啥要使用剪头函数

先看下代码 import React, {useState} from react; import {Switch, Typography} from antd;const {Paragraph, Text} Typography;const App: React.FC () > { const [ellipsis, setEllipsis] useState(true);return (<>//正确的<Switch checked{ellipsis}onCh…