记:lora及lorawan的一些概念话

news2024/9/29 15:35:35

目录

lora常用概念缩写

扩频因子(SF)

编码率(CR)

信号带宽(BW)

lora发送参数关系

lora数据包结构

前导码

报头

低数据速率优化

如何简单直白的去理解lorawan协议

水表

电表

Rx1 和 Rx2

ABP 和 OTAA

上行去重和下行路由


lora常用概念缩写

针对特定应用,开发人员可通过调制扩频因子、带宽、纠错编码率这三个关键设计参数,对lora调制调解技术进行优化。

扩频因子(SF)

SX1278数据手册中描述:

lora扩频调制技术采用多个信息码片来代表有效负载信息的每个位。扩频信息的发送速度称为符号速率(Rs),而码片速率与标称符号速率之间的比值即为扩频因子,其表示每个信息位发送的符号数量。

例如有一个bit需要传输,数据为1。当SF为1时,传输的数据就用1来表示。当SF为6时,传输的数据就用111111来表示。

即需要传输的总数据量增大了6倍。这样扩频后传输的话,可以降低误码率(信噪比),但是在同样数据量的条件下却减少了可以传输的实际数据。

所以SF越大,传输的数据速率(比特率)越小。协议中规定了SF的范围为6~12。

扩频因子(RegModulationCfg)扩频因子(码片/符号)lora调解器信噪比(SNR)
664-5dBm
7128-7.5dBm
8256-10dBm
9512-12.5dBm
101024-15dBm
112048-17.5dBm
124096-20dBm

注意:因为不同扩频因子之间为正交关系,因此必须提前获知链路发送端和接收端的扩频因子。另外,还必须获知接收机输入端的信噪比。在负信噪比的条件下信号也能正常接收,这改善了lora接收机的灵敏度、链路预算及覆盖范围。

SF6(lora调制解调器的数据传输速率最快,因此仅在特定情况下使用)很特殊,在SX1276/77/78使用SF6时,需要进行一下操作:

在RegModulationCfg2中,将SpreadingFactor设置为6;

将报头设置为隐式模式;

在寄存器地址(0x31)的bit0~bit2中写入101;

在寄存器地址(0x37)中写入0x0c。

编码率(CR)

编码率就是有用部分数据占数据流的比例。

为进一步提高链路的鲁棒性(可理解成稳定性),lora调制解调器采用循环纠错编码进行前向错误检测与纠错。使用这样的纠错编码之后,会产生传输开销。

在存在干扰的情况下,前向纠错能有效提高链路的可靠性。因此,编码率(及抗干扰性能)可以随着信道条件的变化而变化(可以选择在报头中加入编码率以便接收端能够解析,可参考lora的数据包结构)。

编码率(RegTxCfg1)循环编码率开销比率
14/51.25
24/61.5
34/71.75
44/82

信号带宽(BW)

BW:限定允许通行该信道的信号下限频率和上限频率。比如一个信道允许的通带的为1.5kHz~15kHz,则其带宽为13.5kHz。

增加BW可以提高有效数据速率以缩短传输时间,但这是以牺牲部分接收灵敏度为代价。多数国家对允许占用带宽都设有一定的约束。

FSK调制解调器描述的带宽是指单边带带宽LoRa调制解调器描述的带宽是指双边带带宽(全信道带宽)

注意:较低频段(169MHz)不支持250kHz和500kHz的带宽。

带宽(kHz)扩频因子编码率标称比特率(bps)
7.8124/518
10.4124/534
15.6124/537
20.8124/549
31.2124/573
41.7124/598
62.5124/5146
125124/5293
250124/5586
500124/51172

lora发送参数关系

符号速率Rs = 符号带宽BW / 2 ^ 扩频因子SF。

数据速率DR = 扩频因子SF * 符号速率Rs * 编码率CR。

lorawan协议主要使用了125kHz信号带宽设置,但其它专用协议可以利用其它的信号带宽设置。改变BW、SF和CR也就改变了链路预算和传输时间,需要在电池寿命和举例上做个权衡。

lora数据包结构

lora调制解调器数据包格式:隐式显式

显式数据包的报头较短。

射频PHY层数据包结构:

PreamblePHDRPHDR_CRCPHYPayloadCRC
前导码

前导码用于保持接收机与输入的数据流同步默认情况下,数据包含有12个符号长度的前导码

前导码长度是一个可以通过编程来设置的变量,所以前导码的长度可以扩展。例如,在接收密集型应用中,为了缩短接收机占空比,可缩短前导码的长度。然而,前导码的最小允许长度就可以满足所有通讯需求。

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

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

