基于ZigBee的多传感器智能火灾报警系统
2015-07-21王培锦路佳宣
王培锦+路佳宣
摘 要:在分析了实际学校环境的基础上,创造性地提出了一个基于ZigBee技术的无线多传感器火灾报警与火警监控的跨平台火警系统解决方案。宿舍楼安放的PC机不仅能够实时对宿舍环境进行监测,当温度,烟雾超出指标后,还能及时向持有安卓设备的楼层管理员发出火灾警报。该跨平台的系统是火警探测领域的一个突破,具有极大的实用价值。
关键词:ZigBee;HTML;Android;PHP
中图分类号:TP274 文献标识码:A 文章编号:2095-1302(2015)07-000-03
0 引 言
近年来,经常会看到各种新闻报道中发生在学校的火灾,这些火情不仅会造成巨大的财产损失,而且会严重威胁师生的生命安全。因此,拥有一款实用准确的火灾报警系统十分必要。目前已有的火灾报警系统一般采用有线方式连接,不仅影响美观,而且不易扩展,布置严格受到地形的限制。在很多老旧的教学楼内存在难以布线的问题,并且由于使用有线的方式连接,线路容易发生老化或遭到腐蚀、鼠咬、磨损等问题,严重影响了火情的准确报警。火灾报警往往局限于室内的灯光,警铃和自动的消防设施,而当出现室内消防设施无法解决的严重火情时难以与外界取得联系,尤其是在室内无人的情况下,极易延误救火的黄金时期,延误火情。
本文成功设计了一整套基于安卓手机和Web的跨平台防火报警系统。本系统可实现火灾的有效检测,当检测到火灾后可对绑定的手机进行报警和火情的服务器上传,方便消防人员及时了解火灾情况,及时采取措施。
本系统分为无线模块,主机模块,安卓模块和Web模块[1-3]。其中无线模块使用基于CC2530的ZigBee设备,使用IAR平台进行开发。主机模块搭载在基于Windows系统的PC机上,使用VS2010进行开发,主要靠MFC来实现。安卓模块使用Eclipse平台进行开发,使用的是2.3.2版本。Web模块采用SAE平台进行开发。
1 系统的总体设计方案
本系统的整体框架由5部分组成,包括4个模块,无线模块主要由无线传感器网络组成,负责环境数据的采集和无线传输,环境数据最终被汇总到协调器中,协调器通过串口与主机模块进行数据传输。主机模块对数据进行判断处理,将处理得到的结果通过Socket发到安卓模块设备中,此时安卓模块设备产生报警,并通过HTTP指令将火情的地址发送至Web模块。这样,我们就可以通过浏览相应网页、Web模块来方便地观察最新发生的火情,并进行响应。图1是该系统的整体框架图。
图1 系统整体框架图
2 各模块的设计
2.1 无线模块的设计
无线模块采用ZigBee标准设计,相比于蓝牙,WiFi,红外线等其他技术,ZigBee技术具有功耗低,设备稳定可靠,无线传输不受障碍物影响等诸多优点。目前使用最广泛和最受推广的协议栈是ZigBee2007协议,TI公司已经生产出了完全兼容该协议的CC2530芯片及相应的Z-Stack协议栈,这也是本系统所采用的芯片和协议栈。
相比于其他的通信协议,ZigBee在传输距离和传输速率上都不是很占优势。ZigBee的传输速率在20~250 Kb/s,传输距离通常为10~100 m。但是比起其他通信方式,ZigBee拥有成本低,功耗小等优点,因此特别适用于工业领域传输小量的数据。
DS18B20是一款常用的温度传感器[4],这款传感器的体积小,精度高,同时它也具有较强的抗干扰能力和低廉的价格等诸多优点。DS18B20采用单总线接口方式,我们只需要一根线就能完成传感器与微处理器的连接,十分简便。它的测量范围在-55~125 ℃,工作电压为3.0~5.5 V/DC。无需增加其他外围原件和外围电路,可直接通过传感器进行温度的测量[5]。
MQ-2烟雾传感器是一款常被使用的烟雾传感器,它拥有十分广泛的探测范围,优异的稳定性,很高的灵敏度等诸多优点,只需要加简单的驱动电路就能够使用。这款传感器可用于各类工厂的气体检测,它同样适用于家庭,是一款应用十分广泛的产品。它可以用于丁烷,乙烷,丙烷,液化气,酒精,氢气,烟雾等的探测。
本系统将传感器的驱动和读取环境相关参数的程序加在终端节点的程序中,使终端节点在加入ZigBee网络的同时读取相关参数,并实现向协调器传递参数的工作。
2.2 主机模块的设计
主机模块与无线模块之间采用串口进行通信,串口通常也被叫做COM口,是采用串行通信方式的扩展接口。串口在上个世纪80年代推出,传输速率在115 Kb/s~230 Kb/s之间。串口通信的方式分为两种:同步通信方式和异步通信方式。本系统的ZigBee设备自带了USB口转串口的芯片,使用USB连接线即可与PC端相连,不过PC端仍需编写串口的程序对协调器传来的数据进行接收。串口接收的流程如图2所示。
图2 串口接收流程图
每个进程都至少需要一个线程,进程是资源分配的基本单位,线程是执行操作的基本操作[5]。进程可理解为一个正在运行的程序实例,可用来申请系统资源。一个进程可拥有多个线程,进程是线程的容器,但是具体完成某项操作,还是要靠线程来完成。本系统采用多线程的技术,一个线程负责串口数据的接收和处理,另一个线程负责PC端作为服务器对Socket端口的监听和TCP连接的保持。具体流程如图3所示。
图3 多线程程序的设计图
在主机模块需要对串口接收的数据进行判定,本系统使用阈值法进行火情的判断,阈值法是一种最简单也是最常用的判断机制,它根据专家经验设置一个阈值,当超过阈值后进行相应的反应,当不足阈值时不做反应,继续进行检测。本次实验采用温度和烟雾传感器,通过设置温度和烟雾的阈值,当超过阈值后进行相应的报警。同时因为采用了2个传感器,减少了因传感器不稳定造成的短暂超过阈值的误报警,极大地提高了报警的准确性,并且运行速度较快,能够及时对变量值的改变进行反应和报警,具有反应时间短等诸多优点。
2.3 安卓模块的设计
Eclipse是一个开发Java和安卓的主流开发平台,和安卓系统一样,Eclipse同样是开放源代码的。它只是一个框架,我们通过给Eclipse加上各种插件完成不同的开发任务。我们使用ADT插件在Eclipse上进行安卓的开发。Eclipse开发界面如图4所示。
图4 Eclipse的开发界面
Java在.net库中提供了两个类用于Socket网络编程供我们调用,他们分别是Socket和ServerSocket。它们分别表示通信的客户端和服务器端。通过IP号和端口号建立Socket,相应的函数如下。其中HOST为IP地址,PORT为端口号:
Socket=new Socket(HOST,PORT);
之后获取Socket流,并把流包进BufferedWriter进行读写。使用过后关闭流。通信中间的管道是通过输入输出流实现的,一旦这个通信的管道建立好了之后就可以通过管道在客户机和服务器之间进行通信。因此如果将通信管道关闭,那么同时也就关闭了Socket。
安卓和MySQL交互可以使用XML和HTTP POST两种方式。XML是一种可扩展标记语言,它可以用来标记数据和定义数据的类型,适用于www的传输。如果说超文本标记语言是用来显示的话,那么XML就是用来传输数据的。XML语言在1998年成为了W3C的推荐标准。XML兼容现有的协议,可以访问多种API,比如DOM,SAX,XSLT和Xpath等。对于数据的管理,XML同样有自己统一的格式,这使得数据的管理变得十分简单方便,此外XML允许不同系统间数据的交互,使得跨平台的系统实现成为了可能,不仅如此,XML使得底层数据的传输更具有可读性,我们可以通过分析器看出底层究竟传输的是什么数据。
除了XML,还可以通过HTTP GET和HTTP POST两种方式进行数据的传输。一般来说GET用于数据的获取,POST用于数据的更新,它可以用来改变服务器上的任意资源。使用POST需要用到表单,理论上使用POST是没有大小限制的,因为HTTP协议并没有对它进行限制,不过每个服务器都会有自己的限制。比起GET,POST的安全性更高,因为GET上的信息都会被明文显示在URL中,但是POST不会。
2.4 Web模块的设计
Web模块包括网页前台的编写和网页后台的编写,本系统采用了新浪公司的SAE平台进行HTML前台和PHP后台的开发[6]。
网页前台系统采用HTML语言开发,HTML语言结构分为头和主体两个部分。头部存放关于网页的一些信息,主体存放着网页的具体内容。HTML语言具有诸多优点,比如简易性,可扩展性,平台无关性和通用性。HTML语言没有复杂的语法,使用简单容易上手。与此同时,HTML能够在Windows,MAC等多种系统上开发和运行,它与平台无关的特性成就了www的广泛使用。最后,HTML是一个通用的标准,任何地方的任何设备都应该遵守这一标准在网上进行数据的传递和浏览。
网页后台系统采用PHP语言编写。PHP语言又叫做超文本预处理器,是一种常用的后台语言,它是开源的,吸收了C、Java、Perl等多种语言的特点。PHP主要用于Web平台的开发。PHP有诸多优点,它能够更快地执行网页,此外PHP支持现有的所有数据库和操作系统,并可以很好的与其他语言进行融合。PHP可以消耗较小的资源进行执行,此外具有很好的跨平台性,这些都为PHP的广泛使用提供了很好的条件。
可以使用mysql_connect函数打开数据库的链接,该函数的声明如下:
mysql_connect(server,user,pwd,newlink,clientflag);
其中,server规定要选择的服务器,user是用户名,pwd是密码,newlink和clientflag是可选项,规定了一些可选的特征。连接数据库成功后就可以调用SQL语句进行数据的操作。
Sina App Engine(SAE)是新浪公司2009年开始研发推出的首个国内App Engine平台[7]。新浪SAE吸收了Google,Amazon等多个公司的成功开发经验,为用户和开发者提供了一个全新的云计算和存储平台。SAE选用Web作为其开发方式,平台内部综合了数据库,HTML等多种开发环境,为中小型企业和个人开发者的软件开发提供了极大的方便。
3 系统的总体测试
3.1 无线模块的测试
首先将IAR的程序烧制到协调器和终端节点中,然后将协调器通过串口与主机连接,本次实验采用的ZigBee套件集成了串口转U口的芯片,可直接通过USB连接线与主机相连,打开协调器和终端节点。
接着打开串口助手,本次实验采用COM4串口,波特率为115 200,可以从串口观察到各终端节点传来的数据,其中第一位是节点的标志。
图5是串口助手观察结果示意图。
图5 串口助手观察结果
至此,无线模块的任务圆满完成。无线模块实现了目标区域温度和烟雾数据的收集,并实现了终端节点通过ZigBee网络向协调器进行数据发送及协调器通过串口向主机进行数据传输。
3.2 安卓端报警器的测试
首先打开安卓端报警器,进入初始界面后,在文本框中输入主机IP地址,与PC端主机建立连接。输入主机地址后开始进入监测模式,等待PC服务器端传来火情信息,若无火情信息,那么安卓端一直处于监测模式。若有火情发生,安卓端弹出火灾报警框并播放警示音乐提醒楼管人员,可通过点击“解除火警”按钮来结束报警。图6是安卓手机端进入监测模式示意图。
图6 安卓手机端进入监测模式
3.3 安卓端火情上传系统的测试
使用浏览器打开网页,进入数据库可查询实时的报警消息(见图7)。当安卓设备持有者确定火情发生后即可使用这款App方便的将火情地址传送到服务器上的数据库中。通过这款火情上传App,宿舍管理员可方便及时的将火情上传到服务器中,供消防人员和校园警察进行查询,并且快速的做出反应。
图7 报警信息的查询
4 结 语
ZigBee具有短距离、低成本、低功耗、易实现、安全可靠的特点,适合作为自动报警系统的组成部件。本项目设计了一种基于ZigBee技术的无线消防报警系统,实现了室内火警监测,解决了现有火灾报警系统设计、施工与维护复杂,抗干扰能力低,故障率和误报率高等问题。因此,基于ZigBee技术的自动报警系统,必将在未来的智能楼宇中得到更普遍的发展和应用。
参考文献
[1] Kinney P. ZigBee technology: Wireless control that simply works[C]. Communications design conference,2003, 2.
[2] Pengfei L, Jiakun L, Luhua N, et al. Research and application of ZigBee protocol stack[C]. Measuring Technology and Mechatronics Automation (ICMTMA), 2010 International Conference on. IEEE, 2010(2): 1031-1034.
[3] 刘明光.基于ZigBee无线技术的电气火灾监控系统应用设计[D].济南:山东大学,2010.
[4]李钢, 赵彦峰.1-Wire 总线数字温度传感器 DS18B20 原理及应用[J].现代电子技术,2006, 29(21): 77-79.
[5] 骆斌,费翔林.多线程技术的研究与应用[J].计算机研究与发展, 2000,37(4):407-412.
[6] 苏成君,何不廉.PHP在Web数据库的应用研究[J].计算机工程,2000, 26(9):184-185.
[7] 丛磊.新浪云计算 SAE 的技术演变[J].程序员,2013(4):58-59.