基于机智云的空气质量多功能检测系统设计

2021-08-28 02:08龙诺春江源榜
电脑与电信 2021年6期
关键词:串口温湿度甲醛

龙诺春 江源榜

(广东白云学院电气与信息工程学院,广东 广州 510450)

1 引言

空气中的有害物质直接影响人们的心身健康,室内空气的危害气体主要有CO、CO2、PM2.5、甲醛等[1]。温湿度对人的舒适度有较大影响,低湿度环境对人有多种不利影响[2-4]。因此,对空气中的有害气体及环境的温湿度进行检测是必要的,对人员密集、活动频繁的室内公共场所进行空气质量检测尤为重要。空气质量检测方法可以根据检测内容的不同进行设计。采用STC 系列单片机可设计出室内温湿度、PM2.5颗粒物浓度检测方法[5]。利用STM32单片机能实现对室内温湿度、PM2.5 以及甲醛浓度检测,数据可采用蓝牙通信方式传输到手机[8],也可利用网络和LoRa(Long Range)无线通信技术实时地将检测结果上传至上位机[9]。上述方法对空气质量的检测主要对象是温湿度、PM2.5、CO、CO2甲醛浓度等,而且一台检测设备也难以完成这些目标的同时检测。在数据传输方面,蓝牙通信距离短、可靠性不高,LoRa 无线通信技术系统较复杂,成本相对高。实际上,空气中的有毒有害气体比较多,例如空气中的TVOC(Total Volatile Organic Compounds 总挥发性有机物,简称TVOC)对空气质量影响大,引起了人们的高度重视。因此,针对目前空气质量检测系统功能少的现状提出了一个新的设计方案,系统设计以STM32 单片机为主控器,由有关功能传感器和WiFi 无线通信模块组成,利用机智云和WiFi无线通信技术将数据传输到用户终端,实现数据共享。该方案可完成多种有害气体的检测,同时能对温湿度进行监测。

2 系统设计方案

空气质量检测系统可检测多种有害气体,对环境的温度、湿度能进行监测,检测到的数据信息可上传到机智云平台,并发送到用户终端,设计目标和技术指标如下:

2.1 设计目标与技术指标

2.1.1 设计目标

(1)具有能够检测CO、CO2、甲醛、TVOC、PM2.5和温湿度检测功能。

(2)能够在LCD屏上实时的显示相关检测数据。

(3)利用WiFi无线通信技术上传数据到机智云平台。(4)能将数据发送到用户终端,实现用户手机及电脑等设备远距离传输。

(5)具有对有害气体超标提示与报警功能。

2.1.2 主要技术指标

系统设计的技术指标如表1所示:

表1 技术指标要求

2.2 系统组成与模块选型

2.2.1 系统组成

根据设计目标构建系统组成,如图1所示,系统主控制器为STM32,数据采集部分由二氧化碳(TVOC、温湿度)传感器模块、甲醛传感器模块、PM2.5 采集模块以及一氧化碳采集模块构成,此外还有显示、报警以及WiFi无线通信模块。

图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 系统硬件设计

系统硬件设计主要是对各种传感器、WiFi无线通信模块等功能器件与STM32单片机的接口电路设计。功能单一的传感器接口电路简单,下面介绍主要的模块接口电路。

3.1 CJMCU-8118传感器模块采集电路设计

CJMCU-8118 模块就是CCS811 二氧化碳(TVOC)传感器与HDC1080温湿度传感器组合体,采用IIC总线,CJMCU-8118模块与STM32单片机的连接方式如图2所示,其中SCL是IIC数据传输的时钟,SDA为IIC的数据线,WAK是一个使能信号线。

图2 CJMCM-8118与STM32接口电路

3.2 串口数据传输器件电路设计

