LoRa基础知识汇总,看完一篇就入门!详解最常用的Class-B模式

LoRa协议架构图。

(燚智能物联网产品开发大讲堂点评:普通物联网用户知道有Class ABC就足够了,协议部分LoRa模组厂和网关厂家已经做完了。)

LoRaWAN是为LoRa远距离通信网络设计的一套通讯协议和系统架构。

LoRa的协议架构分层图

LoRaWAN 网络架构

LoRaWan的架构

可以看到一个LoRaWAN网络架构中包含了终端、基站、NS(网络服务器)、应用服务器这四个部分。基站和终端之间采用星型网络拓扑,由于LoRa的长距离特性,它们之间得以使用单跳传输。在终端部分官方列了6个典型应用,有个细节,你会发现终端节点可以同时发给多个基站。基站则对NS和终端之间的LoRaWAN协议数据做转发处理,将LoRaWAN数据分别承载在了LoRa射频传输和Tcp/IP上。

(燚智能点评: LoRa的架构和手机差不多:终端+基站的模式。LoRa都是星形网络,没有mesh网络。LoRa设备要通过网关的4G、Wifi、网线等接入公网。其中“LoRa模块+网关+数据中转传输”部分,已经有大量成熟解决方案。 MCU连接LoRa网络,跟连接2G和NB-IoT网络的方式是类似的,重新照着模块AT指令写一遍就好了。如果上FreeRTOS之类的小系统,大部分网关厂家有参考代码可以直接搬过来用。)

LoRa实际应用的几个参数:

(燚智能点评:市区普通场景用NB-IoT足够了,山里的牧场、科考队之类的用LoRa比较好,范围足够大。功耗上看多久上报一次数据,1000mAh的电池支撑LoRa定位器工作几个月肯定没问题。都用上LoRa了,相信数据发送频率和数据量都不会有多大的,所以容量、速度这些参考一下即可。)

传输距离:市区2~5公里,郊区15公里。

工作电流:仅射频收发器,睡眠时0.2uA,接收时10mA,发送时120mA@+20dBm,20mA@+7dBm,发送时的工作电流与发射功率有关。

节点容量:上万(tens of thousands),与节点的数据发送频率有关。

速率:中国,250bits/s ~ 11kbits/s(LoRa调制),50kbits/s(FSK调制),LoRa调制最大速率相当于串口9600波特率,FSK调制最大速率相当于串口57600波特率。

频谱:中国,779MHz ~ 787MHz。

Class ABC三个模式,用好LoRa的关键!

Class A 上下行的时序图,目前接收窗口RX1一般是在上行后1秒开始,接收窗口RX2是在上行后2秒开始。(燚智能点评:终端有数据了,就上报,顺便收一下服务器下发的指令。终端没数据的时候,服务器下发不了指令。适合用在智能井盖、智能垃圾桶、传感器等场景,你可以几天才发一个数据上去,省电的很。)

LoRa Class-A

Class C 和 A 基本是相同的,只是在 Class A 休眠的期间,它都打开了接收窗口RX2。(燚智能点评:几乎随时都可以接收数据。只干活不睡觉,功耗自然就高了。考虑到10mA级别的接收电流,不是长供电的设备最好别用这个模式。)

LoRa Class-C

Class B 的时隙则复杂一些,它有一个同步时隙beacon,还有一个固定周期的接收窗口ping时隙。如这个示例中,beacon周期为128秒,ping周期为32秒。(燚智能点评:看起来复杂,实际上就跟NB-IoT的eDRX模式差不多,隔几十秒收一个数据。其他时候都在休眠。功耗低、服务器下发数据延时也不大。适合定位器、开关等场景。既不用接电,也能够“还算及时”的控制设备。)

LoRa Class-B

Class B用的最多,也最复杂,看一下B模式的技术细节:

(燚智能物联网产品开发大讲堂:总结下来就两句话:终端和基站约定一个时间下发数据,终端和基站依靠beacon信号校对时间,确保约定的时间不会错位。下文的节点是终端设备、NS是数据服务器、网关就是LoRa基站)

ClassB的目的是使得节点具有在预定时间打开接收窗口(称之为ping slot)的能力。一个支持ClassB的网络,所有的网关都必须同步发送beacon。

