论文部分内容阅读
摘 要: 物联网网关是连接感知层和网络层的桥梁,是沟通物联网与目前流行网络的纽带。文章设计的一种基于ARM的物联网多网互联网关,将Zigbee无线传感器网络与Wi-Fi网络、以太网络进行互连,实现对Zigbee网络节点的控制。该网关硬件方面以ARM9系列S3C6410为主控芯片,采用模块化的设计思路,分别搭建了相应的外围功能模块;软件方面,通过移植Linux嵌入式操作系统以及编写协议转换程序,实现了网络的互联,通过搭建Web服务器,设计应用通信协议及编写CGI网关应用程序,实现了对网关的控制与管理。经测试,该网关性能稳定,实现了三网间的数据通信。
关键词: 网关; ZigBee; Wi-Fi; 以太网; 互联
中图分类号:TP391 文献标志码:A 文章编号:1006-8228(2016)08-28-03
Abstract: The Internet of Things gateway is a bridge which connects the perceptual layer and the network layer, and it is the link between IoT and current popular networks. In this article, a kind of IoT multi-network gateway based on ARM is designed to connect ZigBee Network with Wi-Fi network or Ethernet, and realize the control to the ZigBee nodes. In the hardware, ARM9 series S3C6410 is used as the main control chip of the gateway and the corresponding peripheral functional modules are set up by using the modular design concept; in the software, the gateway achieves interconnection of networks by transplanting embedded Linux operating system and developing protocol conversing programs. And by building Web server, designing application communication protocol and programming CGI gateway application, the control and management of the gateway are realized. According to the test, this gateway is stable, and the data communication between the three networks is implemented.
Key words: gateway; Zigbee; Wi-Fi; Ethernet; interconnection
0 引言
传感网是物联网感知层的主要应用技术,也是物联网的支撑技术。而无线传感器网络(WSN)是传感网中的重要组成部分,在目前的WSN中,ZigBee凭着其低功耗、低速率、低成本、高安全性等诸多特性在WSN中广泛应用[1-3]。由于当前通信网络种类比较多,各种网络之间存在较大的差异[4],要将这些异构网络融合起来,必须要使用网关设备将其互联,网关就是建立在网络层之上的协议转化器,可实现不同子网的信息交换与通信。由于目前以太网与Wi-Fi网络在现实生活中广泛使用,所以将ZigBee网络与以太网或Wi-Fi网络连接起来具有重要的现实意义。
本文设计的网关用于ZigBee网络与Wi-Fi网络及以太网通信,该网关接受ZigBee网络传送过来的信号,在ARM处理器控制处理下,分发到以太网及Wi-Fi网络中;同时该网关也可以接受来自以太网和Wi-Fi网络的控制信息,完成对ZigBee网络设备的控制。本文设计的网关设备在应用中的作用如图1所示,对于物联网来说,它是连接无线传感网络或互联网或其他智能设备(如手机、掌上电脑IPAD)的桥梁[5]。
1 网关硬件设计
本文设计的网关硬件结构如图2所示。网关采用三星公司ARM9微处器S3C6410做主控芯片,芯片上集成的UART0与ZigBee模块相连,芯片上集成的USB Host接口与Wi-Fi模块相连,以太网模块采用总线方式与主控芯片相连。内存采用SDRAM芯片,存储器采用Flash芯片,供电采用AC/220V,通过电源模块产生DC 5V、DC 3.3V等电压给各个模块供电。
ZigBee模块选用TI公司的一款工作在2.4GHz频段并兼容IEEE 802.15.4协议的片上系统芯片CC2530。在ZigBee通信模块中CC2530充当组网协调器角色,它与S3C6410之间通过串口UART方式进行通信,当S3C6410芯片收到Wi-Fi模块或以太网模块发送过来的数据或命令后,就会通过串口通知ZigBee协调器向网络中相应ZigBee节点发送信息,协调器会根据ZigBee节点地址向目标节点发送信息。网络内ZigBee节点终端设备会将收集到的信息以相反的路径发送到Wi-Fi网或以太网中。
Wi-Fi模块采用ralink的一款工作在2.4GHz频段并支持IEEE 802.11b/g协议的RT73/RT2571 Wi-Fi芯片。基于模块化思想,具体选用TP-LINK公司TL-WIN321G+型号USB普通网卡,该网卡通过在S3C6410芯片中移植Hostapd程序(Hostapd是实现USB Wi-Fi AP功能及授权服务的一个开源项目)可实现软AP点的功能。当Wi-Fi网络中的终端设备接入AP点后,终端设备发送或接收信息时,通过Wi-Fi通信模块的USB接口向S3C6410芯片的USB Host接口发送或接受信息,然后在S3C6410控制下与ZigBee网络或以太网络通信。 以太网模块采用DM9000A太网控制器芯片。DM9000A一端通过16位数据总线挂接到S3C6410的系统数据总线上,另一端与集成了网络变压器RJ45接口的HR911105A芯片相连接,这样可以使用普通网线连接网关。当以太网中数据经DM9000A芯片传送到S3C6410芯片时,S3C6410控制器分别通过内部集成的串口和USB Host接口向ZigBee模块和Wi-Fi模块传送信息,从而完成与ZigBee网络或Wi-Fi网络的通信。
2 网关软件构架
网关主控制器软件结构如图3所示,操作系统选择嵌入式Linux,它由BootLoader程序负责引导。通过编写Linux系统中DM9000A控制器端口读写驱动、UART串口读写驱动及USB Host端口的读写驱动程序,分别实现应用程序与各模块间的通信。由于Linux系统中包含一个完整的TCP/IP协议栈[4],所以通过移植Boa服务器(Boa是Linux下一个小巧的Web服务器,支持CGI程序),在应用层编写CGI程序实现客户端与网关间的信息交互与控制。在应用层编写网络协议转化守护程序,实现网络协议的相互转化。在网关应用层运行Hostapd守护程序,可实现Wi-Fi模块的AP点等功能。
至于ZigBee模块的软件结构,主要是基于Z-Stack的协议栈,它使用OSAL小型操作系统来实现多任务处理。ZigBee模块充当网络协调器角色,完成建网与组网功能,同时通过在协议栈应用层编写数据转发等程序,实现串口数据与ZigBee网络节点数据的转发等功能。即,ZigBee模块监听到来自ZigBee网络数据包时,将数据包发送给串口,网关主控制器通过串口接收数据;当监听到来自网关主控制器串口的数据时,ZigBee模块会根据相应的寻址方式将数据发往相对应节点。
3 关键技术处理
3.1 网络协议转化
由于网络协议标准的不同,要实现ZigBee网络、Wi-Fi网络、以太网络之间相互通信,必须在主控制器中实现网络协议的转化。对于Wi-Fi网络和以太网络,虽然其低层标准一个采用802.11,一个采用802.3,但它们网络传输层都执行TCP/IP协议,因此Wi-Fi网络和以太网络的转换可以使用NAT(Network Address Translation)技术,改变IP包头,使目的地址、源地址或两个地址在包头中被不同的地址替换即可,即通过移植Linux内核中的Netfilter模块及编写脚本文件可实现Wi-Fi网络和以太网络间报文的相互转发。但是ZigBee网络则不同,网络传输层没有执行TCP/IP协议,所以通过NAT技术解决不了网络间的相互转发,必须在主控制器中设计协议转化程序。该守护程序设计思想是将串口链路层数据经过TCP/IP协议的封装,即可完成与Wi-Fi网络、以太网络的通讯。具体来说当ZigBee网络来的串口数据向Wi-Fi网络、以太网络传输时,进入TCP/IP协议栈加上Wi-Fi头或以太网头、TCP/IP头及串口号等信息进行封装,然后再发往这些网络;当Wi-Fi网络、以太网络向串口发送数据时,是出TCP/IP协议栈分解的过程,即依次去掉每层的协议头分解出应用层数据,最后根据串口号字段值将信息发往相应串口,从而完成整个通讯过程。
3.2 ZigBee网络寻址
ZigBee网络内节点只有两种地址,即16位短的网络地址和64位长的物理地址。ZigBee网内通讯采用随机生成的16位短地址。由于ZigBee网络地址不是固定的,而64位物理地址是IEEE分配的全球惟一号,所以其他网络与ZigBee网络通讯时必须要建立物理地址与网络地址的一对一关系。因此在网关内部保存一张ZigBee网络内所有节点的物理地址和网络地址对应表,当ZigBee网络节点加入网络成功后,网关协调器就更新这张网络节点地址对应表。当Wi-Fi网络或以太网络与ZigBee网络节点通讯时采用的是64位物理地址,传输数据时,网关首先根据物理地址在表中查找它的网络地址,然后根据网络地址将数据发送到相应的ZigBee节点。
3.3 通信协议设计
ZigBee模块与主控制器S3C6410之间要实现信息交互,必须采用一定格式的通讯协议。表1是网关ZigBee模块与主控制器通讯时的帧格式,它采用32字节固定长度的帧格式与主控制器通讯,每一帧都是32字节,且带有帧头、数据和帧尾。除帧头和帧尾外,每一帧数据都有功能码、地址、有效数据和校验位组成。帧头为一特殊字符,占1个字节;功能码代表本帧数据需要执行的功能类型,占3个字节;地址位共占10个字节,代表所访问ZigBee网络节点的网络地址和物理地址,高8字节是物理地址,低2字节是网络地址; 数据长度占16字节,传送各个参数、变量与返回值及各种需要发送的数据;校验位占1个字节,是从功能码到数据尾的加和校验,所得的结果为检验字节;帧尾为一特殊字符,占1个字节。
当网关应用程序对ZigBee网内节点控制时,首先应用程序根据通讯协议格式向串口发送带有相应功能码的指令,网关ZigBee模块从串口得到该指令后,根据其中的功能码及地址位,依据3.2节ZigBee网络寻址方式向相应节点发送该命令,ZigBee网络节点在接收到含有功能码的指令后,完成相应的功能并收集相关信息。节点在收集完相关信息后,按通讯协议格式要求打包,将相应信息发往网关ZigBee模块,网关ZigBee模块在得到上述信息后转发到串口,S3C6410侦听到串口来的数据,然后将串口数据解包,即可获得相应反馈信息。网关CGI程序根据该通讯协议,实现对ZigBee网络的控制与管理。
4 结束语
本文设计的基于ARM处理器的网关,经测试很好的实现了ZigBee网络与WI-FI网络及以太网络的通信。但需要注意的是:由于Wi-Fi信号与ZigBee信号都使用2.4G无线频段,当其部署在同一环境中且Wi-fi信道与ZigBee信道重叠时,Wi-Fi通信会对ZigBee产生较大干扰。但在2.425GHz、2.450GHz、2.475GHz和2.480GHz四个频段上,ZigBee频段与Wi-Fi网络频段不存在重叠干扰现象,因此,ZigBee信号建议使用以上4个频段避免Wi-Fi信号的干扰。
参考文献(References):
[1] 余成波,李洪兵,陶红艳.无线传感器网络实用教程[M].清华大学出版社,2012.
[2] 成小良,邓志东.基于ZigBee规范构建大规模无线传感器网络[J].通信学报,2008.29(11):158-164
[3] S. R. Ramyah. Load Density Analysis of Mobile ZigBee Coordinator in Hexagonal Configuration[J]. Wireless Sensor Network,2012.4(3):59-64
[4] 王绪海,姚晓峰.基于嵌入式系统的物联网网关的设计[J].信息通信,2016.157(1):64-67
[5] 张文华等.基于嵌入式Web服务器的物联网网关设计[J].四川大学学报(自然科学版),2013.50(5):962-966
关键词: 网关; ZigBee; Wi-Fi; 以太网; 互联
中图分类号:TP391 文献标志码:A 文章编号:1006-8228(2016)08-28-03
Abstract: The Internet of Things gateway is a bridge which connects the perceptual layer and the network layer, and it is the link between IoT and current popular networks. In this article, a kind of IoT multi-network gateway based on ARM is designed to connect ZigBee Network with Wi-Fi network or Ethernet, and realize the control to the ZigBee nodes. In the hardware, ARM9 series S3C6410 is used as the main control chip of the gateway and the corresponding peripheral functional modules are set up by using the modular design concept; in the software, the gateway achieves interconnection of networks by transplanting embedded Linux operating system and developing protocol conversing programs. And by building Web server, designing application communication protocol and programming CGI gateway application, the control and management of the gateway are realized. According to the test, this gateway is stable, and the data communication between the three networks is implemented.
Key words: gateway; Zigbee; Wi-Fi; Ethernet; interconnection
0 引言
传感网是物联网感知层的主要应用技术,也是物联网的支撑技术。而无线传感器网络(WSN)是传感网中的重要组成部分,在目前的WSN中,ZigBee凭着其低功耗、低速率、低成本、高安全性等诸多特性在WSN中广泛应用[1-3]。由于当前通信网络种类比较多,各种网络之间存在较大的差异[4],要将这些异构网络融合起来,必须要使用网关设备将其互联,网关就是建立在网络层之上的协议转化器,可实现不同子网的信息交换与通信。由于目前以太网与Wi-Fi网络在现实生活中广泛使用,所以将ZigBee网络与以太网或Wi-Fi网络连接起来具有重要的现实意义。
本文设计的网关用于ZigBee网络与Wi-Fi网络及以太网通信,该网关接受ZigBee网络传送过来的信号,在ARM处理器控制处理下,分发到以太网及Wi-Fi网络中;同时该网关也可以接受来自以太网和Wi-Fi网络的控制信息,完成对ZigBee网络设备的控制。本文设计的网关设备在应用中的作用如图1所示,对于物联网来说,它是连接无线传感网络或互联网或其他智能设备(如手机、掌上电脑IPAD)的桥梁[5]。
1 网关硬件设计
本文设计的网关硬件结构如图2所示。网关采用三星公司ARM9微处器S3C6410做主控芯片,芯片上集成的UART0与ZigBee模块相连,芯片上集成的USB Host接口与Wi-Fi模块相连,以太网模块采用总线方式与主控芯片相连。内存采用SDRAM芯片,存储器采用Flash芯片,供电采用AC/220V,通过电源模块产生DC 5V、DC 3.3V等电压给各个模块供电。
ZigBee模块选用TI公司的一款工作在2.4GHz频段并兼容IEEE 802.15.4协议的片上系统芯片CC2530。在ZigBee通信模块中CC2530充当组网协调器角色,它与S3C6410之间通过串口UART方式进行通信,当S3C6410芯片收到Wi-Fi模块或以太网模块发送过来的数据或命令后,就会通过串口通知ZigBee协调器向网络中相应ZigBee节点发送信息,协调器会根据ZigBee节点地址向目标节点发送信息。网络内ZigBee节点终端设备会将收集到的信息以相反的路径发送到Wi-Fi网或以太网中。
Wi-Fi模块采用ralink的一款工作在2.4GHz频段并支持IEEE 802.11b/g协议的RT73/RT2571 Wi-Fi芯片。基于模块化思想,具体选用TP-LINK公司TL-WIN321G+型号USB普通网卡,该网卡通过在S3C6410芯片中移植Hostapd程序(Hostapd是实现USB Wi-Fi AP功能及授权服务的一个开源项目)可实现软AP点的功能。当Wi-Fi网络中的终端设备接入AP点后,终端设备发送或接收信息时,通过Wi-Fi通信模块的USB接口向S3C6410芯片的USB Host接口发送或接受信息,然后在S3C6410控制下与ZigBee网络或以太网络通信。 以太网模块采用DM9000A太网控制器芯片。DM9000A一端通过16位数据总线挂接到S3C6410的系统数据总线上,另一端与集成了网络变压器RJ45接口的HR911105A芯片相连接,这样可以使用普通网线连接网关。当以太网中数据经DM9000A芯片传送到S3C6410芯片时,S3C6410控制器分别通过内部集成的串口和USB Host接口向ZigBee模块和Wi-Fi模块传送信息,从而完成与ZigBee网络或Wi-Fi网络的通信。
2 网关软件构架
网关主控制器软件结构如图3所示,操作系统选择嵌入式Linux,它由BootLoader程序负责引导。通过编写Linux系统中DM9000A控制器端口读写驱动、UART串口读写驱动及USB Host端口的读写驱动程序,分别实现应用程序与各模块间的通信。由于Linux系统中包含一个完整的TCP/IP协议栈[4],所以通过移植Boa服务器(Boa是Linux下一个小巧的Web服务器,支持CGI程序),在应用层编写CGI程序实现客户端与网关间的信息交互与控制。在应用层编写网络协议转化守护程序,实现网络协议的相互转化。在网关应用层运行Hostapd守护程序,可实现Wi-Fi模块的AP点等功能。
至于ZigBee模块的软件结构,主要是基于Z-Stack的协议栈,它使用OSAL小型操作系统来实现多任务处理。ZigBee模块充当网络协调器角色,完成建网与组网功能,同时通过在协议栈应用层编写数据转发等程序,实现串口数据与ZigBee网络节点数据的转发等功能。即,ZigBee模块监听到来自ZigBee网络数据包时,将数据包发送给串口,网关主控制器通过串口接收数据;当监听到来自网关主控制器串口的数据时,ZigBee模块会根据相应的寻址方式将数据发往相对应节点。
3 关键技术处理
3.1 网络协议转化
由于网络协议标准的不同,要实现ZigBee网络、Wi-Fi网络、以太网络之间相互通信,必须在主控制器中实现网络协议的转化。对于Wi-Fi网络和以太网络,虽然其低层标准一个采用802.11,一个采用802.3,但它们网络传输层都执行TCP/IP协议,因此Wi-Fi网络和以太网络的转换可以使用NAT(Network Address Translation)技术,改变IP包头,使目的地址、源地址或两个地址在包头中被不同的地址替换即可,即通过移植Linux内核中的Netfilter模块及编写脚本文件可实现Wi-Fi网络和以太网络间报文的相互转发。但是ZigBee网络则不同,网络传输层没有执行TCP/IP协议,所以通过NAT技术解决不了网络间的相互转发,必须在主控制器中设计协议转化程序。该守护程序设计思想是将串口链路层数据经过TCP/IP协议的封装,即可完成与Wi-Fi网络、以太网络的通讯。具体来说当ZigBee网络来的串口数据向Wi-Fi网络、以太网络传输时,进入TCP/IP协议栈加上Wi-Fi头或以太网头、TCP/IP头及串口号等信息进行封装,然后再发往这些网络;当Wi-Fi网络、以太网络向串口发送数据时,是出TCP/IP协议栈分解的过程,即依次去掉每层的协议头分解出应用层数据,最后根据串口号字段值将信息发往相应串口,从而完成整个通讯过程。
3.2 ZigBee网络寻址
ZigBee网络内节点只有两种地址,即16位短的网络地址和64位长的物理地址。ZigBee网内通讯采用随机生成的16位短地址。由于ZigBee网络地址不是固定的,而64位物理地址是IEEE分配的全球惟一号,所以其他网络与ZigBee网络通讯时必须要建立物理地址与网络地址的一对一关系。因此在网关内部保存一张ZigBee网络内所有节点的物理地址和网络地址对应表,当ZigBee网络节点加入网络成功后,网关协调器就更新这张网络节点地址对应表。当Wi-Fi网络或以太网络与ZigBee网络节点通讯时采用的是64位物理地址,传输数据时,网关首先根据物理地址在表中查找它的网络地址,然后根据网络地址将数据发送到相应的ZigBee节点。
3.3 通信协议设计
ZigBee模块与主控制器S3C6410之间要实现信息交互,必须采用一定格式的通讯协议。表1是网关ZigBee模块与主控制器通讯时的帧格式,它采用32字节固定长度的帧格式与主控制器通讯,每一帧都是32字节,且带有帧头、数据和帧尾。除帧头和帧尾外,每一帧数据都有功能码、地址、有效数据和校验位组成。帧头为一特殊字符,占1个字节;功能码代表本帧数据需要执行的功能类型,占3个字节;地址位共占10个字节,代表所访问ZigBee网络节点的网络地址和物理地址,高8字节是物理地址,低2字节是网络地址; 数据长度占16字节,传送各个参数、变量与返回值及各种需要发送的数据;校验位占1个字节,是从功能码到数据尾的加和校验,所得的结果为检验字节;帧尾为一特殊字符,占1个字节。
当网关应用程序对ZigBee网内节点控制时,首先应用程序根据通讯协议格式向串口发送带有相应功能码的指令,网关ZigBee模块从串口得到该指令后,根据其中的功能码及地址位,依据3.2节ZigBee网络寻址方式向相应节点发送该命令,ZigBee网络节点在接收到含有功能码的指令后,完成相应的功能并收集相关信息。节点在收集完相关信息后,按通讯协议格式要求打包,将相应信息发往网关ZigBee模块,网关ZigBee模块在得到上述信息后转发到串口,S3C6410侦听到串口来的数据,然后将串口数据解包,即可获得相应反馈信息。网关CGI程序根据该通讯协议,实现对ZigBee网络的控制与管理。
4 结束语
本文设计的基于ARM处理器的网关,经测试很好的实现了ZigBee网络与WI-FI网络及以太网络的通信。但需要注意的是:由于Wi-Fi信号与ZigBee信号都使用2.4G无线频段,当其部署在同一环境中且Wi-fi信道与ZigBee信道重叠时,Wi-Fi通信会对ZigBee产生较大干扰。但在2.425GHz、2.450GHz、2.475GHz和2.480GHz四个频段上,ZigBee频段与Wi-Fi网络频段不存在重叠干扰现象,因此,ZigBee信号建议使用以上4个频段避免Wi-Fi信号的干扰。
参考文献(References):
[1] 余成波,李洪兵,陶红艳.无线传感器网络实用教程[M].清华大学出版社,2012.
[2] 成小良,邓志东.基于ZigBee规范构建大规模无线传感器网络[J].通信学报,2008.29(11):158-164
[3] S. R. Ramyah. Load Density Analysis of Mobile ZigBee Coordinator in Hexagonal Configuration[J]. Wireless Sensor Network,2012.4(3):59-64
[4] 王绪海,姚晓峰.基于嵌入式系统的物联网网关的设计[J].信息通信,2016.157(1):64-67
[5] 张文华等.基于嵌入式Web服务器的物联网网关设计[J].四川大学学报(自然科学版),2013.50(5):962-966