标题 | 基于STM32的室内空气质量检测系统设计 |
范文 | 汤祥虎 秦会斌 董胜奎 摘要:以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); 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. 责任编辑(责任编辑:杜能钢) |
随便看 |
|
科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。