系统设计使用四个串口类型的数据传输器件,分别是CO 传感器模块、甲醛传感器模块、串口LCD 屏幕以及WiFi8266模块。这四个串口类型模块与STM32单片机的连接方式如图3所示。采用5V供电电压,其中CO模块连接的是单片机的串口P4,甲醛模块连接的是单片机的串口P3,LCD 屏幕连接的是单片机的串口P2,WiFi8633 模块连接单片机时,需要GBC_LED 与GBC_KEY 作为控制信号设置WiFi8266模块的工作模式。

图3 串口类模块与单片机连接图

4 系统软件设计

4.1 主控程序设计

在系统运行时可能会出现外界的干扰,为了防止系统在遇到干扰时无法正常运行,系统在软件设计上加入了看门狗程序,保障系统运行不出差错,程序流程图如图4 所示。STM32F4 的中断系统可配置16 个不同优先级别的中断,并且中断之间还可以嵌套中断。首先对单片机初始化,进行优先级分组,在此配置两个响应优先级和两个抢断优先级。系统滴答计时器的初始化是为了做精准的延时而准备的,延时函数在每个模块基本上都有调用。最后对各个模块初始化,主要是对STM32F4 最小系统I/O 口的参数以及模式进行配置,主要有串口的配置、ADC、IIC、PWM 的功能配置。完成了初始化后,系统开始检测WiFi 模块有没有成功连接路由器。在WiFi成功连接之后开始接收数据,与设定数据进行比较,是否有CO、甲醛超标,有超标则蜂鸣器警报,并通过通信方式向手机APP或者PC端发送警报。没有超标将会继续判断CO2、TVOC、温湿度、PM2.5 是否超标,如果有超标,系统显示屏将会红色提示,否则,显示屏将会是蓝色,表示正常。

图4 主程序流程图

4.2 WiFi模块程序设计

在对WiFi 模块进行编程之前,先要对WiFi 模块进行固件库改写,在固件库改写成功之后才能进行编程,程序流程图如图5所示。图中的喂狗就是上一节提到的看门狗程序,协议处理可直接调用库函数实现。WiFi设备通过配置入网,可由按键启动相应的连接模式,并对配置好的路由器进行连接。WiFi设备与机智云服务器是双向通信,APP 端的操作信息通过机智云服务器发送到WiFi 设备,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 串口通信数据传输表

甲醛浓度计算公式:

CO浓度计算公式:

5 系统集成与测试

各功能模块设计、调试完成后,集成为一个系统,再进行系统功能测试。根据实际测量得到的粉尘浓度数据如图7所示。图中数据是在高浓度的粉尘下进行的测试,该测试结果能够验证公式(3)计算的正确性。图8是系统集成图,图中所示信息是在一个VR 室测试的空气质量数据,测试结果说明了系统实现了相关功能。

图7 实际测量粉尘浓度与电压关系图

图8 VR室的实际检测数据效果图

6 结语

项目系统硬件设计了多种不同功能传感器、WiFi无线通信模块与主控制器STM32芯片的接口电路。根据传感器的工作原理设计了相关程序,并以机智云平台和WiFi无线通信模块原理编写了通信程序。实现了对室内空气中的CO、CO2、PM2.5、TVOC、甲醛的含量以及温湿度的实时监测,检测到的数据可在LCD 液晶屏显示,同时通过WiFi 无线通信技术和机智云平台传输到用户终端,并具有超标报警功能。该空气质量检测系统在VR 室得到测试,性能稳定,数据准确,具有实际应用价值。

猜你喜欢
串口温湿度甲醛
一种智能化电热处理炉用温湿度传感器的变送器
文物展柜内环境温湿度的调控与监测
蛋鸡育雏育成舍环境控制技术
温湿度独立控制空调系统在医院建筑中的应用研究
甲醛
基于API函数库实现串口数据通信的分析与设计
基于EM9000工控板高性能双串口通信模型设计与实现
“零甲醛”家具根本不存在
面条里有甲醛?
MCS—51单片机中的多串口通讯技术的应用