利用NRF24L01 实现设备的网格状无线互联
2020-06-02郑蓓林赵克安
刘 军 郑蓓林 黄 萍 赵克安
(1.浙江中控自动化仪表有限公司;2.杭州职业技术学院)
在物联网时代, 各个设备之间实现互联、相互通信已经成为一种必然趋势。 目前市场上的物联技术,远距离的可以采用运营商布设的NB-IoT网络,中距离的可以采用Lora 无线方案,短距离的可以采用WiFi、蓝牙及RFID 等互联方案。 笔者讨论一种超低成本、简单便捷,在场区范围内的无线物联方案。
1 NRF24L01 简介
NRF24L01 是一款工作在2.4~2.5GHz 世界通用ISM 频段的单片无线收发器芯片,3.3V 供电。该芯片可通过SPI 接口配置126 个1Mbit/s 速率的频点,或者63 个2Mbit/s 速率的频点,SPI 的最大速率可达10Mbit/s。 最大发射功率0dB 时供电电流30mA,最大通信距离为可视100m,稳定收发距离10m。 加上功放芯片,最大发射功率可达20dB,此时供电电流250mA,最大通信距离为可视1 000m,稳定收发距离100m。芯片可设6 个物理地址,可提供6 个通道单独通信。 每个通道具有CRC 校验功能、 自动应答和自动重发功能。自动延迟重发的时间与次数可自由配置。 每帧最大为32 字节,拥有3 级缓存,可以通过SPI 接口查询寄存器状态后接收数据。
2 组网方案
NRF24L01 的6 个通道的物理地址都有5 个字节的长度,其中前两个自由分配,其余4 个地址的前4 个字节必须与第2 个地址的前4 个字节相同。 这样,把第1 个通道地址留作他用,第2个通道地址作为本网格的广播接收地址, 其前4个字节也可以作为本网格的网格号,最后一个字节定为255 (0xFF)。 假如网格号为【0xC2、0xC2、0xC2、0xC2】, 则第2 个通道物理地址为【0xC2、0xC2、0xC2、0xC2、0xFF】。第3~6 通道的物理地址分别设为 【0xC2、0xC2、0xC2、0xC2、0x00】【0xC2、0xC2、0xC2、0xC2、0x01】【0xC2、0xC2、0xC2、0xC2、0x02】【0xC2、0xC2、0xC2、0xC2、0x03】。 除了广播地址,每个节点可以分到4 个不同的地址,这样依次按顺序分配,整个网格可以有63 个节点。 规定地址末位为0、4、8、……,逻辑方向向左;地址末位为1、5、9、……,逻辑方向向下;地址末位为2、6、10、……,逻辑方向向右;地址末位为3、7、11、……,逻辑方向向上,形成如图1 所示的网格网络。 网格外围的32 个地址为无效地址,规定图1 所示相邻的地址相互通信。 要实现网格内节点能相互通信,需把所有节点设在同一个频点上。
3 路由设计
为了避免网格内节点无线信号的相互干扰,首先关闭自动应答与自动重发功能,以令牌的方式进行数据传输[1]。 设定如下路由规则:每个节点按“左-下-右-上”的顺序尝试连接,传递发送的数据包;边缘节点无效地址的方向不进行连接尝试;本节点接收或发出的通道不再收发同一数据包,最后发送通道只接收盲端退回的同一数据包; 已被遍历的节点拒绝接收非退回的数据包。例如图1 中的地址为31 的通道所在节点发起访问,发送数据到地址为63 的通道,按上述路由规则,其路由过程如图2 所示。 遍历所有节点,最终到达终点。 如果终点返回应答数据,则按同样的路由规则由终点发往起点。
图1 网格逻辑设计
图2 网格路由
在实际工程中,各节点不会按图1 所示顺序安装,但逻辑上还是可以按图1 的顺序来进行路由,但可能存在路由被撕裂的情况。 按笔者的路由规则,只要不被完全撕裂,形成孤岛,还是可以遍历到每一个节点。 图3 所示为被撕裂情况下的路由过程。 如果终点是图中的A点或B点,只要数据包被退回到C点时就可以遍历到A点或B点了。
图3 被撕裂情况下的路由
本网格型网络总连接数63×4-32=220 个。 最坏情况,数据包被退回两次,一次发送一次退回,再次发送与退回, 连接次数220×4=880。NRF24L01 进入发射状态需要10μs,切换回接收状态需要130μs,共140μs。 设置连接超时1ms,则最坏遍历时间为(1+0.14)×880=1003.2ms,故本方案具有较高的实用性。
4 网格路由的优化与拓展
上述路由规则可做进一步简化,发起的节点可以尝试直接发目标节点,如果目标节点收到数据包, 则回复一个应答包就立即可以完成通信。如果没有得到回复,则可以尝试连接目的节点的4 个逻辑方向的附近节点, 通过这4 个节点进行直接传递,快速完成数据包的传递。 如果4 个附近节点不能连接再进行全网格的遍历。
在实际使用过程中63 个节点远远不够使用,需要多个网格。 在一个网格中可以任选一个节点与其他网格的一个节点作为网关,实现多层网格的互联,形成立体空间的节点互联。
5 结束语
利用NRF24L01 实现设备的网格状无线互联,在工厂、楼宇及大型建筑等场合有较多的需求,不管是新建信息化工程还是更新换代,都十分便利。 在此基础上再设计一套合适的应用层协议,可以方便地实现节点设备的物联,提高整个系统的智能化、信息化水平。