摘要: 目前市面上的空气质量检测仪通常只能检测少数几种气体,面对空气中多种有害气体,就要使用不同的检测仪器。针对现有检测系统功能不全等问题,开发了由STM32单片机、各类传感器、LCD显示屏和WiFi通信模块组成的多功能检测系统,并利用机智云物联网平台传输数据到用户终端。该检测系统能够实现对空气中的CO、CO2、PM2.5、TVOC、甲醛的含量以及温湿度进行实时监测,并具有超标报警功能。
1引言
空气中的有害物质直接影响人们的心身健康,室内空气的危害气体主要有CO、CO2、PM2.5、甲醛等[1]。温湿度对人的舒适度有较大影响,低湿度环境对人有多种不利影响[2-4]。因此,对空气中的有害气体及环境的温湿度进行检测是必要的,对人员密集、活动频繁的室内公共场所进行空气质量检测尤为重要。空气质量检测方法可以根据检测内容的不同进行设计。采用STC系列单片机可设计出室内温湿度、PM2.5颗粒物浓度检测方法[5]。
利用STM32单片机能实现对室内温湿度、PM2.5以及甲醛浓度检测,数据可采用蓝牙通信方式传输到手机[8],也可利用网络和Lo Ra(Long Range)无线通信技术实时地将检测结果上传至上位机[9]。上述方法对空气质量的检测主要对象是温湿度、PM2.5、CO、CO2甲醛浓度等,而且一台检测设备也难以完成这些目标的同时检测。在数据传输方面,蓝牙通信距离短、可靠性不高,Lo Ra无线通信技术系统较复杂,成本相对高。
实际上,空气中的有毒有害气体比较多,例如空气中的TVOC(TotalVolatile Organic Compounds总挥发性有机物,简称TVOC)对空气质量影响大,引起了人们的高度重视。因此,针对目前空气质量检测系统功能少的现状提出了一个新的设计方案,系统设计以STM32单片机为主控器,由有关功能传感器和Wi Fi无线通信模块组成,利用机智云和Wi Fi无线通信技术将数据传输到用户终端,实现数据共享。该方案可完成多种有害气体的检测,同时能对温湿度进行监测。
2 系统设计方案
空气质量检测系统可检测多种有害气体,对环境的温度、湿度能进行监测,检测到的数据信息可上传到机智云物联网云平台,并发送到用户终端,设计目标和技术指标如下:
2.1 设计目标与技术指标
2.1.1 设计目标
(1) 具有能够检测CO、CO2、甲醛、TVOC、PM2.5和温湿度检测功能。
(2) 能够在LCD屏上实时的显示相关检测数据。
(3) 利用Wi Fi无线通信技术上传数据到机智云物联网云平台。
(4) 能将数据发送到用户终端,实现用户手机及电脑等设备远距离传输。
(5) 具有对有害气体超标提示与报警功能。
2.1.2 主要技术指标
系统设计的技术指标如表1所示:
表1技术指标要求
2.2 系统组成与模块选型
2.2.1 系统组成
根据设计目标构建系统组成,如图1所示,系统主控制器为STM32,数据采集部分由二氧化碳(TVOC、温湿度)传感器模块、甲醛传感器模块、PM2.5采集模块以及一氧化碳采集模块构成,此外还有显示、报警以及Wi Fi无线通信模块。
图1 空气质量检测系统组成框图
2.2.2 功能模块的选择
(1)系统主控制芯片的选择
控制器是系统的主要器件,在满足功能要求的情况下主要考虑性价比,通过对目前市面上比较流行的几大主流单片机芯片对比分析,系统设计宜选用STM32F407ZGT6单片机,该芯片具多个串口,主时钟频率达到168MHz。
(2)PM2.5传感器的选择
PM2.5传感器种类多,有普通传感器,也有激光传感器,可根据精度要求和价格进行选择,相对于普通传感器,激光PM2.5传感器精度高但价格贵许多,本次设计选用价格低的夏普GP2Y1014AU作为PM2.5传感器。
(3)二氧化碳(TVOC)与温湿度传感器选择
考虑到系统功能需求,采用CCS811传感器,它既可检测二氧化碳,又能作为TVOC传感器使用。温湿度传感器选用HDC1080模块,它与二氧化碳(TVOC)传感器集成在一起,采用IIC总线传输数据,体积小。IIC总线类型的传感器结合在一起有利于节省I/O口资源。
(4)一氧化碳以及甲醛传感器模块的选择
一氧化碳(CO)与甲醛属于高危气体,考虑到安全性要求,CO传感器选用ZET07-CO模块,甲醛传感器采用英国达特SMT8404数字式模块,主要是因为这两款传感器是以串口方式传输信号,而且数字信号传输不易受到外界干扰。
3 系统硬件设计
系统硬件设计主要是对各种传感器、Wi Fi无线通信模块等功能器件与STM32单片机的接口电路设计。功能单一的传感器接口电路简单,下面介绍主要的模块接口电路。
3.1 CJMCU-8118传感器模块采集电路设计
CJMCU-8118模块就是CCS811二氧化碳(TVOC)传感器与HDC1080温湿度传感器组合体,采用IIC总线,CJMCU-8118模块与STM32单片机的连接方式如图2所示,其中SCL是IIC数据传输的时钟,SDA为IIC的数据线,WAK是一个使能信号线。
3.2 串口数据传输器件电路设计
系统设计使用四个串口类型的数据传输器件,分别是CO传感器模块、甲醛传感器模块、串口LCD屏幕以及Wi Fi8266模块。这四个串口类型模块与STM32单片机的连接方式如图3所示。采用5V供电电压,其中CO模块连接的是单片机的串口P4,甲醛模块连接的是单片机的串口P3,LCD屏幕连接的是单片机的串口P2,Wi Fi8633模块连接单片机时,需要GBC_LED与GBC_KEY作为控制信号设置Wi Fi8266模块的工作模式。
图2 CJMCM-8118与STM32接口电路
图3串口类模块与单片机连接图
4 系统软件设计
4.1 主控程序设计
在系统运行时可能会出现外界的干扰,为了防止系统在遇到干扰时无法正常运行,系统在软件设计上加入了看门狗程序,保障系统运行不出差错,程序流程图如图4所示。STM32F4的中断系统可配置16个不同优先级别的中断,并且中断之间还可以嵌套中断。首先对单片机初始化,进行优先级分组,在此配置两个响应优先级和两个抢断优先级。
统滴答计时器的初始化是为了做精准的延时而准备的,延时函数在每个模块基本上都有调用。最后对各个模块初始化,主要是对STM32F4最小系统I/O口的参数以及模式进行配置,主要有串口的配置、ADC、IIC、PWM的功能配置。完成了初始化后,系统开始检测Wi Fi模块有没有成功连接路由器。在Wi Fi成功连接之后开始接收数据,与设定数据进行比较,是否有CO、甲醛超标,有超标则蜂鸣器警报,并通过通信方式向手机APP或者PC端发送警报。没有超标将会继续判断CO2、TVOC、温湿度、PM2.5是否超标,如果有超标,系统显示屏将会红色提示,否则,显示屏将会是蓝色,表示正常。
图4主程序流程图
4.2 WiFi模块程序设计
在对Wi Fi模块进行编程之前,先要对WiFi模块进行固件库改写,在固件库改写成功之后才能进行编程,程序流程图如图5所示。图中的喂狗就是上一节提到的看门狗程序,协议处理可直接调用库函数实现。WiFi设备通过配置入网,可由按键启动相应的连接模式,并对配置好的路由器进行连接。
WiFi设备与机智云服务器是双向通信,APP端的操作信息通过机智云服务器发送到Wi Fi设备,WiFi设备接收完成后,单片机(MCU)将会收到协议帧格式的数据,缓冲区将会储存数据。每隔一段时间都会进行一次抓包,然后将数据进行解析,解析后的数据能被MCU识别从而发起事件处理。传感器采集的数据能够被MCU储存,然后这些数据通过协议封装成数据帧发送到WiFi设备,WiFi设备将数据输送至机智云平台的云端服务器,再传输到用户终端。
图5 WiFi模块工作流程图
4.3 传感器模块程序设计
4.3.1 PM2.5传感器模块程序设计
PM2.5传感器主要用到了ADC变换以及PWM脉冲信号配合才能得到采集的数据。采样程序是根据夏普官方说明书中提到要接入一个280us低电平和9720us高电平的PWM信号作为启动信号。通过计算PWM的周期能达到10ms,PM2.5模块只有在PWM低电平280us后才开启转换,因此这时候的ADC采样才是有效的。程序设计时ADC的初始化是通过配置寄存器把管脚功能复用为ADC,PWM初始化是配置PA4管脚相关参数。
根据夏普PM2.5官方提供的典型粉尘电压转换图,如图6所示,可计算粉尘浓度。但是由于起始电压的典型值在不同的地区会有不一样的取值,实际上在很多地区的无尘电压为0V。由图6可知,电压变化范围在0.0V~3.5V时,粉尘浓度与电压呈线性关系。
图6粉尘电压转换图
电压值的转换计算:
粉尘转换计算:
由公式(1)(2)得出总的计算公式:
注:因ADC是12位,212的值是4096,但计算机中12位的非负数补码最大值是4095,公式(3)需要进行修正,修正值为500/4095=0.12,因此,公式(3)要减去0.12,这样实际测量值更准确。
4.3.2 CJMCU-8118模块程序设计
CJMCU-8118模块的信息采集是通过IIC总线进行的,IIC协议启动、停止、等待ACK到来的时序都是通用时序。在IIC总线的通信中要求时钟速度不能过快,否则将会丢失数据,导致无法进行数据的采集。IIC协议内容也相对比较简单,在使用时可以直接调用相应的库函数。IIC总线中规定读取寄存器数据必须选择对应的地址,写入信息之后停止,重新启动才能真正开始读取储存器的数值。
要读取相应的CO2、TVOC、温湿度大小必须将其地址写入传感器,才能获取相应的转化值。写入地址信息以及配置好模块的模式之后,要用IIC的读数据方式。读完数据之后没有应答信号,结束一次数据的读取。程序设计时二氧化碳与TVOC直接是16位的ADC转换值,温湿度计算转换根据官方资料提供的公式。
温度计算公式:
湿度计算公式:
4.3.3 甲醛与一氧化碳模块程序设计
这两个传感器使用的传输方式都是串口方式,并且在数据传输上是一致性,所以两个模块的程序设计方法相同。串口通信(USART)初始化是配置好相应的复用功能,串口采用中断接收的方式,下一步就是要对中断服务函数初始化。在中断数据接收中判断数据是否为0xff的16进制编码,如果是则进一步开始保存相应的数据,当数据达到8位的时候停止接收。经过这一个流程就能完成一次数据的接收。程序设计时根据表2计算CO浓度与甲醛浓度,具体计算公式如下:
表2 串口通信数据传输表
甲醛浓度计算公式:
甲醛浓度(ug/m3)=(高位×256+低位)/10(6)
CO浓度计算公式:
5 系统集成与测试
各功能模块设计、调试完成后,集成为一个系统,再进行系统功能测试。根据实际测量得到的粉尘浓度数据如图7所示。图中数据是在高浓度的粉尘下进行的测试,该测试结果能够验证公式(3)计算的正确性。图8是系统集成图,图中所示信息是在一个VR室测试的空气质量数据,测试结果说明了系统实现了相关功能。
图7实际测量粉尘浓度与电压关系图
图8VR室的实际检测数据效果图
6 结语
项目系统硬件设计了多种不同功能传感器、WiFi无线通信模块与主控制器STM32芯片的接口电路。根据传感器的工作原理设计了相关程序,并以机智云物联网平台和WiFi无线通信模块原理编写了通信程序。实现了对室内空气中的CO、CO2、PM2.5、TVOC、甲醛的含量以及温湿度的实时监测,检测到的数据可在LCD液晶屏显示,同时通过WiFi无线通信技术和机智云物联网平台传输到用户终端,并具有超标报警功能。该空气质量检测系统在VR室得到测试,性能稳定,数据准确,具有实际应用价值。
全部0条评论
快来发表一下你的评论吧 !