NS选择哪个网关来发起下行,基于节点的最后一次上行的RSSI,因此,节点在移动并检测到收到的beacon(节点可以识别出收到的beacon来自于哪个网关)发生变化时,节点必须发起一次上行(通常发一个空的上行帧)强迫NS更新NS下行路由(NS->某网关->节点)。

节点工作在Class B之前,下面信息必须告诉NS:节点ping-slot默认周期、DR(数据速率)、频道。

同一网络,所有网关发送beacon是同时的,这来源于GPS时间的唯一性。节点是有可能“收到”多个网关的beacon

所有节点都以Class A入网。节点的应用软件可决定切换到Class B,按照如下流程:

(图片见上图)

1.节点应用层请求LoRaWAN层切换到Class B。节点的LoRaWAN层搜索beacon并返回结果(BEACON_LOCKED或者BEACON_NOT_FOUND)。LoRaWAN层可使用DeviceTimeReq MAC指令加快beacon搜索过程。

2.一旦进入Class B模式,节点所有上行帧的FCTRL_ClassB(FCTRL域中位Class B)都置1,从而告知NS本节点已进入Class B模式。节点MAC层将自动在每个beacon和ping时间窗打开接收。节点成功收到beacon后,LoRaWAN层会把beacon内容和RSSI传给应用层;节点在ping slot成功收到下行后,处理方法同Class A下行。LoRaWAN层在组织beacon和ping时会考虑最大可能时钟偏差。

3.移动节点必须周期通知NS更新下行路由,通常是发送一个空的上行帧。比周期发送更高效的办法是,应用层检测到beacon内容变化时主动发起上行。当然,节点需要在beacon接收和此上行之间增加一个0-120s的随机延迟(以防止多个移动节点同时发上行引起系统性冲突)。

4.任意时刻,NS可通过PingSlotChannelReq MAC指令修改节点的ping 频率和速率。

5.任意时刻,节点可修改ping周期:首先必须临时结束Class B操作(上行FCTRL_ClassB清0)并发送PingSlotInfoReq指令到NS,NS对此命令回复ACK之后,节点可使用新的ping周期重新开始进入Class B操作。

6.一段时间节点未收到beacon之后,节点MAC层必须通知应用层当前MAC已切换到Class A。同时,LoRaWAN层也不再设置上行FCTRL_ClassB。应用层可以周期性尝试切回Class B(重新从上述第1步即搜索beacon开始)。

收不到Beacon怎么办?多收一会。

(燚智能点评:LoRa终端和LoRa基站之间的时间同步,是LoRa比NB更省电的核心要素。NB不需要同步,是因为NB终端会定期向服务器发心跳。LoRa一旦约定好了时间,基站就默认设备一定会在那个时间点接收,所以需要严格的时间同步。Beacon则是时间同步的最关键的地方。)

节点由ClassA切换到ClassB之前必须收到beacon,进入ClassB之后还需要周期搜索/接收beacon,从而同步时钟。Class B节点可能临时收不到beacon,此时节点要逐渐加宽beacon和ping的接收窗。如果收到beacon后2小时收不到新的beacon,节点需使用内部时钟保持同步。使用温度传感器可以进一步降低节点内部时钟晶振的误差。

LoRa beacon

Beacon周期内部的时序

两个连续beacon起点之间时间差称之为beacon周期。

LoRa beacon时序

Beacon周期128s,减去5.12s,剩余122.88s为ping可用时间。122.88s=4096*30ms

Guard time是给上一次ping用的,保证ping完成后才能进行beacon发送。

beacon reserved是给beacon用的,保证beacon完成后才能进行ping发送。

注:以上部分参考资料来自网上

说明:LoRa应用学习站通过公开互联网收集、整理并转载有关LoRa及物联网应用解决方案,以供广大LoRa应用开发者和爱好者共同学习交流和参考运用到实际生产生活中。本站所有转载的文章、图片、音频、视频等资料的版权归版权所有人所有并衷心感谢您的付出,由于本站采用的非本站原创文章及图片等内容无法一一联系确认版权者,如果本网所选内容的文章原创作者认为其作品不宜放在本站,请及时通过以下留言功能通知我们采取适当措施,避免给双方造成不必要的经济损失。如果您希望保留本文在LoRa学习站,但希望文章末尾提供对作者的致谢或者产品、网站交换链接的,也请将需求写入以下留言栏中,谢谢您的支持。让我们共同努力,打造万物互联的未来美好生活!

您的留言或需求: