基于Arduino的可燃气体报警系统设计

时间:2022-06-22 06:27:53

基于Arduino的可燃气体报警系统设计

摘 要:针对公共汽车等公共轨道交通缺少安全消防检查的现状,利用Arduino软、硬件平台与ZigBee技术搭建的无线传感器网络可实现远程实时监控可燃性气体浓度的目的。测试结果表明,该系统具有低成本、精度高、低功耗、性能稳定等优点,具有广阔的应用前景。

关键词:Arduino;物联网;ZigBee;防火报警

中图分类号:TP277.1 文献标识码:A 文章编号:2095-1302(2017)01-00-02

0 引 言

随着社会的发展,人们的生活环境和生活方式也在发生改变,汽油、天然气等重要能源已普遍应用在生活中,然而在带来便利的同时,火灾的危险性也日益凸显。在火车站、机场等公众场合往往会安排安检措施以检查汽油等易燃易爆物品,然而在公共交通方面,如公共汽车缺少相应的检查措施。本文基于该背景设计了体积小、成本低、安装方便的可燃气体报警系统。利用汽油等燃料易挥发的特点实时监测空气中可燃气体的浓度,提前预警,避免事故发生,保护人身和财产安全。

本系统利用Arduino强大的拓展性来开发可燃气体报警系统,将Arduino单片机作为控制核心,在特定封闭环境中,将可燃气体浓度和环境温度等数据经处理后传送到客户端,用户通过客户端获知当前环境中可燃气体的情况,实现实时监控。

1 系统总体设计

可燃气体报警系统由Arduino控制模块、电源模块、可燃气体传感器模块、温度检测模块、ZigBee通信模块和客户端检测模块组成。其中,可燃气体检测模块包括可燃气体传感器、放大电路部分。在一个密闭空间中如果发生可燃气体泄露等情况,传感器会产生可靠的线性模拟信号,而这正是检测可燃气体浓度的关键。Arduino控制模块是本系统的核心部分,负责处理可燃气体传感器和温度传感器检测到的数据,并将数据进行打包处理,再通过蓝牙将结果发送到客户端进行分析。系统整体设计方案如图1所示。

2 系统硬件设计

2.1 Arduino平台

Arduino UNO是一款基于ATMEGA328的微处理器,被广泛应用于嵌入式系统设计开源的电子设计平台。它有14个用来输入/输出数字信号的引脚,其中6个可以作为PWM波的输出,它还具有6个模拟信号输入引脚,32 KB Flash和1 KB E2PROM,更方便的是,Arduino UNO预装了Bootloader程序,不需要外部烧写,很容易编写代码并通过USB端口下载到板子上。在软件方面,Arduino UNO具有自身的IDE,在Windows、Mac OSX和Linux等平台上都可以方便的开发,大大简化了嵌入式系统的设计过程。本系统采用Arduino UNO处理模块作为微控制器,利用其低功耗特性和便捷灵活的硬件特点实现对传感器采集信号的接收和处理功能,使其作为系统和核心控制模块。

2.2 可燃气体传感器MS6100

在选择传感器时,传感器的外观大小和适用环境是最重要的两个因素,大部分气体传感器在使用前都需要预热几个小时。文中使用的Arduino单片机最高可以承受约500 mA的电流,所以对本系统来说,更关注的是传感器的外观要尽可能小,功耗尽可能低。

可燃气体传感器用于检测空气中可燃气体的浓度,由于可燃气体的种类很多,性质也有较大差异,而单一传感器只能检测到单一特性的气体种类,所以本系统针对汽油和天然气使用MS6100气体传感器。该传感器的耐用性、稳定性、快速响应、线性输出使其适合许多可燃气体的检测,它可以将检测到的气体浓度信号转换成电压,随着可燃气体浓度的上升,传感器表面的催化层吸收气体后阻值增大,再通过LM2903运算放大器将电压值放大到能被单片机接收的程度,方便通过电压值的变化来测量可燃气体的浓度。可燃气体检测模块电路如图2所示。

由于可燃气体传感器受温度的影响较大,当环境中的温度升高时,会影响检测效果,所以需要外接温补电路。利用温敏电阻阻值随温度变化而变化的特性补偿传感器的电压输出。图2中的DATA端为信号输出端,将输出的模拟信号发送到Arduino单片机中。

2.3 ZigBee通信模块

