APP下载

LoRa低成本全双工网关的设计与实现

2019-02-18陈孝松

无线电通信技术 2019年2期
关键词:全双工树莓网关

陈孝松

(浙江理工大学 信息学院,浙江 杭州 310018)

0 引言

近年来,物联网开始受到广泛重视,传统的无线网络不适合应用于物联网业务,因为物联网的对象只有在需要信息传输时,才会去连网尝试传输,其他时间大多是在等待和休眠。当物联网设备的状态为休眠时,选择下线释放所占用的频谱资源[1]。

LoRa是一种低功耗广域物联网(Low-Power Wide-Area Network,LPWAN)的长距离通信技术,可以解决传统无线网络传输距离远和低功耗不可兼得的矛盾[2]。与WiFi[3],Zigbee,BLE,2G/3G/4G等网络相比,LoRa技术的最大优点是传输距离远[4],受其他信号的干扰小[5]。与NB-IoT技术相比,LoRa在功耗和响应时间实时性方面的性能更优[6]。

现在大多数公司采用的LoRa节点是基于Semtech公司提供的SX1278模块[7],LoRa网关是基于美国Semtech公司提供的SX1301模块[8]。由SX1301模块组成的LoRa网关由于硬件的限制,只能工作在半双工模式下,即接收和发送不能同时工作。

为了解决这个不足,本文设计了一种全双工LoRa网关[9]。把低成本的SX1278模块添加到原始的LoRa网关上,实现了同时接收与发送数据[10-12]。

1 系统架构

1.1 原始LoRaWAN系统

原始LoRaWAN系统架构如图1所示[13],LoRa节点由MCU(STM32)和SX1278模块构成,LoRa网关由树莓派和模块SX1301构成,LoRa服务器由LoRa Gateway Bridge,LoRa App Server,LoRa Server构成。

图1 原始LoRa系统架构

LoRa节点的MCU(STM32)控制SX1278调制解调模块,只能在一个信道上接收或发送,处于半双工工作模式[14]。

LoRa服务器LoRa Gateway Bridge负责把LoRa网关的UDP数据包转换为MQTT数据包发送给LoRa App Server,或者把LoRa App Server的MQTT数据包转换为UDP数据包发送给网关。LoRa Server负责处理LoRa网络数据。LoRa App Server负责处理LoRa的应用数据。

LoRa网关的树莓派(MCU)控制SX1301调制解调模块,只能在一个信道上接收或发送,也处于半双工工作模式[15]。

LoRa信号的传输时间为前导码时间加上有效负载时间:

Tpacket=Tpreamble+Tpayload。

(1)

前导码的传输时间为:

Tpreamble=(npreamble+4.25)Tsym,

(2)

有效负载的传输时间为:

Tpayload=npayload×Tsym。

(3)

npayload为有效负载符号数,定义如下:

npayload=8+max(ceil(tmp)(CR+4),0),

(4)

(5)

式中,PL为有效负载的字节数,SF表示扩频因子,H取0或1,DE取0或1,CR为编码率。

1.2 改进LoRaWAN系统

原始LoRa网关是半双工网关,在同一时刻,只能接收或发送数据。原始LoRa网关在接收数据时,可以同时接收8个信道的数据;在发送数据时,在同一时间只能在一个信道上发送一个数据包。如图2所示,在原始LoRa网关加上SX1278模块后,就成为一个全双工的网关,上行数据和下行数据在LoRa网关上互不影响,极大的提高了信道利用率。

图2 改进的LoRa系统架构

2 全双工LoRa网关的优势

从成本角度考虑,SX1278模块是SX1301模块的几十分之一,这是提出全双工网关设计的最大优势[16]。

从性能角度考虑,原始LoRa网关的SX1301模块在进行发送数据时,只能在一个信道上发送。SX1301模块在发送工作模式时,所起到的作用和SX1278模块一样。

从可实现角度考虑,针对SX1278模块和SX1301模块,芯片厂商已经放出免费和开源的代码,只需在开源代码上进行修改,就可以实现功能。

3 设计与实现

