LoRa学习总结(三)

2023-11-02

之前总结是LoRa的基本知识,接下来是都是代码的结构或者细节方面的总结。

1.协议介绍

协议将分成三层:射频层(MRFI),网络层(NWK),应用层(APP)。

    

2.射频层

这里没有通常所说的物理层数据链路层。因为这是有Radio芯片将传输过来的数据完成格式化了,射频层可以与Radio芯片进行交互。

在射频层下面其实还有一个板级支持包(BSP)。是用来初始化一些接口的(如SPI接口)。

在射频层没有复杂的数据接收和通信。主要是看是否能收发数据和检测信道。

2.1信道

在LoRa协议中,支持三种设备对象:End Device, Access Point 和Range Extender。

  • End Device:         节点,是整个网络中传感器的宿主。在网络中数量最多。
  • Access Point:      集中器,是整个星状网络的中心,在整个网络中只有一个。是一个始终开启的设备。
  • Range Extender: 用来扩展网络的无线距离,主要功能就是重播数据帧。也是一个始终开启的设备。

       在整个网络中,如果这三种设备对象想实现通信,就要在同一个信道中,且尽量不让外界对这个信道有干扰。

2.1.1LoRa信道频率计算

信道频率是需要计算的,常用的频率是433MHz,486MHz,需要匹配相适应的天线来使用。

const u16 SX1276FreqTbl[CHANNEL_NUMS][3] = {{0x0678, 0x0740, 0x0814},{0x0678, 0x0780, 0x0814},\
                                                                                          {0x0678, 0x07C0, 0x0814},{0x0679, 0x0700, 0x0814},\
                                                                                          {0x0679, 0x0740, 0x0814}};

比如这个数组是用来计算信道频率的。根据手册,我们取每组数据后两位,经过计算器可得:

                                                        

根据手册:

将上述的7880724乘以61则可得:

                                                  

说明这个信道是480MHz的,这个数组有5组不同参数,说明可以切换5种不同频率的信号。

信道初始化在MRFI_Init()中初始化。

 

2.2 CAD检测

之前提过,射频层是否工作主要看节点和集中器是否能进行通信,当他们都在同一个信道中时,就是需要检测信道是否繁忙或者空闲。当信道空闲时才能发送数据,这时就需要进行信道检测。

在整个网络中,接收机最消耗能量的部分是一直打开接收模式接收数据,但是当没有数据时,其实并不需要一直打开接收机,可以处于待机模式。所以最理想的情况是当有数据过来时,接收机工作,没有数据过来时,接收机处于待机状态。

传统的技术是根据RSSI值来判断是否有数据过来,只有达到一定信号强度才确认有数据。现在LoRa使用CAD检测来确定是否有数据过来。

2.2.1LoRa数据包

LoRa数据包包含三部分:

  • 前导码
  • 可选报头
  • 有效负载

前导码用来保持接收机与输入的数据流同步。前导码发送需要时间,这个时间需要和接收机唤醒时间来比较。

假如一个前导码持续100ms,设备每80ms醒来一次,检测有没有数据包发过来,此时,只要有数据下发,那么设备醒来就一定能检测到前导码,因为设备可以休眠,而无需一直开着接收模式等待数据下发。

前导码时间计算:

                                     

  • npreamble表示已设定的前导码长度,其值来自寄存器上的RegPreambleMsb和RegPreambleLsb

CAD检测时间可以通过更改SF,BW来设置

CAD检测时间内, 芯片在(2^SF+32)/BW秒中处于接收模式,其余时间则处于低功耗状态。

 

2.2.2信道检测
 

LoRa半双工的机制,发送和接受都是独立工作的。当需要进入某种工作状态,就需要从当前的工作状态进行切换,所以边发边听的这种机制应该不能实现。

所以当我们需要发送数据时,要检测信道是否被清空。

方法:

使用一个节点和一个集中器,让集中器每隔5s发送广播帧,节点检测信道。节点开启CAD检测,应该是大概能每隔5s检测到信道不为空。

                                   

流程:

  1. 先让接收机处于待机模式
  2. CAD模式初始化
  3. 开启CAD模式
  4. CAD检测

 

 

 

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LoRa学习总结(三) 的相关文章

  • Java实现_ssh远程会话连接池实现_使用ObjectPool和PooledObjectFactory

    一 需求背景 公司的大数据集群作为基础平台 为公司内部各应用提供计算和存储能力 为实现各应用单独管理并进行资源隔离 一般采用多租户管理 集群为应用租户分配了固定的计算资源 如下应用租户B 应用端在利用spark连接大数据集群时 会根据exe
  • 数组-约瑟夫环

    题目描述 已知有n个人围坐在一张圆桌上 编号依次为0 1 2 n 1 编号为n 1与编号为0的人坐在相邻的位置 现在编号为k的人从1开始报数 数到m的那个人会退出圆桌 他的下一个人又从1开始报数 数到m的那个人又出列 依此规律重复下去 请问

