基于ZigBee与ARM的远程监控系统设计与实现
5 mm红外发射管,采用软件调制技术,激励红外二极管发射红外遥控信号来实现对电热水器和加湿器的远程控制,原理图如图3所示。
![](../img/eep-analog/analog-34540ffkxquspo4o.jpg)
电热水器和加湿器的开关处要增加一红外接收电路。红外接收电路由低成本低功耗的PIC单片机PIC12F629、红外一体化接收头、继电器组成。
3 软件设计与实现
3.1 ZigBee网络协调器节点
采用TI公司半开源的Zstack协议栈-ZigBee2006,具体版本号为ZStack-1.4.3-1.2.1,既缩短了研发周期又能增强系统的稳定性。
协调器节点的程序设计主要包括协议栈的配置和应用层软件的开发。图4是协调器的程序流程图。
![](../img/eep-analog/analog-34541da5clnubhvq.jpg)
本文采用的是双向绑定的方法,因为绑定表只建立在发起绑定的一方,对于被绑定方是不知道绑定方的绑定地址的。故而采取双向绑定的方法,来实现协调器和终端节点的双向通信。
由于终端节点有多个,故而采用顺序绑定的方法,即先设置绑定节点1,成功之后设置绑定节点2,依此类推直到绑定所有终端节点。在函数void zb_BindConfirm(uint16 commandId,uint8 status)中,标志位count每完成一次协调器到终端节点的绑定,其值增一,以此记录该绑定哪个终端节点。再利用if语句实现对终端节点的设置绑定事件,进而完成绑定工作。
在正常工作状态下的协调器,当有按键按下时,会进入应用层进行处理。调用函数zb_SendDataRequest(uint16 destination,uint16 commandId,uint8 len,uint8*pData,uint8 handle,uint8 txOptions,uint8 radius)向终端节点发送数据,由于不同终端节点的comma ndId不同,因此协调器只向commandId相匹配的终端节点发送数据。终端节点根据接收到的数据去做相应处理。
3.2 ZigBee终端节点
终端节点上电后,进行初始化,然后去发现网络并加入网络、进行绑定等操作。之后进入正常丁作状态,终端节点每隔10S采集一次传感器数据,将数据存储在数组pData中,然后调用发送函数zb_SendDataRequest(OxFFFE,SENSOR_REPORT_CMD_ID,12,pData,0,AF_ACK_ REQUEST,0),将所有数据一次性发送给协调器节点。图5是终端节点程序流程图。
![](../img/eep-analog/analog-34542cjlytgafedc.jpg)
4 嵌入式web服务器
嵌入式Web服务器以linux为操作系统,通过搭建BOA服务器,实现对浏览器页面访问请求响应以及数据的发送等功能。此外,结合CCI技术编写HTML静态网页和CGI程序,移植了嵌入式数据库SQlite,用以存储合法用户的用户名和密码,实现对登录用户的客户验证功能;并且还能存储由串口传送来的传感器数据,通过CGI程序调用数据库的最新数据,由BOA服务器返回给浏览器实现对家庭传感器数据的实时显示。
ARM9除了BOA服务器一直在运行,还有串口应用程序也在不断监听是否有数据需要接收或者发送。设计所用ARM9开发板有3个UART,选用串口1,主要寄存器设置如下:
CPHCON=0xa00;
ULCON1=0x03;//数据格式为8位,一停止位,无校验位
UCON1=0x05;//时钟源为pclk,查询方式
UBRdiv1=(PCLK/(115200 x 16)-1);//设置波特率115200
5 系统测试
本设计以一个协调器和5个终端节点为例进行测试,5个终端节点分别放在5个房间-客厅、主卧室、次卧室、卫生间、厨房内,协调器节点和嵌入式Web服务器放在主卧室。在PC机上打开浏览器,输入http://192.168.1.230,即出现登陆页面,输入用户名、密码认证成功后,即出现主页面,如图6,是本系统默认主页面,显示内容为房间名称、电池电量、温湿度、是否有人活动等情况,默认情况下空调、加湿器都是关闭的。
![](../img/eep-analog/analog-345433f3aurygayv.jpg)
如图7所示,通过选择页面上空调的开启选项,浏览器将命令传给CGI程序,CGI程序调用应用程序,使ARM9经由串口发送2个字节控制命令给ZigBee网络协调器,1个字节装载的是房间编号信息,即ZigBee终端节点的网络地址,另一个字节装载的是控制命令数据。网络协调器将命令下发给客厅中的ZigBee终端节点,ZigBee终端节点将控制命令数据译成对P2.1口输出低电平,相当于空调遥控器开关按键按下,空调相应打开。再在页面上选择空调调节温度选项“降温”,然后点击“提交”按钮,经由相似过程,ZigBee终端节点控制P1.2输出低电平,相当于空调遥控器降温按键按下,客厅温度降低,在网页上点击3次按钮“提交”,客厅温度降至25℃。
![](../img/eep-analog/analog-34544cyvmfsv4jzp.jpg)
通过实验,可以知道本系统能能实现以下功能:对家庭各个房间的温度和湿度实时显示,能远程调节温度和湿度,远程打开热水器开关对其加热,当房间有人活动时能在监控页面显示出来,厨房烟雾浓度是否超标也能在页面显示。
6 结束语
文中所述的远程监控系统应用在家庭环境中,既能实现远程监测家中各个房间的温湿度状况,也能控制家中空调、加湿器
- ZigBee、GPRS在充电桩中的应用(04-18)
- ZigBee语音传输分析(11-25)
- 基于ZigBee无线传感网的电源监控系统设计(04-21)
- CC2538单芯片支持物联网及ZigBee等多种标准(04-15)
- 无线传输的电能质量监测系统电路(06-10)
- 无线节水滴灌自动控制系统的设计方案(02-08)