报头

RegModemConfig1寄存器,通过设定ImplicitHeaderModeOn位选择包头类型:显式报头模式隐式报头模式

显式报头模式

默认的操作模式按照 4/8 的最大纠错码发送

包含有效负载长度(以字节为单位)、前向纠错码率、可选的16位负载CRC。

隐式报头模式

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

如果 SF = 6 ,则只能使用隐式报头模式

低数据速率优化

由于SF较高时数据包的发送时间可能较长,因此可以选择在数据包发送和接收期间提高传输对频率变化的鲁棒性。有效数据速率较低时,可通过LowDataRateOptimize位提高LoRa链路的鲁棒性。当单个符号传输时间超过16ms时,必须使用过LowDataRateOptimize位。

注意:发射机和接收机的LowDataRateOptimize位设置必须一致。

如何简单直白的去理解lorawan协议

下面内容来源

以主要的应用场景:水表和电表为例。

水表

总所周知,水表是带电池的,对于无线远程水表来说最大的挑战就是功耗。若要实现低功耗,最简单的解决方法就是只有在要发送数据时电路才工作,其余时间进入睡眠。这就是lorawan协议的A模式,class A。

如果一个水表只有发数据的时候电路才工作,其他时间都在睡眠,那么网络服务器如果想给这个水表发消息,比如说设置上报时间参数,那就没办法去完成。

lorawam协议规定了,终端发送完数据的1s以后开始接收服务器的下行(Rx1),下1s以后接收第2个数据(Rx2)。服务器只要按照约定的1s/2s下发就可以了。

电表

水表已经接入了lora网络,此时电表也想接入。电表有自己的特点,不需要电池,自身一直有电,对实时性要求比较高(网络服务器点一下断闸,电表就能立即断电)。最简单的方法就是电表不睡眠,除了自己主动发送的时间,其余时候都处在接收模式。这就是lorawan协议的C模式,class C。

设计要求RxC=Rx2,即频率和扩频因子都相等。

Rx1 和 Rx2

无线通信的终端要接收到网关下发的消息,需要满足以下几个条件:

时间T:只有时间对上了才能收得到

频率F:只有频率对上了才能收得到

扩频因子SF:只有SF对上了才能收得到(扩频通信才有,lora是扩频通信)

所以是一个三元组(T,F,SF),Rx1和Rx2不只是时间的概念,而是这个三元组的概念。所以Rx1、Rx2对应的三元组不一样。

水表一般没有下行命令,是不是Rx1、Rx2就没有必要了呢?

不是的,水表在上报数据时,怎么知道网络服务器收到了这条数据呢?

最简单的方法就是服务器收到了水表上报,就回一条指令。

具体逻辑是:

        水表上报一帧数据;

        水表等待网络服务器回复,Rx1等待,Rx2等待;

        如果收到了网络服务器的回复,水表继续睡眠;

        如果没有收到网络服务器的回复,水表再重发一次。

在设计的时候Rx1的频率和SF是和上行的频率和SF有关系。这引出了lora同频、异频的概念,跟Rx1有关,跟Rx2无关。

lora同频:Rx1下行的频率和上行的频率一致。

lora异频:Rx1下行的频率和上行的频率不一致。

以lorawan 8频点的场景:每次上报都会从8个频点里选择1个上报,那么Rx1下行的频点每次都不一样,好处是不会互相干扰。

Rx2设计成固定的频率和固定的SF,例如lorawan-CN470模式就设计了Rx2的频率是505.3MHz,SF=12。固定的方式更容易收到,但容易相互干扰。

Rx1:设计成和上行消息有关的频率和SF,相互干扰小。

Rx2:设计成和固定的频率和SF,容易收到,但相互干扰大。

Rx1可以用来发送回复帧,相互干扰小。电表断、合闸指令一般是实时的,用Rx2(固定方式处理简单,不用记录之前上报的频率)。

ABP 和 OTAA

lora入网方式:ABP(手动激活)和OTAA(空中激活)。

lora传输是需要加密的,每一个设备都有两个密钥:NwkSkey & AppSkey。每一个设备的两个密钥都不一样。

ABP:终端写入 NwkSkey & AppSkey 密钥,然后把这个密钥参数通过另外一种方式告诉网络服务器,这样网络服务器就能解出终端上报的信息。

