李 玲,郭晓玲,武仁杰,徐 婷
(河北北方学院 信息科学与工程学院,河北 张家口 075000)
无线传感器网络(WSN)是由大量传感器节点通过无线通信技术构成的自组织网络,集成了传感器、网络、计算机、嵌入式系统等技术,用来采集、处理和传输网络覆盖范围内感知对象的信息。ZigBee是建立在IEEE802.15.4标准基础上的低功耗个域网协议,具有低成本、近距离、自组织、低功耗、低数据传输率、低复杂度等特点,较蓝牙、WiFi等无线技术,更适用于无线传感器网络,也是无线传感器网络中采用较多的无线传输协议[1-2]。但是,ZigBee属于短距离技术,它的协议栈也并不支持IP协议。ZigBee网络中节点的数据要到达控制中心或者云端,必须经过网关进行协议转换。现已有将ZigBee与以太网、WiFi、GPRS、3G、4G等技术融合的研究[3-6],使ZigBee网络的数据能够到达外部网络。
NB-IoT(窄带物联网)是IoT领域新兴的技术,支持低功耗设备在广域网的蜂窝数据连接,是低功耗广域网技术,具有部署灵活、窄带、低速率、低成本、高容量、深度覆盖、低功耗等特点[7-9]。NB-IoT属于广域网技术,直接获取IP地址便可将数据传输到互联网,具有直达云端的优势。单个NB-IoT节点向运营商支付的业务费也较低。
结合ZigBee技术和NB-IoT技术特点,扬长避短,本文提出融合NB-IoT及ZigBee技术的网关设计,满足物联网应用对于“远”“近”距离可扩展,组网灵活、安全可靠的需求。
传感器网络一般由多个节点和一个汇聚节点组成。不同的应用场合,对传感器网络布点数量的要求不同,传感器网络的拓扑结构也不相同[10]。但是,传感器网络要与互联网相连接,必须经过网关进行数据转发。ZigBee网络一般由协调器节点、路由器节点及终端节点组成。协调器是ZigBee网络的中心。该设计将ZigBee协调器与NB-IoT模块BC95通过串口连接,实现传感器网络与互联网的连接。ZigBee协调器是ZigBee网络的控制中心,收集各个节点的数据,并通过串口将数据发送给BC95模块。BC95模块通过NB-IoT网络将数据传输到云平台或者远程控制中心。云平台或者远程控制中心的指令通过NB-IoT网络到达ZigBee协调器,协调器再将指令进行转发。网络整体体系结构如图1所示。
ZigBee芯片选用德州仪器生产的CC2530F256,CC2530F256芯片是ZigBee片上系统解决方案,基于IEEE802.15.4标准协议,集成了领先的RF收发器的优良性能,具有业界标准的增强型8051内核和256 kB的闪存空间,体积小。CC2530F256为网关的核心处理部分,一是具有ZigBee协调器的功能,二是通过串口与BC95模块相连,通过AT指令控制BC95模块进行网络连接、数据发送等功能。CC2530硬件设计如图2所示。
图1 网络整体体系结构
图2 CC2530硬件设计
NB-IoT模块选用BC95-B8,B8适配电信网络。华为研发了业界第一款支持NB-IoT网络的芯片和Boudica120芯片。移远基于Boudica120芯片开发了BC95模块。BC95是一款高性能、低功耗的NB-IoT无线通信模块。
CC2530F256外设中具有两路串口:一路通过串口转USB芯片转换与PC连接,进行调试用;另一直接与BC95相连进行数据收发。串口连接如图3所示。
图3 CC2530串口连接
CC2530的电源管理采用两路AMS111-7芯片,能够同时稳定提供3.3 V、5 V电源,分别给CC2530和BC95模块使用。
ZigBee协议栈采用TI公司的Z-Stack协议栈。Z-Stack协议栈具有OSAL操作系统抽象层,可以看做是一种任务分配资源的机制,从而形成了一个简单多任务的操作系统。该设计中将协调器节点作为网关节点,系统软件要包含协调器的功能,同时也要包含两个异构网络之间数据转发的功能。CC2530与BC95之间通过串口连接,ZigBee协议由zstack协议栈处理,NB-IoT协议由BC95模块处理,两种异构网络的数据交换主要为应用层数据的交换。NB-IoT网络数据的发送及接收通过串口发送AT指令对BC95模块进行控制。应用层软件包含三个事件:(1)串口数据接收事件,处理BC95模块返回的信息,若有数据下发,则转发给相应的ZigBee节点;(2)ZigBee网络数据接收事件,处理ZigBee节点反馈的信息,并将数据转发给BC95模块;(3)定时器事件,发送心跳帧,定时反馈状态数据。应用层软件流程如图4所示。
图4 应用层软件流程
BC95模块控制主要包括开机入网、数据接收和网络状态检测。
(1)NB-IoT入网,通过发送一些列AT指令使BC95模块附着到NB网络。
AT+CMEE=1启动结果码;
AT+CFUN=1开启模组的射频开关;
AT+CIMI查询IMSI号码;
AT+CGSN=1查询IMEI号码;
AT+CSQ确认当前射频信号强度;
AT+CGATT=1激活网络配置;
AT+CGATT确认网络是否被激活,返回值为1表示网络激活;
AT+CEREG确认模块网络注册状态,返回值为1表示注册成功;
AT+CSCON确认模块连接状态,返回值为1表示连接成功;
AT+NSMI=1打开消息发送指示;AT+NNMI=2设置系统消息提示。(2)数据接收,使用UDP协议进行模块与云服务器之间的数据传输。
使用AT+NSOCR创建socket,如UDPAT+NSOCR=DGRAM,17,10 000,1;
使用AT+NSOST发送数据,如AT+NSOST=0,115.29.240.46,6 000,2,6 570;
若有数据下发,模块返回+NSONMI∶0,10(提示有10字节数据到NB模块);
使用AT+NSORF指令读取数据,如AT+NSORF=0,10。
为了远端监控进程能读懂采集的数据,网关能够识别下发的控制命令并转发给相应的ZigBee节点,还需定义通信帧结构。定义通信帧结构,如图5所示。
图5 通信帧结构
帧头:一帧数据的开始标志。
帧长度:包含帧头至帧尾的整个帧的长度。
源地址、目的地址:ZigBee节点的64位MAC地址,数据上报时目的地址为0,数据下发时源地址为0。
帧类型:包括数据上报、命令下发、心跳帧和确认帧几种类型。数据上报帧由ZigBee终端节点主动发起;命令下发帧,为确保终端节点是否收到,终端节点收到后需上报确认帧;心跳帧,网关定时上报,维持网络活性。
数据区:数据区由命令字、数据长度和数据组成,一个帧可携带多个数据区。当帧为数据帧时,命令字指示采集的何种数据,如温度、湿度、光照度等,数据长度指示当前数据区数据的长度。当帧为命令下发帧时,命令字指示何种控制命令,数据为下发的数据。当帧为确认帧时,命令字指示何种控制命令,数据为成功或失败的标识。当帧为心跳帧时,数据区为空。
帧尾:一帧数据结束标志。
协议流程:终端节点上报数据,网关转发到NB-IoT网络再到云平台;网关向云平台发送心跳帧保持网络通信顺畅;网关接收到云平台下发的指令转发给终端节点,终端节点收到并上报确认帧,网关转发确认帧到云平台;若网关收不到终端节点的确认帧,则由网关上报失败的确认帧。
网络环境。ZigBee网络的采集数据由NB-IoT网络上报到云平台,云平台再将数据透传给本地服务器。
数据上报测试。搭建温湿度采集系统进行网关功能测试,测试环境为实验室室内外温湿度;布置3个ZigBee节点,一个节点室外,一个节点靠窗,一个实验室内部;数据通过NB-IoT网络传输到云平台再透传到本地服务器,本地服务器通过网络连接工具接收数据。温湿度采集数据半个小时上报一次,连续测试5天,系统稳定。图6是服务器端数据接收的实时显示。
图6 服务器端数据接收
数据下发测试。模拟测试环境为控制ZigBee节点的LED开关,服务器端随机下发控制指令。当ZigBee节点为工作状态时,服务器端会收到成功的确认;当ZigBee节点处于休闲状态时,服务器端会收到失败的确认。
该系统结合ZigBee自组网、无需付费和NBIoT直达广域网的优势,设计了ZigBee/NB-IoT无线传感器网络网关。测试结果表明,设计方案运行稳定,且系统具有成本低、操作方便、便于安装等特点,具有较高的使用价值。