Warm tip: This article is reproduced from serverfault.com, please click

c-Arduino 和 SX1278 的 LoRa Class B 实现 TDMA

(c - LoRa Class B implementation TDMA by Arduino and SX1278)

发布于 2021-03-15 09:52:17

我正在构建一个 Lora 网络,其中包含两个 SX1278 模块和 Arduino Uno。Lora 基于三个类。A , B 和 C, 问题是:为了实现 B 类,是否需要更改 Lora 模块寄存器?!或者班级之间的差异只是他们相互交流的时间? 如果你有源代码,它真的会让生活更轻松。

Questioner
sajad ahmadi
Viewed
0
KamilCuk 2021-03-15 18:04:33

或实现 B 类,是否需要更改 Lora 模块寄存器?

嗯,是。它需要不时做一个RX窗口。

或者班级之间的差异只是他们相互交流的时间?

一般是的。无线通信中几乎所有节能方法的实现都可能被简化为“只是它们通信之间的时间”的差异——这是一种过度简化。但一般来说,是的,类操纵从网关到信标的下行链路可能的时间。

A类可以随时发送消息,发送后才接收消息。B 类是具有周期性同步接收窗口的 A 类。C 类可以随时接收消息 - 保持 RX 始终打开。

来自lora-allience.org/about-lorawan

A 类 – 最低功耗的双向终端设备:

所有 LoRaWAN 终端设备必须支持的默认类,A 类通信始终由终端设备发起并且是完全异步的。每个上行链路传输都可以在任何时间发送,然后是两个短的下行链路窗口,为双向通信或网络控制命令(如果需要)提供机会。这是一种 ALOHA 类型的协议。终端设备能够在其自身应用定义的时间内进入低功耗睡眠模式:定期唤醒没有网络要求。这使得 A 类成为最低功耗的工作模式,同时仍允许随时进行上行链路通信。因为下行链路通信必须始终遵循具有终端设备应用程序定义的时间表的上行链路传输,

B 类 – 具有确定性下行链路延迟的双向终端设备:

除了 A 类启动的接收窗口之外,B 类设备还使用周期性信标与网络同步,并在预定时间打开下行链路“ping 时隙”。这为网络提供了发送具有确定性延迟的下行链路通信的能力,但以终端设备中的一些额外功耗为代价。延迟可编程高达 128 秒以适应不同的应用,额外的功耗足够低,仍然适用于电池供电的应用。

C 类 – 最低延迟、双向终端设备:

除了上行链路的 A 类结构后跟两个下行链路窗口之外,C 类结构通过在终端设备不进行传输(半双工)的所有时间保持终端设备的接收器打开,进一步减少了下行链路的延迟。基于此,网络服务器可以在假设终端接收器打开的情况下随时发起下行传输,因此没有延迟。折衷方案是接收器的功率消耗(高达 ~50mW),因此 C 类适用于可提供连续功率的应用。对于电池供电的设备,A 类和 C 类之间的临时模式切换是可能的,并且对于固件无线更新等间歇性任务非常有用。