本文包含原理图、PCB、源代码、封装库、中英文PDF等资源
您需要 登录 才可以下载或查看,没有账号?注册会员
×
摘 要: 根据智能家居系统的特点和发展现状,采用ZigBee技术和嵌入式Internet技术组建家庭网络并建立家庭网关。分别介绍了两部分的设计思路、技术特点、硬件选型和软件设计。实现并验证该了系统的远程监控功能,指出其应用前景。
关键词: 智能家居;ZigBee协议;JN5139;家庭网关;BOA服务器
智能家居以住宅为平台,利用先进的计算机技术、嵌入式技术、传感器技术、网络通信技术以及自动控制技术等,将家中的各种电子电气设备通过家庭网络连接在一起,集中远程监控、管理家庭事物,让家居生活更加舒适、安全、有效。
智能家居属于消费电子、计算机、通信、家电、建筑、网络运营等行业的交叉领域。各行业因为不同的行业背景和发展思路,制定了各自的标准规范,选用了不同的技术组合。目前智能家居还处于发展阶段,各种新概念、新技术、新产品不断出现,并且尚无规范统一的国内外标准和产品可直接应用[1]。基于此背景,本文以ZigBee技术的发展为契机,结合嵌入式Internet技术,研究设计了一套智能家居远程监控系统,整体设计方案如图1所示。家庭网络和家庭网关是整个系统的主干,如何组建家庭网络和建立家庭网关决定了系统的设计水平和灵活性。
1 组建家庭网络
传统的智能家居系统组建家庭网络多采用总线控制技术,主要有X-10、CEBus、LonWorks和ApBus等几种[2]。由于有线网络存在布线麻烦、可扩展性差等缺点,将无线通信技术应用于家庭网络已成为势不可挡的趋势。目前比较常用的短距离无线通信技术有Wi-Fi、Bluetooth、UWB、Z-Wave、ZigBee等。相对于其他技术,ZigBee具有网络大容量、低速率、低功耗、较长传输距离、短时延、高安全性、工作频段灵活的特点。
智能家居家庭网络内灯光、水表、电表、安防报警、家电等组网的电子电气设备数量较多,而网内传送的是控制命令和数字等小容量数据,不需要太大的传输速率,但要求网络容量大、成本低、功耗低。因此使用ZigBee技术组建家庭网络是比较理想的选择。
1.1 ZigBee协议及硬件设备
ZigBee协议栈构建在IEEE 802.15.4标准基础之上,IEEE 802.15.4标准定义了物理层和MAC层。ZigBee联盟定义了网络层、应用层和安全服务层。ZigBee规范确定了三种设备:ZigBee协调器、ZigBee路由器和ZigBee终端设备。每个网络都必须包括一台ZigBee协调器。在组网方式上,ZigBee支持星形结构、树形结构和网状结构三种拓扑形式。
由于众多厂商对ZigBee无线技术前景的看好,许多符合ZigBee技术标准的通信模块纷纷被研制出来以满足客户对ZigBee产品的开发需求,例如Chipcon公司的CC2420、TI公司收购Chipcon公司后推出的CC2430/CC2431、飞思卡尔的MC1322x、Jennic公司的JN51系列。本文选用了集成Jennic公司JN5139芯片的GAINSJ节点开发板,该开发板集成了天线、温湿度传感器SHT10、LED灯、按键等外部资源。
1.2 拓扑结构和路由协议的选择
通过测试得知该ZigBee开发板在室外空旷环境的通信距离为90 m~100 m,在室内有墙壁等障碍物时的通信距离在30 m左右,当有两堵墙阻隔时会出现2%左右的丢包率。在一般的家庭环境,通过合理的位置摆放可使ZigBee协调器和ZigBee终端节点的距离小于30 m,满足通信要求。为保障系统的健壮可靠,在每个房间的门口增加ZigBee路由器,既降低了一跳的通信距离要求,又避免和降低了墙壁等障碍物引起的丢包现象。
ZigBee网络支持星形结构、树形结构和网状结构三种拓扑形式,如图2所示。本文从树形结构和网状结构中选择更适合智能家居系统的拓扑结构。 树形结构对应Cluster-Tree路由算法,此路由算法较为简单,相当于静态路由,需要硬件配置较低,按照此算法,数据包只能转发给父节点或者子节点。网状结构需要AODVjr路由算法,此算法较为复杂,相当于动态路由,需要的硬件配置较高,但是节点间通信更为灵活[3]。而在本文智能家居远程监控系统中,不存在终端节点之间的通信,完全是协调器和终端节点之间的通信,所以选择了树形结构和Cluster-Tree路由算法。
1.3 软件设计
GAINSJ的集成开发环境是Jennic提供的Code::Blocks版本。Code::Blocks是一个全功能开放源代码的跨平台C/C++集成开发环境。Jennic公司在此基础上添加了JN5139编译器、JN5139 Flash Programmer、IEEE 802.15.4Stack Software、ZigBee Stack Software等组件。
Flash Programmer工具用来将编译好的代码下载到GAINSJ开发板中,在Code::Blocks集成开发环境中编写好应用程序代码并编译链接相应的库,生成二进制文件(*.bin文件)后,就可以利用Flash Programmer通过串口将二进制文件下载到开发板上的Flash中[4]。
家庭网络采用树形拓扑结构,ZigBee协调器负责发起和维护网络,通过串口接收和处理家庭网关传来的命令;发送命令数据帧给ZigBee终端节点,接收和处理ZigBee终端节点传送的数据帧,通过串口传送数据给家庭网关。其软件设计流程图如图3所示。ZigBee路由器负责分配管理网络地址和转发数据包。ZigBee终端节点负责加入网络,接收来自协调器的命令并执行,将执行结果通过数据帧发送给协调器,定期采集处理温湿度,如果数据超标就发送数据帧给协调器,其软件设计流程图如图4所示。
本文选用树形拓扑结构和Cluster-Tree路由算法,下面节选了一个在终端节点中调用的发送函数及参数设置来说明如何使用选定的路由算法。
(void)afdeDataRequest(
APS_ADDRMODE_SHORT,/* 地址类型 */
0x0000,/* 目的地址 */
WSN_DATA_SINK_ENDPOINT,/* 目的端口*/
WSN_DATA_SOURCE_ENDPOINT,/* 原端口 */
WSN_PROFILE_ID,/* 描述 ID */
WSN_CID_SENSOR_READINGS,/* 簇ID */
AF_MSG,/* 帧类型 */
1,/* 数据包个数*/
asTransaction,/* 数据包内容*/
APS_TXOPTION_NONE,/* 发送模式 */
SUPPRESS_ROUTE_DISCOVERY, /* 路由发现模式*/
0/* 发送深度*/);
这个函数用来向网络层发出数据发送请求。倒数第二个参数是路由发现模式,有三种设置,本文使用SUPPRESS_ROUTE_DISCOVERY,即如果路由表已经建立,那么数据将使用现有的路由表路由;如果路由表没有建立,那么数据将沿树形路径路由。
2 建立家庭网关
2.1 嵌入式Internet技术及硬件设备
家庭网关的作用是使内部ZigBee家庭网络和外部Internet互联互通。本文采用嵌入式Internet技术,建立嵌入式Web网站,通过远程访问网页监控ZigBee网络内的设备。嵌入式设备具有体积小、功耗低、价格低的优点[5]。
本文选用mini2440开发板做为家庭网关,它以Samsung的S3C2440处理器为核心,并辅以SDRAM、Flash等基本的系统外围设备,还需配备连接ZigBee网络协调器的RS232接口和以太网络控制器。
2.2 软件设计
在mini2440上进行软件设计的内容和步骤是:(1)搭建交叉编译开发环境,在宿主机上安装Linux操作系统,安装ARM-linux-gcc编译器;(2)在目标板mini2440上移植BOA服务器,配置boa.config文件;(3)在目标板上进行html文件和.cgi文件测试,确保BOA服务器正常工作;(4)编写html静态网页和CGI动态网页,编写UART串口通信程序,逻辑结构如图5所示。
|