基于STM32的室内空气质量检测系统设计
2017-11-02汤祥虎秦会斌董胜奎
汤祥虎 秦会斌 董胜奎
摘要:以STM32单片机为控制中心,运用多種传感器,设计了集室内空气质量检测、显示与报警功能的空气质量检测系统。该系统利用传感器对空气中的PM2.5、有害气体、空气温湿度等多种参数进行检测,通过WiFi模块将数据上传到手机等移动设备,空气质量达到警戒线时将触发系统报警。该系统可靠性高、成本低,检测方便快捷。
关键词:STM32;传感器;空气质量检测;WiFi
DOIDOI:10.11907/rjdk.171587
中图分类号:TP319文献标识码:A文章编号:16727800(2017)010013203
0引言
随着经济的高速发展,环境污染问题也越来越严重,尤其是空气污染。2013年 “雾霾”成为年度关键词,更加引发了人们对空气质量的担忧。空气中的污染物主要包括可吸入颗粒、悬浮颗粒物、一氧化碳和二氧化硫等[1]。空气是人类生存的基础,空气质量影响人们的身体健康。空气污染会引发多种疾病,包括呼吸道疾病、慢性支气管炎和慢性肺病等[2]。人们大部分时间在室内,室内空气质量更让人关注,为此,设计了基于STM32的室内空气质量检测系统。系统以STM32为核心控制器,通过多个传感器模块对空气中的一些重要参数进行检测,并通过WiFi模块将检测到的数据上传到手机等移动设备上,人们可随时知晓室内空气质量情况。
1系统总体设计
系统集数据检测、显示与报警于一体,主要包括控制模块、WiFi模块、Android终端设备。
控制模块是整个系统的核心,包括STM32处理器、传感器、供电系统以及报警系统,主要工作是数据的采集,并为系统提供电源[3]。传感器获取空气质量的参数信息,STM32把获得的信息发送给WiFi模块。当参数超过一定值时,STM32控制报警系统报警。
WiFi模块的主要功能是负责无线终端设备接入和数据传输。
Android终端设备包括智能手机、平板电脑等智能终端,它的主要功能是显示室内空气参数,接收用户命令并发送到处理器。
2系统硬件设计
系统硬件设计如图1所示。
2.1控制芯片选择
主控芯片采用意法半导体的STM32F103C8T6,该器件拥有128K字节的闪存和20k字节的SRAM,2个12位的ADC,3个通用16位定时器,1个高级定时器,3个USART接口,1个USB接口,2个SPI接口和1个CAN总线接口。该芯片性价比、可靠性和稳定性高,程序易于移植。
STM32通过控制各种传感器,获得空气质量参数,并将数据发送给WiFi模块。
2.2灰尘传感器
灰尘传感器采用GP2Y1051AU0F[2],该传感器原理如图2所示。
GP2Y1051AU0F传感器由发光二极管LED和光电子跃迁材料晶体管对角布置,能检测到空气中的灰尘散射光,特别是能有效检测非常细的粒子。该传感器会根据灰尘浓度的不同输出不同的电压值,通过得到的电压值转换为灰尘颗粒浓度。
GP2Y1051AU0F与主控芯片可采用AD采样和串口通信两种方式,本文选择串口进行通信。串口输出值即为灰尘浓度转换后的电压值。灰尘浓度与采集得到的电压值成线性关系,通过电压值很容易得到空气中的灰尘浓度,如图3所示。
2.3有害气体传感器
TGS2602传感器是检测有害气体的传感器,对低浓度有气味气体有很高的灵敏度,如氨气、硫化氢,对低浓度的VOCs(挥发性有机物)也有很高的灵敏度,如甲苯[4]。该传感器由传感芯片和加热器组成。检测气体时,传感器的电导率随空气中的被测气体浓度增加而增加。
TGS2602有加热电压VH和线路电压VC。加热电压加在与传感器集成的加热器上,以保持传感器在一个特定的最佳温度。线路电压用来与负载RL测量电压VOUT,VOUT值随空气中的有害气体浓度的变化而变化,这样得到空气中有害气体的浓度[5]。
2.4温湿度传感器
温湿度传感器DHT11是常用的一款含有已校准数字信号输出的温湿度复合传感器[6]。该传感器抗干扰能力强、校准精确,具有极高的可靠性和稳定性,电路如图5所示。DHT11采用简化的单总线通信,系统数据传输、控制均由单总线完成。
2.5WiFi模块
WiFi模块选取ATK-ESP8266。该模块是ALIENTEK推出的一款高性能串口-无线模块,采用串口与MCU通信,内置TCP/IP协议栈,能实现串口与WiFi之间的转换。该模块只需简单的串口配置就可传输数据。
3软件设计
3.1MCU控制程序设计
系统启动后,首先初始化。初始化寄存器、中断、定时器与各传感器。初始化后启动各个传感器进行检测,得到的数据发送给WiFi模块,WiFi模块将数据发送到手机等移动设备上。当检测到气体质量严重到一定程度时,触发报警模块报警。程序流程如图6左侧所示。
单片机还要接收移动客户端发来的查询和控制命令。这里通过中断完成,当WiFiI模块接收到来自移动端发来的命令后,通过串口发送到STM32,这时产生一个中断,在中断函数中完成命令,流程如图6右侧所示。
系统主函数部分程序如下:
SysInit();
while(1)
{
pm2_5=Get_Data_Pm25();
povc=Get_Data_povc();
If(Data_is_ok(pm2_5,povc))
Send_data(pm2_5,povc);
else
Alert(pm2_5,povc);endprint
Delay();
}
在处理中断过程中,要用到嵌套向量中断控制器NVIC。在STM32系统中,抢占式优先级(NVIC_IRQChannelPreemptionPriority)和响应优先级(NVIC_IRQChannelSubPriority)共同构成了一个中断优先级。可通过嵌套中断向量控制器(NVIC)来分配先占优先级和次占优先级数量:
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0
通過上段代码就可将中断的抢占优先级和响应优先级都设置为0。
3.2Android客户端设计
手机客户端程序由登陆模块和通信模块组成。
在登陆模块中使用Android系统提供的SQLite数据库。Android提供了一个名为SQLiteDatabase的类,该类封装了一些操作数据库的API,使用该类可进行数据的添加(Create)、查询(Retrieve)、更新(Update)和删除(Delete)等操作。利用该数据库创建名为“user.db”的代码:openOrCreateDatabase(String path,SQLiteDatabae.CursorFactory factory)。其中path为存放数据库路径,第2项通常置为null。利用Android提供的API可对表和数据方便地操作。
在通信模块,为了实现数据传输,采用Socket通信,它是基于TCP/IP协议的网络通信协议。基于TCP/IP的Socket类型主要有流套接字和数据包套接字。流套接字提供了可靠的字节流服务,在通信之前要先建立连接,速度比较慢。数据报套接字使用UDP协议,面向无连接的数据传输,速度比较快。
客户端工作流程如图7所示。
客户端程序主要代码如下:
socketAddress=new InetSocketAddress(strIP,SERVER_PORT);
socket = new Socket();
socket.connect(socketAddress, SERVER_PORT);
inputStream = socket.getInputStream();
outputStream = socket.getOutputStream()
该程序创建套接字并连接服务器。其中,strIP是服务器的IP地址,SERVER_PORT是服务器的端口号,连接好后即可与服务器进行通信。
4实验结果
将测试系统放在室内,打开之后通过手机客户端固定间隔时间查看PM2.5浓度和POVC浓度,结果如图8和图9所示。
5结语
本文设计的室内空气质量检测系统能检测室内空气中PM2.5、有害气体浓度及室内温湿度,及时发送到Android客户端显示,并能对严重污染空气发出警报。系统可靠性高、成本低,能满足人们对空气质量检测的需要。
系统还有不足之处,如该系统只对空气质量起到检测作用,无法对室内空气作净化处理,这是需要改进的地方。
参考文献:
\[1\]许元,牛熠,肖达根.一种空气质量检测系统的设计与实现[J].电子技术与软件工程,2016(2):7778.
[2]刘少军,王瑜瑜.基于单片机控制的空气质量检测系统的设计[J].机械与电子,2015(1):5356.
[3]陈双叶,徐文政,丁双春,等.智能家居室内空气质量检测、评价与监控系统设计[J].信息通信技术,2016(3):4956.
[4]袁绪,宋康,查长海,等.基于STC12C5A60S2的空气质量检测系统设计[J].电子设计工程,2015(6):132135.
[5]文晓刚,刘锐,蔡强,等.一种可同时检测挥发性氯代烷烃和氯代烯烃的电子鼻的研制[J].环境科学,2012(11):40124017.
[6]韩丹翱,王菲.DHT11数字式温湿度传感器的应用性研究[J].电子设计工程,2013(13):8385.
责任编辑(责任编辑:杜能钢)endprint