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

2019-02-18 01:51:10陈孝松
无线电通信技术 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网络信道利用率也得到提高。

猜你喜欢
全双工树莓网关
基于改进RPS技术的IPSEC VPN网关设计
基于树莓派的骑行智能头盔设计
电子制作(2019年11期)2019-07-04 00:34:32
RLS算法在同时同频全双工系统中的自干扰抑制性能分析
基于树莓派的远程家居控制系统的设计
电子制作(2017年17期)2017-12-18 06:40:43
基于GRT平台的全双工WiFi设计与实现
响应面法优化红树莓酒发酵工艺
中国酿造(2016年12期)2016-03-01 03:08:19
同频同时全双工数字自干扰抵消算法
5G全双工技术浅析
移动通信(2015年15期)2015-12-26 08:52:40
LTE Small Cell网关及虚拟网关技术研究
移动通信(2015年18期)2015-08-24 07:45:08
应对气候变化需要打通“网关”
太阳能(2015年7期)2015-04-12 06:49:50