基于ZigBee与ARM的远程监控系统设计与实现
2021-04-01 来源:21ic
摘要:针对有线组网方式布线复杂、维护困难的问题,提出了一种基于ZigBee无线组网技术和嵌入式Web服务器,对家庭环境进行远程监控的实现方法。采用溫湿度传感器DHT11实现温湿度的采集,烟雾传感器MQ2监测厨房烟雾浓度是否超标,人体红外感应模块实现家庭安防。并且通过红外技术控制空调和加湿器或热水器的打开或关闭,从而实现对溫度和湿度的调节,对热水器的远程控制。实验结果表明,该系统体积小、功耗低、运行稳定,具有一定的实际意义。
在炎热的夏季,下班回家后才把空调打开,却还是很热;想洗热水澡,发现热水器还没有加热;有急事需要出门,结果忘记关闭空调。为了解决上述问题,急需要一套对家电的远程控制系统。于是,本文将ZigBee技术结合嵌入式Web服务器,实现了一种对家庭温湿度等环境因素的远程监控,让人们的生活更加方便、舒适。
1 系统概述
本设计需要在家庭内部建立网路,将各种电器、传感器纳入其中,以实现集中管理。家用电器位置容易改变,数量也容易变化,相对距离较短;ZigBee技术是一种符合国际标准的新型短距离无线通信技术,具有低功耗、低成本、容量大、安全性高、抗干扰性强等优点;文中应用ZigBee技术组建家庭无线网络,接线简单,性能稳定可靠,功耗低,实时性好。
嵌入式Web服务器实现家庭网络与外部网络的连接。由于HTML语言的标准统一性,只要该嵌入式Web服务器接入Internet,就可以使用任意一种接入Internet的Web浏览器接收和发送信息,实现对家庭网络中传感器数据的显示,对家用电器的控制。
本设计的总体框架如图1所示,ZigBee网络包括网络协调器和终端节点。协调器和搭建了Web服务器的ARM9芯片通过串口接在一起,而ARM9又通过网口以网线连接路由器,进而接入Internet。远程客户端是连网的个人电脑,电脑上安装有普通浏览器程序,通过普通浏览器登陆服务器,然后实现对ZigBee终端节点的传感器数据的显示和对执行电器的控制。
根据系统功能应用,选用星型网络拓扑结构。此网络结构中有唯一的协调器,它是整个网络的核心,负责网络的建立和维护。协调器将终端节点上传的传感器数据通过串口发送给嵌入式web服务器,将嵌入式web服务器传过来的指令解析,并将控制命令下发给终端节点。
终端节点定期采集传感器数据,并上传给网络协调器;当协调器下发控制命令时,根据命令激励红外二极管发射红外遥控信号。执行电器的红外接收端接收到红外信号后,执行相应的操作。
2 硬件电路
嵌入式Web服务器以ARM9为硬件平台,采用S3C2440芯片作为主处理器,主频400 MHz,最高533 MHz,SDRAM作为内存,Flash作为内核和文件系统存储芯片。
ZigBee模块主芯片采用CC2430,它是Chipcon公司推出的用来实现嵌入式ZigBee应用的片上系统。它结合一个高性能2.4GHzDSSS射频收发器核心和一颗工业级小巧高效的8051控制器。该芯片采用0.18μmCMOS工艺,工作电流损耗为27 mA,在接收和发射模式下,电流损耗分别低于27 mA或25mA。
监控系统的主要参数要视具体应用场合而定,此系统的应用针对的是家庭,而人们对家庭环境的要求,最基本的就是温度、湿度要合适,此外要防火防盗。家庭室内环境温度的范围一般为0~35℃之间,相对湿度范围在20~80%RH之间;当环境温度在18~25℃,相对湿度在40%~70%,时,人体感觉最舒适。基于此,选用数字温湿度传感器DHT11,它是一款含有已校准数字信号输出的温湿度复合传感器。测量范围是:相对湿度20~90%RH,温度0~50℃;测量湿度的精度为±5%RH,测量温度的精度为±2℃,均能满足要求,并且抗干扰能力强、性价比较高。其它传感器选择烟雾传感器MQ2、HR-SR501人体红外感应模块。
传感器MQ2保证正常工作的电压为5 ±0.2 V,而CC2430的供电电压为2~3.6 V,因此采用升压模块对其升压后再给MQ2供电。图2为Zig Bee终端节点的部分电路连接图,如图所示电源VCC经过升压后再连接到传感器模块MQ2的电源端,然后MQ2的数字输出端连接ZigBee终端节点的通用I/O口P0.1。升压电路功耗低,提供的电流也能满足MQ2正常工作的要求。
为了降低成本,结合红外技术来实现对家用电器的控制。这样,每个房间只需一个ZigBee终端节点,其I/O端口除了连接传感器外其余的还作为控制信号输出端口使用。空调遥控器按键是开关量,又多是两节干电池供电,因此ZigBee终端节点的I/O端口可以和空调遥控器上的几个按键直接相连,这样既能远程控制,又可以在本地通过遥控器控制空调的开关、温度的调节。而电热水器和加湿器没有配套的遥控,因此在ZigBee终端节点连接5 mm红外发射管,采用软件调制技术,激励红外二极管发射红外遥控信号来实现对电热水器和加湿器的远程控制,原理图如图3所示。
电热水器和加湿器的开关处要增加一红外接收电路。红外接收电路由低成本低功耗的PIC单片机PIC12F629、红外一体化接收头、继电器组成。
3 软件设计与实现
3.1 ZigBee网络协调器节点
采用TI公司半开源的Zstack协议栈-ZigBee2006,具体版本号为ZStack-1.4.3-1.2.1,既缩短了研发周期又能增强系统的稳定性。
协调器节点的程序设计主要包括协议栈的配置和应用层软件的开发。图4是协调器的程序流程图。
本文采用的是双向绑定的方法,因为绑定表只建立在发起绑定的一方,对于被绑定方是不知道绑定方的绑定地址的。故而采取双向绑定的方法,来实现协调器和终端节点的双向通信。
由于终端节点有多个,故而采用顺序绑定的方法,即先设置绑定节点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是终端节点程序流程图。
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,是本系统默认主页面,显示内容为房间名称、电池电量、温湿度、是否有人活动等情况,默认情况下空调、加湿器都是关闭的。
如图7所示,通过选择页面上空调的开启选项,浏览器将命令传给CGI程序,CGI程序调用应用程序,使ARM9经由串口发送2个字节控制命令给ZigBee网络协调器,1个字节装载的是房间编号信息,即ZigBee终端节点的网络地址,另一个字节装载的是控制命令数据。网络协调器将命令下发给客厅中的ZigBee终端节点,ZigBee终端节点将控制命令数据译成对P2.1口输出低电平,相当于空调遥控器开关按键按下,空调相应打开。再在页面上选择空调调节温度选项“降温”,然后点击“提交”按钮,经由相似过程,ZigBee终端节点控制P1.2输出低电平,相当于空调遥控器降温按键按下,客厅温度降低,在网页上点击3次按钮“提交”,客厅温度降至25℃。
通过实验,可以知道本系统能能实现以下功能:对家庭各个房间的温度和湿度实时显示,能远程调节温度和湿度,远程打开热水器开关对其加热,当房间有人活动时能在监控页面显示出来,厨房烟雾浓度是否超标也能在页面显示。
6 结束语
文中所述的远程监控系统应用在家庭环境中,既能实现远程监测家中各个房间的温湿度状况,也能控制家中空调、加湿器的打开或者关闭状态从而调节温湿度,营造一个舒适宜人的环境。烟雾传感器能实现烟雾浓度超标检测,使用人体红外模块可实现家庭安防功能。电池电量检测能即时提醒更换电池。若对本设计做微小改动,添加房间数量或减少数量,或者改变传感器类别实现其他功能,可扩展性较强。