ABP入网方式这种方式已经很安全了,但还是存在一定的风险。终端和网络服务器之间的每一次通信都是用NwkSkey & AppSkey加密的,窃密者通过接收空中的无线信号有可能做出一些攻击行为的。此时更安全的入网方式OTAA出现了。

OTAA:终端和网络服务器之间同步一个密钥Appkey,在入网的过程中双方通过Appkey协商出一个临时的 NwkSkey & AppSkey,入网成功后双方就用临时密钥通信。下一次再入网时, NwkSkey & AppSkey 就又变了。

OTAA更安全。对于攻击者来说:

        因为Appkey只在入网的那一瞬间出现,攻击者不容易捕捉。

        因为每次入网的 NwkSkey & AppSkey 都会改变,攻击者分析了这一次的数据,下次又变了。

OTAA这种方式在通信行业很常见,以GSM手机卡为例子,有一个唯一的标识码IMSI,但空中通信时用的是临时码TMSI,IMSI只在建立连接时用一下。

重放攻击:把空中收到的消息再发送出去,这样网关和网络服务器又收到了这条消息。这样子攻击者无法伪造消息。

比如电表上报的最新消息是继电器状态是断开的,在此之前是闭合的。如果攻击者一直重放之前的消息,那么业务系统上继电器状态就是闭合的,会造成严重的后果。

lora设计时考虑到如何预防重放攻击,方法是FCnt。也就是每一次上报都有一个计数,后面收到的计数一定要大于之前收到的,否者就认为是不可信任的消息。(没有收到网络服务器回复而重传的消息中,FCnt不变)

上行去重和下行路由

lora是无线传输,每一次终端上报数据都会到多个网关,这些数据是完全一样的,业务系统只要一条就可以了。这就是上行去重的概念。

NS网络服务器会做这样的处理,在一小段时间内,如果收到多条数据符合以下情况就认为是同一条数据,给AS应用服务器报一次即可

同一终端上报

FCnt一致

校验位一致

下行时怎么办呢?如果要给一个电表下行,难道要从网关A、B、C都要下发一条指令吗?肯定是不行的,Rx2的缘故会导致互相干扰,所以只能选择一个网关下发消息,这就是lora的下行路由的概念。比如可以选择网关B下行,选择的策略是什么呢?还是要看上行,终端上报一次数据,哪个网关接收的信号质量最好,就作为下一次下行路由的选择对象

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

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

相关文章

vue-cli创建项目、vue项目目录结(运行vue项目)、es6导入导出语法、vue项目编写规范

vue-cli创建项目、编写vue项目、 1 vue-cli创建项目 1.1 vue-cli 命令行创建项目 1.2 使用vue-cli-ui创建 2 vue项目目录结构 2.1 运行vue项目 2.2 vue项目的目录结构 3 es6导入导出语法 4 vue项目编写规范 4.1 修改项目 4.2 以后写vue项目,只需要在固定位置…

用了 TCP 协议,就一定不会丢包吗?

表面上我是个技术博主。 但没想到今天成了个情感博主。 我是没想到有一天,我会通过技术知识,来挽救粉丝即将破碎的感情。 掏心窝子的说。这件事情多少是沾点功德无量了。 事情是这样的。 最近就有个读者加了我的绿皮聊天软件,女生&#xff0c…

1.1 安装配置CentOS

文章目录 零、学习目标一、导入新课二、新课讲解(一)安装VMWare Workstation1、获取安装程序2、进入安装向导3、按提示完成安装 (二)虚拟网络编辑器1、启动虚拟网络编辑器2、选择VMnet8虚拟网3、更改网络配置4、查看DHCP设置5、查…

avi怎么转换成视频?

avi怎么转换成视频?在我们日常使用的视频格式中,AVI是一种常见且经常被使用的音频视频交叉格式之一。它的优点之一是占用的存储空间相对较小,但也明显存在着画质损失的缺点。虽然AVI格式的视频在某种程度上也很常见,但与最常见的M…

什么情况下使用微服务?

单体架构图参考网络: 1. 什么是单体应用 单体应用就是将应用程序的所有功能都打包成一个独立的单元,最终以一个WAR包或JAR包存在,没有外部的任何依赖,里面包含DAO、Service、UI等所有的逻辑。 优点: 1&…

Multisim14.0仿真(十九)两片74LS138接成4线16线译码器

一、仿真原理图: 二、仿真效果图:

win系统环境搭建(五)——Windows安装redis

windows环境搭建专栏🔗点击跳转 win系统环境搭建(五)——Windows安装redis 本系列windows环境搭建开始讲解如何给win系统搭建环境,本人所用系统是腾讯云服务器的Windows Server 2022,你可以理解成就是你用的windows10…