随机推荐

  • OSS对象存储的简单实现

    前提准备好阿里云对象存储的账号 gt 创建一个bucket 设置好访问权限 gt 创建用于上传文件的子账号得到accessKey和secretKey以及endpoint gt sdk例子java简单上传的例子测试 引入alicloud os
  • 快速排序(非递归)

    快速排序非递归 基本思想 默认升序 从数组中选取一个数来作为标准数 所有比这个数小的数全部放到其前面 比这个数字大的数放到其后面 此时这个标准数所处的位置就是其在有序数组中的位置 因此该标准数就不用在移动了 我们对其左右两边的数字继续执行之
  • 通过RabbitMq实现动态定时任务的实现。

    通过RabbitMq实现动态定时任务的需求 一 需求背景 定时任务的需求所谓是数不胜数 其中实现方式也是百花齐放 用得最多的大概率为Springboot中的 Scheduled cron 0 0 1 1 注解 或者是定时任务XXL JOB框
  • 蓝桥杯官网练习题(翻硬币)

    题目描述 小明正在玩一个 翻硬币 的游戏 桌上放着排成一排的若干硬币 我们用 表示正面 用 o 表示反面 是小写字母 不是零 比如 可能情形是 oo oooo 如果同时翻转左边的两个硬币 则变为 oooo oooo 现在小明的问题是 如果已
  • JAVA中getClass()以及getName()方法

    getClass public final Class
  • JSch链接linux服务器问题解决方案

    问题 Session connect java io IOException End of IO Stream Read或者Algorithm negotiation fail 方案 需要修改的文件路径 etc ssh sshd confi
  • 金融经济学研究什么?

    文章目录 什么是金融 资产和资产的回报率 资产定价 金融摩擦与金融契约理论 有效市场之争与行为金融 什么是金融 金融就是资金融通 由维基百科所定义的 金融是处理资产和负债 在 时间和确定及不确定状态下分配的领域 如何理解呢 主要从这么几点入
  • pom.xml的scope/classifier等容易忽略标签

    文章目录 一 scope标签的值 二 pom xml案例 三 scope不同值参与阶段 四 Maven的打包三种插件 五 classifier使用 1 classifier概述 2 使用场景 六 optional标签使用 一 scope标签
  • 微信小程序——生命周期

    在微信小程序中 可以通过生命周期函数来执行相应的代码操作 以下是一些常见的生命周期代码操作示例 在 onLoad 生命周期中进行数据初始化和网络请求 onLoad function options 数据初始化 this setData na
  • 3-Numpy数组操作2(索引和切片)

    索引和切片 一维 a1 np arange 0 20 print a1 print a1 1 gt gt gt 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 1 多维 a2 np ara
  • 目标检测中的Label Assignment

    PaperWeekly 原创 作者 燕皖 单位 渊亭科技 研究方向 计算机视觉 CNN Label Assignment Label assignment 主要是指检测算法在训练阶段 如何给特征图上的每个位置进行合适的学习目标的表示 以及如
  • idea常用插件和注释

    背景 随着idea越来越受开发者捧月 相信很多人 无论在换公司或者配置新得电脑 都会重新配置各种各样得插件 比如 lombok mybatis系列 maven等 但人得记忆都有限得 每天都在行走 从未没有停下 借用法师一句话 人生那么长 停
  • 无序链表的归并排序 - Java代码纯享版

    public class ListNodeMergeSort public static class ListNode int val ListNode next public ListNode int val this val val p
  • 嵌入式linux内存分析

    在linux的桌面发行版中 一般都会有一个swap分区 然而在用FLASH做存储介质的嵌入式设备中 是没有交换分区的 这主要的有如下原因 1 一旦使用了交换分区 系统的性能将下降得很快 不可接受 2 FLASH的写次数有限的 大概在几十万次
  • win10 安装 mysql server

    welcome to my blog 如何启动mysql server 只需四步 安装 配置mysql server 第一步 去官网下载mysql server 下载地址 有两个下载链接 第一个安装包比较小 第二个安装包比较大 因为包含调试
  • CCP集成和基于CANoe的简易标定实现

    CCP简介 CCP就是基于CAN总线的标定协议 在没有这个协议之前 每个供应商有自己的标定工具和协议 五花八门 很难协调 终于有一天有个哥们跳出来制定了一个规范 说大家伙都按这个方法来搞标定测试吧 这个哥们就是ASAP CCP协议属于其中的
  • 最大类间方差(大津法)

    1 概述 最大类间方差法是由日本学者大津 Nobuyuki Otsu 于1979年提出的 是一种自适应的阈值确定的方法 又叫大津法 简称OTSU 它是按图像的灰度特性 将图像分成背景和目标2部分 背景和目标之间的类间方差越大 说明构成图像的
  • 好玩的脚本代码大全_Scriptable脚本——网易云热评

    Scriptable脚本 网易云热评 今天我为大家带来新的作品 iOS14桌面组件神器 Scriptable 原创脚本 精美作品分享 喜欢的话就点关注吧 更多脚本正在路上 效果图 如何使用 iPhone 上下载 Scriptable App
  • Tree with Maximum Cost---CF1092F 树上DP

    F Tree with Maximum Cost time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstand
  • LoRa学习总结(三)

    之前总结是LoRa的基本知识 接下来是都是代码的结构或者细节方面的总结 1 协议介绍 协议将分成三层 射频层 MRFI 网络层 NWK 应用层 APP 2 射频层 这里没有通常所说的物理层和数据链路层 因为这是有Radio芯片将传输过来的数