基于Android的燃气壁挂炉远程监控系统设计
2019-10-18李俊峰
李 俊 峰
(安阳师范学院软件学院 河南 安阳 455000)
0 引 言
在冬季,中南部没有集中供暖的屋内非常寒冷。为了取暖,人们想了各种办法。其中,利用燃气壁挂炉取暖,受到了很多家庭的青睐[1]。燃气壁挂炉可以单户安装,能对本户进行冬季供暖和热水洗浴。使用燃气壁挂炉供暖具有方便、快捷、舒适性比较高、节能环保等优点[2-3]。为了实现对室温的控制,需要远程控制壁挂炉的开关和能随时查看室内的温度;由于燃气壁挂炉在冬季经常开着,需要监控天然气是否会出现泄露和燃烧不完全的一氧化碳气体会否倒灌到室内。现阶段对于智能监控系统研究的很多,文献[3-4]等都研究了远程监控系统,但是与燃气壁挂炉相结合的远程监控系统却很难找到。
为了解决这些问题,本文把远程监控系统和燃气壁挂炉结合起来,开发了基于Android的燃气壁挂炉监控系统。该系统功能有:远程打开或关闭燃气壁挂炉;随时查看室内的温度;随时查看室内的危险气体是否超标;当室内危险气体超标时会自动关闭燃气壁挂炉。
1 系统总体设计
本系统由硬件系统和软件系统两部分组成。硬件部分是由协调器、控制燃气壁挂炉电源的智能开关、温湿度传感器和空气传感器组成的ZigBee无线传感网络[4-5];软件系统由用来存储监控数据的Yeelink云平台和Android手机端APP组成。系统总体设计如图1所示。传感器节点和智能开关加入ZigBee无线网络,温湿度和空气质量等参数通过ZigBee无线网络汇集到协调器。由于需要把数据上传到网络Yeelink云平台,需要实现协调器的联网,于是在协调器上额外接了一个W5500模块,这样,协调器就成为TCP客户端连接以太网内的主机,将终端节点发来的数据通过W5500上传给Yeelink云平台。Android手机上的APP就可以随时通过云平台远程监控和操作燃气壁挂炉。
图1 总体设计图
2 硬件设计
本系统的协调器是由TI公司ZigBee SOC CC2530芯片为核心进行设计的。它结合了领先的RF收发器、业界标准的增强型8051 CPU内核,并集成了ZigBee射频发射系统,TI公司为其制定了完备的软件协议栈z-stack。由于本系统的传感器节点比较少,并且距离不远,因此ZigBee网络采用星型网络进行布局。
2.1 智能开关设计
在对燃气壁挂炉设置完成后,只要接通燃气和电源就会自动开启加热,而关闭电源就会自动关闭壁挂炉。因此,为了实现对燃气壁挂炉进行控制,需要设置一个智能电源开关,通过智能开关接收到的信息,来打开燃气壁挂炉或者关闭燃气壁挂炉。
智能开关主要通过一个继电器控制电路来实现控制交流电回路的连通或者断开。继电器型号采用HRS3FNH-S-DC 5 V,最大可承受AC 250 V的电压,额定电流最大为10 A,能满足家用燃气壁挂炉的功率要求。用三极管驱动继电器的吸合与关闭,并联在线圈两端的二极管能为感性线圈提供泄放回路,提高电路安全性,延长继电器使用寿命,其输入端接CC2530的P0.1引脚。
2.2 终端节点设计
本系统主要监控室内的温度,防止燃气泄漏以及防止燃烧后排出的气体倒灌回室内,因此需要温度传感器和空气传感器。
温度传感器选用精度较高的DHT22温湿度传感器,可以通过单总线直接和CC2530相连接。
空气传感器采用TGS2600空气传感器,该传感器是由日本FIGARO公司开发生产的一种新型半导体气体传感器,能够非常灵敏地检测到空气中的低浓度污染物,对H2、CO和CH4等有较高的检测敏感度。TGS2600与CC2530的A/D转换接口P0.6相连接。
空气传感器和温湿度传感器信号的采集、处理和对继电器开关的控制都是由CC2530内部集成的8051控制器来完成的,而ZigBee网络之间数据的传输由CC2530内部集成的RF收发器来完成的。
2.3 协调器和网关设置
协调器主要负责ZigBee网络的发起、配置参数的设定、网络信息的管理及维护功能[6]。协调器部件主要由CC2530芯片作为主控芯片,RF前端芯片选用TI公司的集成度很高的射频前端芯片CC2591。通过协调器,可以主动和其他终端结点组成一个ZigBee网络。协调器能收集这些终端结点的刷新数据,也可以将执行命令通过ZigBee网络传递给相应终端。
由于需要将协调器收集到的数据传递到云端,而CC2530芯片无法实现对互联网的连接,只能通过串口将收集到的数据传出去。这样就需要一个联网设备。W5500是WIZnet公司推出的一款在硬件上实现了TCP/IP协议的以太网芯片,通过该芯片无需其他设备进行数据转换就可以作为网关直接连接互联网。CC2530实质上是一款MCU(微控制单元),而W5500可以通过SPI接口与MCU进行通信。CC2530片上有两个SPI接口,我们可以选择其中一个作为W5500的控制接口。
3 软件设计
3.1 总体框架
本系统通过Android手机APP发送命令给Yeelink云服务器;云服务器将接收到的命令发送给室内的网关W5500;W5500对接收到的控制命令进行解析和处理,然后将处理的结果发送给协调器模块;协调器通过ZigBee网络将命令发送给相应的终端结点;终端结点接到命令后进行响应,从而实现Android手机监控室内环境并实现对燃气壁挂炉的开关控制。数据传输如下:各个传感节点将数据通过ZigBee网络传输给协调器,协调器对数据进行处理,若超出,就将控制信息传递给智能开关终端,从而控制控制开关的闭合或者打开。在判断数据的同时,协调器把数据通过网关W5500,上传到互联网上的云服务器存储起来,最后在Android手机请求数据时,将数据传递给APP。终端结点的控制图和数据流图如图2所示。
图2 终端结点的控制图和数据流图
系统的软件设置主要包括ZigBee终端节点设置、协调器设置、网关设置、云端设置和Android手机客户端设置几部分。
3.2 协调器和终端结点模块设计
协调器模块是ZigBee网络的主要控制器,主要负责网络的建立、维护和数据的中转[7]。还可以通过公司为CC2530提供的ZStack协议栈控制ZigBee网络。
(1) 对网关W5500的处理 在该协议栈中,需要先将W5500的驱动程序包添加到CC2530的例程中,去掉“LCD_SUPPORTED”,并添加“HAL_LCD=FALSE”,这样能避免与LCD驱动发生冲突,导致SPI不可用。将W5500的初始化和相关配置函数放在应用层的任务里面执行,当系统运行起来后,系统会每隔一段时间就要对W5500的网络状态进行一次轮询处理,该处理放在应用层sapi.c文件中的ZB_USER_EVENTS函数中。Sapi.c文件中定义了节点组网和入网的应用函数。该文件里初始化了SAPI 任务,在这个任务中定义了ZB_ENTRY_EVENT和ZB_USER_EVENTS两个事件,ZB_ENTRY_EVENT仅仅运行一次,用来定义设备的类型(协调器或终端节点),ZB_USER_EVENTS处理用户事件,会运行多次。
该配置函数能启动TCP客户端程序,用来维护W5500设备与云服务器的连接,使得W5500在插上网线后能够及时连上Intent云服务器。
(2) 温湿度传感器和气体传感器的设计 数据的采集需要在协调器的应用层添加定时采集函数,协调器定时给相关传感器终端结点发送采集命令。本系统采用DHT22温湿度传感器采集室内的温度数据,当终端节点接收到采集命令时进行采集,并将采集结果通过ZigBee网络上报给协调器进行处理。采用TGS2600空气传感器采集燃气壁挂炉附近的气体信息,当终端结点接收到采集命令时候进行采集,并将采集到的数据通过ZigBee网络上传给协调器进行判断处理。
(3) 协议栈中对燃气壁挂炉的智能开关控制逻辑 在协调器接收到终端结点发送的数据后,在通过网关上传到云端服务器的同时,需要在协议栈中数据进行判断处理。首先通过APP设置室内温度,通过气体传感器取得有害气体浓度并判断是否达到预警值,当达到预警值时需要对燃气壁挂炉开关进行控制。
在对燃气壁挂炉的控制上,本系统在运行时候主要分为手动模式和自动模式。手动模式就是不管室温如何,只能用手动(或通过操作Android手机中的相应APP)来开关壁挂炉。自动模式则是通过程序判断,当温度达到某一值时候自动通过智能开关打开或者关闭燃气壁挂炉,达到节省资源的目的。当气体浓度达到某一危险值时候,会将模式自动切换为手动模式并关闭燃气壁挂炉。具体的程序流程图如图3所示。
图3 协调器对智能开关的控制图
3.3 云端服务器设置
本文使用Yeelink云服务器作为整个系统连接家庭网关和手机APP的纽带,根据命令实现对整个系统的数据的传输[8-9]。Yeeklink是一个开放的公共物联网接入平台,能使传感器数据的接入、存储和展现变得轻松简单。使用该平台,需要首先注册一个账号(APP KEY),作为不同用户连接设备的唯一标识;接着将系统用到的传感器通过“添加新设备”的方式,添加到Yeeklink平台上;然后下载yeelink SDK,用自己注册的APP KEY和设备的信息替换掉原来的默认信息。这样就完成了云服务器传感器的连接。
3.4 Android客户端设置
通过Android客户端我们能时刻关注家里温度情况和燃气壁挂炉的工作情况,还可以通过Android客户端实现对燃气壁挂炉的控制。由于访问网络是一个耗时操作,需要开启一个子线程,在子线程中创建基于TCP/IP协议的Socket输入输出流,用来接收和发送网络数据。子线程中得到的数据,不能直接显示到页面上,需要通过handler消息机制,将接收到的数据发送到主线程并显示到主页面中。
页面主要用到:TextView控件,用文本显示接收到的数据内容;Switch控件,用来设置手动模式或自动模式,还用来控制壁挂炉的开关状态;EditText控件和Button控件,用来设置室内的温度; LineChartView控件,这是个第三方控件,利用图表的形式直观地呈现一段时间室内的温度情况。
当操作Switch控件和Button控件的时候,需要在主线程中设置事件监听器。当监听到控件状态改变的时候,触发联网子线程,通过网络将相应的命令发送给云服务器。
4 系统测试
测试系统硬件由2个温度传感器节点,分别放置在一个卧室和客厅、1个空气传感器节点、一个智能开关节点、一个协调器模块和一个Android手机组成。
在测试中,主要测试温度数据的采集、有害气体超标的响应和手机对智能开关的控制。设置家里温度为18 ℃,利用自动模式进行测试。在2个温度传感器节点附近放置两个家用温度计同时测试并记录测试结果。由于用了两个温度传感器节点,显示的温度是两个温度传感器的均值。
温度计测试结果平均值和传感器测试平均值实时温度趋势图如图4所示。其平均温度误差不超过0.2 ℃。
图4 实时温度平均值趋势图
由于太短时间内的室内温度变化比较小,用图显示意义不大,因此,将每半个小时的平均气温进行比较,结果如图5所示。
图5 燃气壁挂炉状态监控图
为了测试在有害气体浓度升高时候系统的有效性,将气体打火机的气体靠近气体传感器进行排放。随着气体的排放,智能开关关闭了燃气壁挂炉的电源,壁挂炉停止了工作;在手机APP中,看到模式自动切换到了手动模式,可燃气体浓度也变成了“危险”,壁挂炉模式变成了“手动”。具体如图6所示,经测试,用手机APP能打开和关闭燃气壁挂炉,能准确感应有害气体并响应。
图6 有害气体升高后的状态图
测试结果表明:该系统基本完成了设计要求。能远程实时监控室内温度,监控温度与实际温度误差不超过0.2 ℃,当有害气体超标时候,能及时切断燃气壁挂炉电源。
5 结 语
本文设计了基于Android的燃气壁挂炉监控系统。传统壁挂炉系统的温度设定、监控和有害气体监控都是基于本地,不能远程及时查看及管理。本系统能通过手机APP,实时监控和管理燃气壁挂炉的状态。测试结果表明,该系统安全经济,稳定性高,人机界面简洁直观、实用性强。