一台主机外接两台显示器

一台主机外接两台显示器 写在最前面双屏配置软件双屏跳转 写在最前面 在使用电脑时需要运行多个程序,时不时就要频繁的切换,很麻烦 但就能用双屏显示来解决这个问题,用一台主机控制,同时外接两台显示器并显示不同画面。 参考&a…

【运维篇】三、SLF4J与Logback

文章目录 0、Java的门面设计模式1、SLF4J2、作用3、调试4、SpringBoot采用SLF4JLogback5、切换SpringBoot的日志框架6、logback的配置加载7、logback的配置组成8、logback之logger9、logback之appender10、logback之pattern11、appender的Filter12、logback.xml全解释13、logba…

带你读懂任正非先生的最新讲话——与ICPC代表讲话纪要(一)

2023年9月19日,在ICPC中国赛区北京总部的官网(设立在北京大学)上发布了一条新闻:《今天我们汇聚一堂,明天我们将奔向四面八方——任正非与ICPC基金会及教练和金牌获得者的学生的谈话纪要》。 2023年8月21日和8月26日&a…

Java笔记:Java虚拟机的指令

1. 字节码指令集 1.1 概述 Java虚拟机的指令由一个字节长度的、代表着某种特定操作含义的数字(称为操作码,Opcode) 以及跟随其后的零至多个代表此操作所需参数(称为操作数,Operands)而构成。 比如&#x…

对话ChatGPT:AIGC时代下,分布式存储的应用与前景

随着科技的飞速发展,我们正步入一个被称为AIGC时代的全新阶段,人工智能、物联网、大数据、云计算成为这个信息爆炸时代的主要特征。自2022年11月以来,ChatGPT的知名度迅速攀升,引发了全球科技爱好者的极大关注,其高超的…

【23种设计模式】装饰模式(九)

前言 装饰模式,英文名称:Decorator Pattern。我第一次看到这个名称想到的是另外一个词语“装修”,我就说说我对“装修”的理解吧,大家一定要看清楚,是“装修”,不是“装饰”。在房子装修的过程中,各种功能可…

Jenkins学习笔记3

gitgithubjenkins: 架构图: 说明:jenkins知道github有更新了,就pull进行构建build,编译、自动化测试。然后部署到应用服务器。 maven java的项目构建工具。 在开发者电脑上创建空密码密钥对。 [rootgit-developer ~…

系统架构设计师-数据库系统(3)

目录 一、数据控制 1、安全性 2、完整性 3、并发控制 4、故障恢复 二、数据库设计概述 1、数据库设计关注的问题 2、数据库性能优化 3、规范化与反规范化 一、数据控制 1、安全性 2、完整性 (1)实体完整性约束:规定基本关系的主属性不能取空…

论文写作格式经验

论文写作经验: 交叉引用 在公式后输入#(1),回车选中(1),选择插入->添加书签,自定义书签名交叉引用->引用类型:书签一个公式对应一个书签 这样就可以只显示公式编号了 word转p…

数据的力量,环保的未来!气象信息采集系统解决方案助您实现环境优化

小伙伴们,今天给大家讲一个真实的案例,看看如何用气象信息采集系统提高环保监测能力。 随着环境污染问题越来越严重,许多城市都开始建设空气质量监测站,对各类污染数据进行采集。但是传统的监测站设备复杂,采集范围有限,这就需要用到工业物联网的解决方案。 我们公司参与建设了…

R语言-关于颜色

目录 颜色 示例 R 颜色板 参考: 颜色 什么场景会用到颜色?比如在绘图过程中,为了让图更好看,有的时候,需要选择使用不同的颜色进行绘制或者填充。本文提供了R颜色的相关参数。 在R中,可以通过颜色下标…

面向面试知识-Redis

面向面试知识-Redis 什么是Redis 运行于内存的基于key-value的非关系型数据库。 一款开源的内存数据结构存储,用作数据库、缓存、消息代理等。(可以基于Redis实现分布式锁、以及消息队列) 发布订阅?? 对数据类型的操…

数据库数据恢复-SQL SERVER数据库文件损坏的故障表现数据恢复方案

SQL SERVER数据库故障类型: SQL SERVER数据库MDF(NDF)或LDF损坏。 SQL SERVER数据库故障原因: 1、数据库正在操作过程中,机器突然断电。 2、人为误操作。 SQL SERVER数据库MDF(NDF)或LDF损坏的…