基于Zigbee技术的家用无线网关的设计
来源:维库开发网
摘要:针对现代社会对信息获取便捷度和家庭网络化的要求,设计了一种可以组织家用电器成小型网络的家用网关。该网关采用Zigbee技术和嵌入式系统相结合的设计方案,采用了自行设计的Zigbee协议栈结构使其适合嵌入式系统,达到了连接组网和交换信息的能力。
Abstract:
Key words :
0 引言
网关对于使用过网络的人也许都不陌生,如家中或者办公室中的连接个人电脑与国际互联网的路由器。这里讨论的网关,它的作用不是连接你的个人电脑到互联网上遨游,而是将你家中大大小小的家用电器连接到你的个人电脑上,进而不需要你走进家中就能通过PC机控制家用网关来获取家电信息和控制它们。因为采用了Zigbee无线技术,所以又称为家用无线网关。
1Zigbee技术的体系结构和拓扑结构
在Zigbee技术中,其体系结构通常是通过“层”来量化它的各个简化标准的,每一层负责完成为其所规定的任务,并向上层提供服务。Zigbee技术的体系结构自下往上主要由物理(PHY)层、媒体接入控制(MAC)层、网络/安全层以及应用框架层构成。
Zigbee技术网络有2种拓扑结构:星型拓扑结构和对等拓扑结构(如图1所示)。其中定义了两种设备:全功能设备(FFD)和精简功能设备(RFD)。FFD在硬件功能上比较完备,可以与所有其他的FFD或RFD通信,而RFD只能和与其关联的FFD进行通信。与RFD相关联的FFD设备称为该RFD的“协调器”。在整个网络中,有一个FFD充当网络协调器。除直接参与应用外,网络协调器还需要完成成员身份管理、链路状态信息管理以及分组转发等任务。
2 家用网关结构及其软硬件组成
结合本课题中家用网关和家用电器的主从关系,本文采用基于星型拓扑结构的Zigbee网络。因为Zigbee无线 网关需要将基于TCP协议的信息转发给Zigbee网络其它的节点,故它必须为一个FFD设备,同时它在整个Zigbee网络还要管理其它节点的一些信息,故其又实现为一个协调器。
结合本课题中家用网关和家用电器的主从关系,本文采用基于星型拓扑结构的Zigbee网络。因为Zigbee无线 网关需要将基于TCP协议的信息转发给Zigbee网络其它的节点,故它必须为一个FFD设备,同时它在整个Zigbee网络还要管理其它节点的一些信息,故其又实现为一个协调器。
根据课题要求,选择的系统硬件组成:采用S3C4480嵌入式开发板,该开发自带2M FLASH和8M
RAM。网络芯片采用RTL8019 10M网络芯片,Zigbee通信模块采用TI的CC2420芯片(两片)。选用的系统软件组成:uCOS-Ⅱ+基本功能Zigbee协议栈+LW IPTCP/IP协议栈。
Zigbee无线网关基本功能为将基于TCP协议的网络与基于Zigbee协议栈的数据进行转换,从而可以将基于常用的以太网的数据发送到Zigbee网络中,也可以将Zigbee网络中的数据发送到以太网中。开启Zigbee无线网关,其它的RFD节点通过与其通信,加入到该 无线网络中。这样Zigbee无线 网关就可以管理所有节点。
这里涉及两个主要协议栈:Zigbee协议栈和TCP/IP协议栈。
TCE/IP协议栈这里选择适合嵌入式应用的LWIP协议栈,具有良好的移植性并且开放源代码。
考虑到目前还没有完全可以用的Zigbee协议栈,在这里定义并实现了—个基本功能的Zigbee协议栈。其基本结构为:
(1)phy层:该层主要实现与具体Zigbee模块硬件有关的操作。
(2)mac层:基于phy层提供的接口,实现对Zigbee网络的基本初始化,设置PAID,设置 IEEE64位地址,选择通信通道,实现接收和发送Zigbee数据包功能。
(3)nwk层:该部分用来从mac获得接收到的数据,对数据进行分析,进行一系列的操作。根据发送来的数据,如果是应用层的数据,向上传递接收到的数据。如果是网络层命令,则进行具体操作。
RAM。网络芯片采用RTL8019 10M网络芯片,Zigbee通信模块采用TI的CC2420芯片(两片)。选用的系统软件组成:uCOS-Ⅱ+基本功能Zigbee协议栈+LW IPTCP/IP协议栈。
Zigbee无线网关基本功能为将基于TCP协议的网络与基于Zigbee协议栈的数据进行转换,从而可以将基于常用的以太网的数据发送到Zigbee网络中,也可以将Zigbee网络中的数据发送到以太网中。开启Zigbee无线网关,其它的RFD节点通过与其通信,加入到该 无线网络中。这样Zigbee无线 网关就可以管理所有节点。
这里涉及两个主要协议栈:Zigbee协议栈和TCP/IP协议栈。
TCE/IP协议栈这里选择适合嵌入式应用的LWIP协议栈,具有良好的移植性并且开放源代码。
考虑到目前还没有完全可以用的Zigbee协议栈,在这里定义并实现了—个基本功能的Zigbee协议栈。其基本结构为:
(1)phy层:该层主要实现与具体Zigbee模块硬件有关的操作。
(2)mac层:基于phy层提供的接口,实现对Zigbee网络的基本初始化,设置PAID,设置 IEEE64位地址,选择通信通道,实现接收和发送Zigbee数据包功能。
(3)nwk层:该部分用来从mac获得接收到的数据,对数据进行分析,进行一系列的操作。根据发送来的数据,如果是应用层的数据,向上传递接收到的数据。如果是网络层命令,则进行具体操作。
实现的网络层命令有:
a)终端节点(RFD)请求加入该网络:进行验证,并为加入的终端节点分配地址。
b)终端节点(RFD)请求离开该网络:进行验证,并将该节点从节点信息列表中删除。
c)终端节点(RFD)加入该网络成功。
d)终端节点(RFD)离开该网络成功。
a)终端节点(RFD)请求加入该网络:进行验证,并为加入的终端节点分配地址。
b)终端节点(RFD)请求离开该网络:进行验证,并将该节点从节点信息列表中删除。
c)终端节点(RFD)加入该网络成功。
d)终端节点(RFD)离开该网络成功。
除此之外还包括针对这些请求的FFD响应命令。
(4)app层:该层从nwk层获得数据,并根据数据内容进行操作,与具体应用有关。
3 家用网关的具体操作流程及其伪代码
Zigbee协议栈与TCP/IP协议栈,分别作为uCOS-II系统的两个任务,这两个任务之间通过消息队列或者邮箱的形式进行 数据通信,用以实现任务的数据交换。
在启动主机软件时,用户通过设定要连接的Zigbee网关IP,从而使用Zigbee网关的连接。在连接成功以后,PC主机请求Zigbee网络中所有节点的信息,Zigbee网关将Zigbee网络中所有的节点信息发送给主机,主机软件显示所有可能的节点。获得所有节点信息以后,用户就可以选择要通信的节点,并通过TCP将所有的操作信息发送给该节点,从而实现对节点控制和监控。
这里写出 Zigbee协议栈任务基本流程伪代码。
(4)app层:该层从nwk层获得数据,并根据数据内容进行操作,与具体应用有关。
3 家用网关的具体操作流程及其伪代码
Zigbee协议栈与TCP/IP协议栈,分别作为uCOS-II系统的两个任务,这两个任务之间通过消息队列或者邮箱的形式进行 数据通信,用以实现任务的数据交换。
在启动主机软件时,用户通过设定要连接的Zigbee网关IP,从而使用Zigbee网关的连接。在连接成功以后,PC主机请求Zigbee网络中所有节点的信息,Zigbee网关将Zigbee网络中所有的节点信息发送给主机,主机软件显示所有可能的节点。获得所有节点信息以后,用户就可以选择要通信的节点,并通过TCP将所有的操作信息发送给该节点,从而实现对节点控制和监控。
这里写出 Zigbee协议栈任务基本流程伪代码。
4 网关调试方法
具体的操作过程:
(1)打开串口调试助手软件,设置波特率为57 600,8位,l位停止,无奇偶校验和流量控制协议。
(2)连接好Zigbee与PC的串口,同时连接电源。
(3)在串口调试助手软件中将显示有关设备启动的信息和Zigbee网关相关信息。这时说明Zigbee网络已经初始化完成,并形成了一个Zigbee网络。
(4)打开主机软件,设置好连接的网关 IP地址,然后点击“连接”按钮,这时在软件左边的列表框中显示所有的Zigbee节点信息,也可以通过下面的“刷新节点信息”来获得最新的节点信息列表。
主机软件最下面的只读编辑框,里面显示的是一些日志信息,方便调试。图3显示了网关调试情况:
5 结论
通过网关设计分析,发现该网关具有实用性和可行性。在网关的设计过程中,遇到不少困难,比如目前还没有适用于ARM平台的Zigbee协议栈,只能对现有的各种Zigbee协议栈进行修改和移植,以适合ARM平台,这一步实现起来较为复杂。另外,为了节省设备成本,测试中两个RFD设备同时接在一个Zigbee无线网关设备上,距离较近,在实际生产测试中并不适用。
具体的操作过程:
(1)打开串口调试助手软件,设置波特率为57 600,8位,l位停止,无奇偶校验和流量控制协议。
(2)连接好Zigbee与PC的串口,同时连接电源。
(3)在串口调试助手软件中将显示有关设备启动的信息和Zigbee网关相关信息。这时说明Zigbee网络已经初始化完成,并形成了一个Zigbee网络。
(4)打开主机软件,设置好连接的网关 IP地址,然后点击“连接”按钮,这时在软件左边的列表框中显示所有的Zigbee节点信息,也可以通过下面的“刷新节点信息”来获得最新的节点信息列表。
主机软件最下面的只读编辑框,里面显示的是一些日志信息,方便调试。图3显示了网关调试情况:
5 结论
通过网关设计分析,发现该网关具有实用性和可行性。在网关的设计过程中,遇到不少困难,比如目前还没有适用于ARM平台的Zigbee协议栈,只能对现有的各种Zigbee协议栈进行修改和移植,以适合ARM平台,这一步实现起来较为复杂。另外,为了节省设备成本,测试中两个RFD设备同时接在一个Zigbee无线网关设备上,距离较近,在实际生产测试中并不适用。
此内容为AET网站原创,未经授权禁止转载。