一种基于二分搜索时隙随机化通信机制的Lora终端节能方法
技术领域
本发明涉及通信领域,特别地,涉及一种基于二分搜索时隙随机化通信机制的Lora终端节能方法。
背景技术
Lora技术为LPWAN技术的一种,具有远距离、低功耗、多节点、低成本的特点。Lora整个网络协议层次如下,Application为应用层,常见的LoraWAN协议即为LoraMAC协议,协议定义的终端类型有 ClassA、ClassB、ClassC三种类型。ClassB定义ping周期,周期性进行下行数据监测。Class B的节点每128秒接收网关广播的携带时间参考信息的Beacon(信标),用于校准自身的时钟。在2个Beacon 之间,节点会开启一些接收窗口(ping slot),如果在窗口期接收到网关的preamble,那么它将接收完整的下行数据包。
由于每个节点距离网关的位置不同,其接收灵敏度也不同,所以 Ping slot所需要的个数PingNb也不大相同,在实际过程中为了保证通信质量的良好,常以PingNb的k为7,即最大PingNb个数进行数据传输。如果一个节点与网关的通信仅仅需要4(k=2)次就可以,然而使用了128个Ping slot,多使用了124个Ping slot,也就意味着多耗费了124个Pingslot的能量。
发明内容
为了克服现有技术的不足,本发明提供一种基于二分搜索时隙随机化通信机制的Lora终端节能方法。
本发明解决其技术问题所采用的技术方案是:
一种基于二分搜索时隙随机化通信机制的Lora终端节能方法,包括 Lora终端采用的算法、终端使用的MCU以及Lora射频模块,Lora 终端Class B采用的算法包括以下步骤:
S1:当节点接收Beacon,用二分搜索算法选取设定合适的PingNb,搜索过程从Beacon的数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较;
S2:通过时隙随机化得到每个节点的Ping Slot的开始时间点的偏移量PingOffset,对每个节点开始接收数据的时间都有随机的偏移量PingOffset,通过密钥为0的AES加密算法设计得出:
Key=16×0x00
Rand=aes128_encrypt(Key,BeaconTime|DevAddr|pad16)
PingOffset=(Rand[0]+Rand[1]×256)moduloPingPeriod;
S3:进入数据接收的Ping Slot。
优选地,终端MCU选用STM8L系列MCU,STM8L系列MCU功耗低,不用外部存储设备,完全符合无线传输的要求。
优选地,所述Lora射频模块选用SX1278,SX1278属于Lora TM 扩频调制技术,它的远距离优势得益于调制增益,不是靠增大发射功率,能耗低。
本发明的有益效果:
由上述方案可知,终端算法采用二分搜索算法选取设定合适的 PingNb,每一次都可以使选取范围缩小一半,且以递归的形式,可以快速准确的选取设定的PingNb,极大的缩短了通信时间,同时也节省更多的能量。采用时隙随机化得到偏移 量可以保证Ping Slot里只有一个节点在进行数据传输,不会因通信系统性的碰撞或监听过载的情况而产生额外的能量消耗。因此,该方案可以有效的降低的功耗,达到节能目的。
附图说明
下面结合附图和实施例对本发明进一步说明。
图1是本发明终端采用的算法流程图。
具体实施方式
参照图1,一种基于二分搜索时隙随机化通信机制的Lora终端节能方法,包括Lora终端采用的算法、终端使用的MCU以及Lora射频模块,Lora终端Class B采用的算法包括以下步骤:
S1:当节点接收Beacon,用二分搜索算法选取设定合适的PingNb,搜索过程从Beacon的数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较;
S2:通过时隙随机化得到每个节点的Ping Slot的开始时间点的偏移量PingOffset,对每个节点开始接收数据的时间都有随机的偏移量PingOffset,通过密钥为0的AES加密算法设计得出:
Key=16×0x00
Rand=aes128_encrypt(Key,BeaconTime|DevAddr|pad16)
PingOffset=(Rand[0]+Rand[1]×256)moduloPingPeriod;
S3:进入数据接收的Ping Slot。。
终端MCU选用STM8L系列MCU,STM8L系列MCU功耗低,不用外部存储设备,完全符合无线传输的要求。
所述Lora射频模块选用SX1278,SX1278属于Lora TM扩频调制技术,它的远距离优势得益于调制增益,不是靠增大发射功率,能耗低。
终端算法采用二分搜索算法选取设定合适的PingNb,每一次都可以使选取范围缩小一半,且以递归的形式,可以快速准确的选取设定的PingNb,极大的缩短了通信时间,同时也节省更多的能量。采用时隙随机化得到偏移 量可以保证Ping Slot里只有一个节点在进行数据传输,不会因通信系统性的碰撞或监听过载的情况而产生额外的能量消耗。因此,该方案可以有效的降低的功耗,达到节能目的。
终端Class B通信机制
Class B的节点每128秒接收网关广播的携带时间参考信息的 Beacon(信标),用于校准自身的时钟。在2个Beacon之间,节点会开启一些接收窗口(ping slot),如果在窗口期接收到网关的 preamble,那么它将接收完整的下行数据包。
一个Beacon的时间是128s,具体分成Beacon_guard、 Beacon_reserved和Beacon_window。Beacon_guard的时间为3s,作用是防止Beacon帧数据与ping数据帧的冲突;Beacon_reserved的时间为2.12s,是Beacon帧的保留时隙;Beacon_window的时间为122.88s。
Beacon_window时间长度为122.88s,被划分成212=4096个Ping slot,因此每个Ping slot为0.03s。
当节点接收Beacon,用二分搜索选取设定合适的PingNb,然后根据SlotRandomization中的PingOffset,进入数据接收的Ping Slot。
由于下行通信中的每个Beacon内都可以被划分成212=4096个 Ping slot。但并不是所有的时隙内都进行数据传输,为了防止通信系统性的碰撞和监听过载的情况,每个节点在不同的一定数量Ping slot内进行下行数据的接收。因此需要对4096个slot进行编号索引和时隙随机化,以保证在这些Ping slot里只有一个节点在进行数据传输。
DevAddr:设备的32位网络单播或多播地址。
PingNb:一个Beacon下的Ping slot个数,且这个数为2的幂整数。
PingPeriod:节点接的Ping slot。
PingOffset:每给Beacon周期开始的偏移量,取值范围为0~ (PingPeriod-1)。
BeaconTime:这个值在BCNPayload,即将要接收Beacon帧的时间。
SlotLen:一个Ping slot的时长,30ms。
其中,PingNb的取值范围,
PingNb=2k(1≤k≤7)
PingPeriod的值:
PingPeriod=212/PingNb
为了保证每个节点接收数据的时刻是随机的,我们对每个节点开始接收数据的时间都有随机的偏移量PingOffset,通过密钥为0的 AES加密算法设计得出:
Key=16×0x00
Rand=aes128_encrypt(Key,BeaconTime|DevAddr|pad16)
PingOffset=(Rand[0]+Rand[1]×256)moduloPingPeriod
每个节点的Ping slot开始的时间点为Ton:
Ton=Beacon_reserved+(PingOffset+N×PingPeriod)×SlotLen
时隙随机化(Slot Randomization),是把每个节点的Ping Slot 的开始时间点都有一个独一无二的PingOffset,因此以保证每个节点与网关的通信都是在不同的Slot下进行。
由于每个节点距离网关的位置不同,其接收灵敏度也不同,所以 Ping slot所需要的个数PingNb也不大相同,在实际过程中为了保证通信质量的良好,常以PingNb的k为7,即最大PingNb个数进行数据传输。如果一个节点与网关的通信仅仅需要4(k=2)次就可以,然而使用了128个Ping slot,多使用了124个Ping slot,也就意味着多耗费了124个Pingslot的能量。
对于不同的节点,如何动态地设置其合适的PingNb,不仅可以缩短通信的时间,同时也可以节省更多的能量。
假定一个节点完整的通信时长所需要的PingNb的数量为N,节点所需要设置的PingNb必须为2的幂整数,因此如何在保证通信所需要的足够时间内,合利选取k值,可以省2^(7-k)个slot的能量。以二分法的思想,搜索大于N的最小2次幂。
二分搜索(Binary Search),是一种在有序数组中查找某一特定元素的搜索算法。搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半。
二分搜索每次都可以把搜索区减少一半,且以递归的形式,其时间复杂度O(logn)和空间复杂度O(1),其中,n代表集合中的元素个数。
二分搜索是一种简单高效的算法,十分符合物联网下节点的MCU 的性能要求,同时也满足低功耗设计的节能目标。
MCU选型及引脚配置
终端MCU选用STM8L系列MCU,该系列为STM公司针对物联网WSN 节点设计,完全符合其资源紧张和性能苛求等特点。以STM8L151C8T6 为例,它属于超低功耗,不带RTC休眠为400nA,带RTC下休眠为 1.4uA。该MCU拥有较大的RAM(4KB)和自带EEPROM(2KB),不用扩展外部存储设备,进行一步降低功耗和成本。
MCU与RF通过SPI总线连接,此外还有一些控制引脚;RF通过 DIO0~5引脚给MCU发通知信号,NSS/SCK/MISO/MOSI是SPI总线,RST2是MCU复位RF的引脚。
支持低功耗的MCU一般都有好几种运行模式,以ST公司的STM8L 为例,它支持5种低功耗模式:等待、低功耗运行、低功耗等待、主动停止和停止。如下表所示,每一种模式的进入方式,节能级别和外设工作要求。
如下表所示,将MCU的I/O引脚分为四类:Pin_NULL、Pin_VDD、 Pin_MCU_OUT、Pin_MCU_IN。
I/O引脚分类 |
详细释义 |
Pin_NULL |
未连接的I/O引脚 |
Pin_VDD |
接电源的I/O引脚 |
Pin_MCU_OUT |
IC输入,MCU输出的I/O引脚 |
Pin_MCU_IN |
IC输出,MCU输入的I/O引脚 |
对四类I/O口,测试实验结果如下表所示。
对于接电源的引脚Pin_VDD来说,Push-pull模式下电流为0.4 uA;Nopen-drain模式下电流为29.3uA。因此MCU接电源的引脚设置为Push-pull模式更省电。
对于悬空的引脚Pin_NULL来说,设置(1)Input,pull-up;(2) Output,open-drain,low level;(3)Output,push-pull,low level;(4)Output,push-pull,high level这四种工作模式均可以更节能,电流仅为0.4uA。
对于IC输入,MCU输出的引脚Pin_MCU_OUT来说,设置为Input, floating模式更节能。
对于IC输出,MCU输入的引脚Pin_MCU_IN来说,Input,pull-up 模式下能耗最小。
MCU配置
由硬件节能设计可知,MCU的Pin_MCU_OUT引脚和Pin_MCU_IN 引脚,在进入低功耗模式和退出低功耗模式之际,会发生动态切换引脚,即引脚的“第二次”功能配置。
由于动态引脚的切换需要一定的时间,以STM8L151C8T6为例,动态切换5个引脚需要477us,可见它一般用于休眠这种较长周期的节能模式,不适合空闲停止这种短暂节能模式。为减少软件维护成本,需要设计一种优秀的数据结构,它能描述MCU所有引脚,如果引脚功能改变,只需要修改数据定义,而不需要修改程序。
MCU始终是节点的持续消耗者,因此软件设计的重心依旧是尽可能快地让MCU节能,STM8L151C8T6有如下2种节能模式。
短暂等待:如等待RF发送数据帧完毕,MCU执行WFI指令,一旦RF完成发送,中断将MCU唤醒继续运行;
长期等待:如等待下一次主动上报数据帧,MCU执行HALT指令,当指定时间到达时,RTC中断将MCU唤醒继续运行。
Lora RF休眠
SX1278属于Lora TM扩频调制技术,它的远距离优势得益于调制增益,不是靠增大发射功率(那将消耗更多电能)。该射频芯片的电流消耗如下:休眠<0.2uA,空闲=1.6mA,接收=12mA,发射(最大功率)=120mA.终端MCU通过“中断+定时器超时”方式控制SX1278,一旦射频完成发送或接收,立即进入休眠模式。
如下表所示,为Lora RF(SX1278)的能耗测试结果。
根据表数据不难发现,SX1278的四种工作模式耗能排序为: Sleep<Standby<Receive<Transmit。其中发送状态下耗能最多,休眠模式下耗能仅有0.2uA,因此在节点发送完毕之后,更多的处于休眠模式下最利于节能
Lora RF设计
Lora射频模块(Lora RF)是实现Lora协议无线传输重要部分,同时也是系统实现的基础支撑。并且节点(Node)和集中器(Sink) 具有相同射频模块的硬件结构,主要分为SX1278、TCXO和SWITCH三个模块。
其功能如下:
SX1278:完成Lora无线信号的接收和发送
TCXO:为SX1287高频电路提供精确的时钟
SWITCH:为半全双工的SX1278切换输入或输出状态
MCU:驱动SX1278,实现无线网络协议等
SX1278是Semtech公司推出的面向中国市场Lora射频IC(不支持支持862~1020MHz)。SX1278的DIO0~DIO5这六个引脚对应的事件响应如下表所示。
SWITCH对应切换的工作状态,如下表所示。
根据上文所述系统架构,本文设计并实现了相应的系统,节点和集中器均采用SX1278实现,具有相同的硬件结构,其中最主要的部分就是节点和集中器的射频模块。
以上所述只是本发明的较佳实施方式,但本发明并不限于上述实施例,只要其以任何相同或相似手段达到本发明的技术效果,都应落入本发明的保护范围之内。