本课题首先进行系统总体设计,结合底层ZigBee无线传感网络的特点和系统总体网络监控的要求,将该系统设计分为四部分:无线传输模块、数据处理模块、以太网传输模块、上位机显示界面。然后对ZigBee协议标准做了全面地研究分析,同时给出了基于CC2430的无线传输模块的软硬件设计和星型网络搭建,并给出了测试结果。接着设计了基于PIC32的数据处理模块,给出了硬件电路和外围辅助电路设计方案,并为其移植了实时操作系统uC/OS-II。本设计完成了基于DP43848C的以太网传输模块设计和系统的以太网通信程序的设计,实现了从底层ZigBee无线传感网络的数据采集最终到监控机的数据传输并测试成功。最后在VC++6.0环境下,应用Windows Sockets套件接口开发显示界面对底层采集的数据分类显示。
(4)上位机显示界面设计:利用VC++6.0基于WindowsSockcts编写上位机界面程序,使经过数据处理模块处理后的数据通过以太网上传到上位机(PC机)界面上,实现统一管理。
ZigBee是一组基于IEEE批准通过的802.15.4无线标准研发的,有关组网、安全和应用软件方面的技术标准。IEEE无线个人区域网工作组的IEEE 802.15.4技术标准是ZigBee技术的基础。它采用跳频技术,.使用的频段分别为2.4GHz( ISM ), 868 MHz(欧洲)及915 MHz(美国),而且均为免执照频段,有效覆盖范围为1075 m。所支持的数据传输速率为10Kb/s--250Kb/s。功耗低,在低耗电待机模式下,两节普通5号干电池可以6个月到2年。网络容量大,每个ZigBee网络最多可支持255个设备。成本低。由于ZigBee数据传输速率低,协议简单,所以大大降低了成本。
要从以上这些无线射频技术中选择一种作为本设计的无线通信方案,需要考虑的是:该方案是否能够满足家庭网络的成本要求,还有就是功耗和网络容量能否满足家庭要求。而这些问题在ZigBee技术面前都将不复存在。在智能家居系统中,将ZigBee无线传感网络技术应用于家庭网络己成为趋势。这不仅仅是因为ZigBee无线传感网络可以提供更大的灵活性、流动性,省去花在综合布线上的费用和精力,而且更因为它符合家庭网络的通讯特点。所以本智能家居监控系统采用ZigBee技术作为智能家居中无线传感网络的设计方案。
本智能家居监控系统中的无线传感网络采用星型连接,主要包括了一个家庭网关以及若干个无线通信子节点。家庭网关上有一个无线收发模块(主节点FFD ),而其他的无线通信子节点则作为End Device安放在家用电器、三表和安防传感器上,通过这些无线收发模块,数据就在主节点和子节点之间进行传输。智能家居中的无线传感网络结构如下图2 所示。
图2 智能家居中的无线传感网络结构
在单个家庭中的网络连接可以选用无线传感网络,而如果要对整个一栋大楼、一个小区进行统一化的管理,无线传感网络的优势就不那么明显了,而且对于整个小区的网络来说,它所承载的数据流量就很大了,对于无线传感网络这种低通信速率网络来说是不合适的。
以太网是当今现有局域网采用的最通用的通信协议标准。它连接方便,可屏蔽干扰,通信速率可达10/100/1000Mbps以上,而且成本低廉。目前大部分的小区都要宽带网,因此集中网络管理采用比较流行的而且易于实现的以太网连接具有良好的性价比。
在本课题中,家庭网络部分采用无线传感网络来监控,无线采集协调器再将采集的数据发送到数据处理模块,最后经过处理后的数据将通过以太网传输到上位机上。从而组成小区的监控系统,如下图3所示。
图3 小区监控系统
1.3.uC/OS-II的移植
实时系统中任务的执行大多数都是由外部事件触发的。也就是说,实时操作系统的主要工作就是响应并处理各种外部事件。因此,对于每个外部事件都对应有一个处理这个事件的程序模块,这些模块就是任务。在移植前,把问题分析清楚,将问题分割成多个任务,每个任务都是整个应用的一部分,被赋予一定的优先级,有自己的一套CPU寄存器和堆栈空间。任务执行一次后,设置延时OSTDIy,表明经过OSTDIy个定时器中断周期后任务再次运行,然后进行任务切换,让处于就绪态的优先级最高的任务运行。uC/OS-II的任务实际上就是一段程序,在运行该程序时,可以认为CPU就完全属于该程序本身。在本设计中,所移植的系统建立了8个任务(参照见图2):
0号任务,用来监测安防传感器(煤气泄露)。在执行该任务时通过ZigBee网络协调器选择与安防传感器(煤气泄露)终端节点通信,采集传感器数据。
1号任务,用来监测安防传感器(温度)。在执行该任务时通过ZigBee网络协调器选择与安防传感器(温度)终端节点通信,采集传感器数据。
2号任务,与0号任务对应,将安防传感器(煤气泄露)采集的数据最终通过以太网上传到上位机上。
3号任务,与1号任务对应,将安防传感器(温度)采集的数据最终通过以太网上传到上位机上。
4号任务,用来控制冰箱、空调、电视、灯的电源开关,通常情况下,这些开关型控制,只用一个任务就可以完成,只要在执行该任务时,同时通过ZigBee网络协调器同时发送一个16位地址符就可以选择出所要执行开关任务的终端节点。
5号任务,单独为窗帘建立一个任务。因为窗帘的控制是一个闭环控制。
6号任务,为电表、水表、燃气表的数据采集建立一个任务。因为水表、电表、燃气表的数据对实时性要求没有那么高,可以分时采集,在执行该任务时,同时通过ZigBee网络协调器同时发送一个16位地址符就可以选择出所要执行数据采集任务的终端节点,另外,还要为该任务调用一个延时函数,并设置延时时钟周期数,从而最终实现在三表间轮流数据采集。
7号任务,用来对三表数据上传到上位机建立任务。对应于任务6,分别将从水、电、燃气表采集的数据立即上传。
它们具有各自独立的堆栈空间和不同的静态优先级,0号任务优先级最高,7号任务优先级最低。对于0号任务---3号任务,由于它们是保证家居安全的是不允许中断响应的,所以在这些任务开始执行时,一定要关闭中断。
1.4.基于Visual C++的上位机显示界面设计
在整个智能家居监控系统的设计当中,上位机(PC机)可以为用户提供一个友好、交互的人机界面。假如管理人员需要调用小区中任意一户的数据记录时,可以查询该上位机的存储的数据即可。这里我们利用Visual C++编写上位机的管理界面,主要采用了Windows Sockets网络接口控件,大大简化了设计难度。
首先,Windows Sockets作为Microsoft Windows的网络程序设计接口,它是从Berkeley Sockets扩展而来的,以动态链接库的形式提供给我们使用。重要的是,Windows Sockets是基于TCP/IP协议的,应用程序调用Windows Sockets的API实现相互之间的通信,而Windows Sockets则是利用下层的网络通讯协议功能和操作系统调用实现实际的通讯工作的。
2.软件流程介绍
2.1智能家居中ZigBee无线传感网络中终端节点流程
网络建立成功后,需要添加终端设备(终端节点)进入这个网络。允许设备同网络连接的流程图如图4所示。终端设备通过发送NLME-JOIN.request原语来开始执行孤点方式同网络连接,其原语 RejoinNetwork参数设置为TRUE。
图4 终端节点加入网络流程图
首先,终端设备的网络层管理实体将请求MAC层对PHY层所规定的所有有效通信信道进行孤点扫描。通过向MAC层发送MLME--SCAN.request原语开始进行孤点扫描,其扫描的结果通过MLME--SCAN.confirm原语返回到网络层管理实体。然后,如果该终端设备扫描到网络协调器设备,网络层管理实体将通过发送MLME--JOIN.confirm原语向其上层报告请求连接,其原语的状态参数设置为SUCCESS,否则设置为NO-NETWORKS。
整个星型网络的组网的软件流程图如下图5所示。
当网络协调器正常工作后,则建立网络成功。这时候再打开两个或更多终端节点,就能让这些节点加入网络。
图5星型网络组网流程图