网关的硬件连接图如图3所示,树莓派负责控制数据的发送与接收,同一时刻只能有一个模块和树莓派进行SPI通信。当LoRa网关接收数据时,SX1301模块使能,SX1278模块不使能,树莓派只和SX1301模块通信。当LoRa网关发送数据时,SX1278模块使能,SX1301模块不使能,树莓派只和SX1278模块通信。

图3 网关硬件连接图

由此可知,对每一个模块而言,数据包的传输方向是固定的,如图4所示。对SX1301模块,只工作在接收模式,接收来自LoRa节点的数据。对SX1278模块,只工作在发送模式,把数据发送给LoRa节点。图5为LoRa网关程序流程图。

图4 数据包传输方向

图5 LoRa网关程序流程图

如图5所示,除了原始LoRa网关程序里具有的上行和下行线程外,改进后的LoRa网关程序另外创建了一个线程用于控制SX1278模块的数据发送。上行线程从SX1301缓存中读取数据,上传至LoRa服务器。下行线程收到LoRa服务器的数据后,不是送至原先的SX1301缓存中,而是存入SX1278缓存中。SX1278处理线程从缓存中读取到数据后,先对数据包中的时间戳进行合法性判断,然后定时通过SX1278调制解调模块发送至LoRa节点。

4 实验结果与局限性

4.1 实验结果与性能比较

实验中,服务器使用内核版本为4.10.0-28-generic的Ubuntu 16.04.2的操作系统。在服务器上部署GO,Redis,PostgreSQL与Node.js开发环境,处理LoRa网络数据和应用数据。

为了使实验现象更明显,所有的LoRa节点在同一个信道上发送,上行信号有效负载字节数PL=50,根据式(1)计算可知,当扩频因子SF=12,编码率CR=1,前导码长度为8时,上行信号传输时间为2.794 s。下行信号有效负载字节数PL=20,传输时间为1.811 s。上行信号每个节点发送周期20 s,下行信号一个节点接收周期为10 s,上下行信号都不需要确认帧。

图6为LoRa节点日志记录,对每种情况,数据包发送总数为1 000个。

图 6 LoRa节点日志

节点个数与上行信号发送成功率的关系如表1所示,可以看出,在数据量不大的情况(4个节点)和数据量较大的情况(14个节点),改进的LoRa网关都能起到全双工的作用。当下行信号发送时,原始的半双工网关上行信号的发送成功率下降了很多,而改进后的全双工网关上行信号的发送成功率不受任何影响。

表1 节点个数与上行信号发送成功率的关系

4.2 局限性

原始LoRa网关的SX1301模块的发送时间同步是芯片完成的,而改进LoRa网关的SX1278模块的发送时间同步是靠软件完成的。本实验的时间同步是在树莓派Linux系统的用户态下完成的,Linux系统用户态和内核态之间的通信有一定的延迟。本实验网关上的Linux系统因为所运行的程序比较单一,所以Linux系统用户态和内核态通信的延迟对实验结果没影响。但是如果Linux系统运行的程序过多时,就会出现延迟非常大的情况,就会导致发送时间的同步有很大的误差。如果能把SX1278的发送时间同步在树莓派Linux系统的内核态中完成,就能把延迟降到最小,时间同步也会更加精确,这是需要进一步做的工作。

5 结束语

本文从实际应用出发,研究和实现了把原始的半双工LoRa网关改进成全双工LoRa网关的设计方案。SX1301模块的成本非常高,而SX1278模块相对而言成本非常低,把二者结合做成全双工网关的成本和原始LoRa网关的成本几乎一样,而性能却大幅提升。网关可以发送和接收LoRa上行信号和下行信号。硬件和软件实现也并不复杂,都是在原来开源代码的基础上进行修改。由实验结果可知,改进后的全双工LoRa网关可以正常工作,相对原始的半双工LoRa网关性能提升了,LoRa网络信道利用率也得到提高。

猜你喜欢

全双工树莓网关
基于FPGA的工业TSN融合网关设计
全双工多中继网络的中断分析与中继决策
一种主从冗余网关的故障模式分析与处理
基于树莓派的骑行智能头盔设计
天地一体化网络地面软网关技术及其应用
车联网网关架构的设计
浅析异构密集网络中干扰管理技术
黄金水果红树莓
基于GRT平台的全双工WiFi设计与实现
e络盟率先推出第三代树莓派