文献标识码: A
文章编号: 0258-7998(2014)04-0019-03
物联网的概念最初在1999年提出,其基本思路是:通过射频识别(RFID)、红外感应器、全球定位系统、激光扫描器、气体感应器等信息传感设备,按约定的协议,把任何物品与互联网连接起来,进行信息交换和通信,以实现智能化识别、定位、跟踪、监控和管理的一种网络。近些年,物联网的概念总是和无线传感器网络的概念共同提出。无线传感器网络由部署在监测区域内的大量微型传感器节点组成,通过无线通信方式形成一个网状拓扑,网络中的节点能够实现路由功能,实现信息多跳传输。无线传感器网络将逻辑上的信息世界与客观上的物理世界融合在一起,极大地延伸了人们的感知领域和范围[1]。
目前对于传感器网络节点的要求一般是结构简单,成本低廉,能够长时间地工作。因此目前较为常见的解决方案一般会选用ZigBee协议作为传感器网络或是物联网的通信协议。ZigBee协议与传统的WiFi、蓝牙等通信协议相比,拥有较低的功耗,并能实现多跳传输的功能,但相应的传输速率也较低,适合传感器网络这类数据量不会很大,但节点规模可能非常大的网络应用。
目前ZigBee网络节点大多数是基于TI的CC系列芯片和Ztack协议栈,这类基于C语言的协议栈往往存在着开发困难、编程复杂等缺点,无法帮助开发人员迅速地搭建基于ZigBee网络的传感器网络应用[2]。
本文提出了一种基于SNAP OS和UART的异系统通信架构,SNAP OS本身就是兼容ZigBee通信标准的嵌入式操作系统,能够很好地实现多跳和多点通信。在此基础上,利用工作在透传模式下的SNAP OS,提供给用户一组基于串口的通信协议,使得用户只需懂得简单的串口编程,即能实现多点对多点的传感器网络应用的设计,极大地提升了传感器网络的开发效率。
1 SNAP OS及相关硬件的介绍
SNAP OS是由美国Synapse公司发布的一套能运行在各类计算平台上的网络操作系统,该系统的总体框图如图1所示。SNAP OS能够兼容目前所有主流的通信协议,并进行异系统之间的数据路由传输。而该操作系统的另一大特色就是其专门为嵌入式平台所开发的SNAPpy虚拟机系统,能够利用一种与python语法兼容的脚本语言进行编程,并且由于其解释执行的特点,能够在系统运行的状态下进行应用编程,极大地提高了系统开发的灵活度和便利度。
由于SNPA OS目前还不是开源的操作系统,因此它只能运行在由Synapse公司或其合作伙伴所开发的硬件平台上。本文在设计异系统多点通信架构时,选用了目前国内唯一能获得的ZIC2410模块作为系统的主要无线通信模块。该无线通信模块结构如图2所示。模块的整体尺寸十分小巧,并且已经集成了射频收发的硬件电路和PCB印刷天线及射频端子,对于需要二次开发的用户而言,只需设计底板即可,大大提高了系统的开发效率。而ZIC2410芯片则是一块以8051作为内核、集成了基带Modem收发器的SoC,同时它还拥有丰富的常规外设,基本能满足用户日常开发所需。
2 ZigBee网络节点硬件设计
本文所采用的ZIC2410模块的最小系统如图3所示,其在运行SNPA OS之后,原生支持ZigBee网络的多跳、节点中继等特性,并且由于其利用SNAPpy编程语言进行开发,因此用户只需几行代码即能使其运行在串口透传模式下,并实现多点通信的功能。但由于ZIC2410采用的是8051内核,其运行效率并不是很高,当工作在透传模式下时,操作系统的大部分运行时间将被透传任务所占据,系统对于需要高运算负荷任务的处理效率大大降低[3]。
为了使本文所设计的异系统多点通信架构能够满足各种不同应用场合对于系统性能的要求,设计的ZigBee节点采用双处理器的架构,由ZIC2410芯片专门负责无线数据的收发和ZigBee协议栈的实现,而利用基于Cortex M3内核的LPC1754芯片来负责高运算负荷的任务,并利用其极为丰富的外设,极大地丰富了ZigBee节点的应用场合。
本文所设计的双处理器ZigBee节点系统框图如图4所示,LPC1754和ZIC2410芯片采用串口进行通信。同时,利用LPC172自带的全速USB2.0接口和UART接口,拓展了USB CDC总线和485总线接口[4]。
3.2 通信数据包格式
用户平面的通信数据包如图6所示,其中接收者地址和发送者地址可以是承载用户平面通信的ZigBee节点在系统中的节点编号,也可以是用户平面本身所指定的一些地址信息。由于UART平面和ZigBee平面将广播所收到的所有用户平面数据包,对于用户平面来说完全透明,因此该地址无需和ZigBee节点地址一一对应。此外,该数据包格式还对链路层的信息进行了额外的打包过程,将链路层信息中每7 B数据的最高位提取出来,形成一个新的字节,放在这7 B的末尾,并将这8 B的最高位置0。这样做的好处是可以把帧起始符和结束符的最高位置1,从而使得最终在无线链路上传输的数据除了起始符和结束符以外的所有字节最高位都是0,不会造成帧起始符和结束符的误判[6-7]。
3.3 通信协议
首先,位于UART平面的LPC1754将工作在透明传输或ACK传输模式下。
(1)透明传输:LPC1754不负责任何对于3.2中通信数据包的校验,只负责将从用户平面收到的数据转发出去,所有数据包的解析与校验均在用户平面完成。其优点是用户平面直接透明传输,编程和协议均较为简单。而缺点则是由于无线链路的不确定性,使得系统整体的通信速率较低,可能会出现较大的重传概率。
(2)ACK传输模式:LPC1754负责用户平面下发的数据包的校验和重传确认。具体实现方式如下:LPC1754不再透明传输从用户层传下来的数据,而是将用户层传输过来的数据存储在缓存中,并负责对用户平面的数据进行校验,如果校验不通过,则直接向用户平面发起重传请求。其优点是有效降低了通信的延时,并提高了通信链路的可靠性;而缺点则是编程较为复杂,节点模块的程序需要根据具体应用调整参数。
其次,位于ZigBee平面的ZIC2410也将工作在两种模式下。
(1)串口广播模式:ZIC2410将收到的数据广播给某一分组的所有节点。这样做的优点是ZIC2410将收到的数据包直接广播出去,无需与UART平面有ACK过程,简化了UART平面编程的难度并降低了运行负荷。而这样做的缺点也十分明显,由于ZIC2410将数据直接广播出去,因此当用户平面下发的数据较大的情况下,无线链路上所承载的数据负荷将成倍增加,从而造成了ZigBee平面通信效率的下降。
(2)串口点对点模式:UART平面在将数据下发给ZigBee平面之前,先对ZIC2410下一次无线传输的接收节点的地址进行配置,ZIC2410将根据这一地址来进行后续数据包的点对点无线传输。这样做的优点十分明显,由于ZIC2410工作在点对点模式下,因此无线链路传输的效率和可靠性将大大增加,但由此也会造成UART平面的传输效率降低,需要额外的REQ-ACK过程。
本文所提出的基于ZigBee和UART的异系统多点通信架构很好地利用了ZigBee协议支持网状拓扑、多点、节点中继的特点以及UART编程简单的特点,为用户搭建物联网和无线传感器网络提供了极大的便利。同时,通过不同工作模式的结合和灵活切换,能够满足各类不同的应用场合,有望成为下一代物联网的主流通信平台。
参考文献
[1] 胡杰.浅谈ZigBee无线通信网络与物联网之间互补式发展[J].科技风,2012(01):25.
[2] 王萌.基于ZigBee技术的智能养殖系统[J].科技风,2012(07):27-28.
[3] ZigBee联盟.ZigBee技术引领无线数字新生活[J].电脑知识与技术,2006(9):29-34.
[4] 朱向庆,王建明.ZigBee协议网络层的研究与实现[J].电子技术应用,2006,32(1):129-132.
[5] 夏恒星,马维华.基于CC2430的无线传感器网络节点设计[J].电子技术应用,2007,31(5):45-47,54.
[6] 石繁荣,黄玉清,任珍文.基于ZigBee的多传感器物联网无线监测系统[J].电子技术应用,2013,34(3):96-99.
[7] 徐书芳,王金海,宫玉龙,等.基于ZigBee的智能家居控制系统的研究与设计[J].电子技术应用,2013,39(8):80-83.