近几年常用的近距离无线通信技术主要包括WiFi(IEEE 802.11),ZigBee和蓝牙技术,它们的侧重点各不相同,其中ZigBee凭借其可靠、安全和低功耗等特性深受广大电子爱好者的欢迎,被广泛应用在各领域中。ZigBee是一种适用于短距离、低功耗、低成本的通信技术,适合短距离无线数据传输,可构成无线传感器网络。

考虑到无线传输距离、低功耗、低成本和稳定性等设计需求,本系统使用基于ZigBee协议的XBee Pro ZB通信模块,这是一款内置协议栈的ZigBee模块,只需要简单设置模块参数即可完成串口间的数据通信,实现数据采集和上位机显示过程中的通信连接。连接电路如图3所示。

如图3所示,XBee模块和Arduino单片机之间通过串口通信,发送端使用Arduino单片机通过串口向XBee模块写入数据,而在接收端同样使用XBee模块接收数据并通过串口发送到客户端。数据作为异步串行信号在模块间传输,当没有信号时串口空闲。在使用之前需要对波特率、奇偶校验、启动位、停止位和数据位等串行通信进行设置,同时需要对发送端的XBee模块进行配置,将DH和DL(目的地址)设置成接收端模块的源地址以确保成功发送。

3 系统软件设计

3.1 程序流程图设计

系统软件的开发部分通过Arduino提供的IDE环境编写。主要包括数据采集、信号发送、信号接收、数据处理和实时显示等功能。Arduino系统在启动后先运行setup(),对端口、传感器等设置进行初始化和通信波特率的设置,然后运行loop()函笛环处理程序。其编程语言类似C语言,可以直接通过USB烧写在单片机上。在本系统中ZigBee模块负责网络通信,将传感器检测到的可燃气体浓度数据通过串口发送到客户端。客户端接收数据后进行处理,计算连续两次数据间的差值,如果电压数值明显升高,则意味着当前环境中检测到气体浓度上升,需要预警提示。信号发送端的程序运行流程如图4所示。信号接收端的程序运行流程如图5所示。

3.2 算法简述

在实际应用中,可在多个位置安装传感器以检测可燃气体的浓度,每个节点的ZigBee模块在发送数据之前加上该节点的标识符以示区分。数据处理简略代码如下:

int Ans = strtol(data + 3, NULL, 10),pOutA;//10进制提取数据

Ans = constrain(Ans, 0, 255); //将限制在0~255范围内

a[countA]=Ans;

Serial.println("A" + a[countA]);//串口打印数据

if(countA!=0)

{

pOutA=a[countA]-a[countA-1];//后项减前项

if(pOutA>5 && a[countA]>STABLE)//pOutA超^阈值报警

{//触发警报

}

}

4 结 语

本文基于Arduino的可燃气体报警系统设计,重点阐述了可燃气体传感器MS6100的电路设计和Arduino单片机配合ZigBee模块进行通信的功能实现,能够对环境中的可燃气体浓度进行有效监测。电脑上运行的串口调试工具屏幕显示如图6所示。客户端接收分别标记为A、B、C、D 共4个节点发送来的数据。当汽油靠近C节点时,该节点的电压明显升高,接收信号出现明显变化。实验表明,该系统在实际环境中的运行效果稳定,误差相对较小,达到了预期的设计目标。利用单片机控制特定的传感器数据采集从而实现对外部环境的监控,在工程实践中具有重要意义。

参考文献

[1]石志国,王志良,丁大伟.物联网技术与应用[M].北京:清华大学出版社,2012:22.

[2]毛鹏军,姜水,王俊,等.基于ZigBee 技术的温室环境无线监测系统设计[J].中国农机化学报,2015,36(1):102-106,115.

[3]Robert Faludi. Arduino无线传感器网络实践指南[M].沈鑫,等,译.北京:机械工业出版社,2013.

[4]李朝青.单片机原理及接口技术[M].北京:北京航空航天大学出版社,2006.

[5]董哲,宋红霞.基于ZigBee的无线仪表通信系统的研究[J].工业仪表与自动化装置,2013(6):55-58.

[6]王小强.ZigBee无线传感器网络设计与实现[M].北京:化学工业出版社,2012.

[7]曾金,雷建云.基于Arduino的果园基地环境Web监测系统设计[J].物联网,2016,6(8):60-61.

[8]吕延杰.物联网的由来与发展趋势[J].信息通信技术,2010,4(2):4-8.

上一篇:基于ZigBee协议的无线通信网关的设计 下一篇:Wipace智能鞋传感器