构建基于STM32的PM2.5含量实时检测系统

2020-06-29 07:17李勇韩斌熊铁军郦文忠
微型电脑应用 2020年6期
关键词:湿度编程单片机

李勇 韩斌 熊铁军 郦文忠

摘 要:通过硬件和软件设计,实现了基于STM32的空气质量信息实时检测、存储和显示。以一种高性能的32位单片机为主控芯片,除了能够准确显示某地点实时PM2.5值外,还能够将一天中收集到的PM2.5、湿度等数据存储在外部存储芯片中,并通过程序处理将PM2.5、湿度等数据转化为图形数据,显示在OLED屏幕上,直观的反映出这一天PM2.5、湿度的波动情况,具有测量精度高,结构模块化、功能多样化、使用方便等特点。

关键词: STM32; PM2.5; 外部存储; 实时显示

中图分类号: TP368

文献标志码: A

Abstract: Through the design of hardware and software, the system realizes the real-time detection, storage and display of air quality information based on STM32. The system uses a high-performance 32-bit single chipmicrocomputer as the main control chip. In addition to accurately displaying the real-time PM2.5 value of a certain place, it can also store the PM2.5, humidity and other data collected in a day in an external storage chip, and convert the PM2.5, humidity and other data into graphic data through program processing and display them on organic light emitting display,directly reflect the fluctuation of PM2.5 and humidity on that day. The system has the characteristics of high measurement accuracy, modular structure, diversified functions, convenient use.

Key words: STM32; PM2.5; external storage; real-time display

0 引言

随着社会科技快速发展,各产业越来越工业化、自动化,正因如此,导致的环境污染、空气质量的破坏也愈发严重,急剧上升的PM2.5含量给人们的生活带来了前所未有的困扰,雾霾严重,导致不方便出行,PM2.5含量超标会导致人们患呼吸道类的疾病,因此,人们掌握周围环境的实时PM2.5含量的变化情况变得越来越重要。本系统主要用于检测某地点实时PM2.5含量,并在采集完一天的数据后,将一天的数据在二维坐标轴上显示,通过图形可直观的反映出一天的PM2.5含量的变化。

1 硬件设计

1.1 硬件总结构设计

系统结构总框图,如图1所示。

该系统包括STM32微控制器、PM2.5传感器、温度传感器、湿度传感器、W25Q16外部存储模块、OLED显示模

块、按键模块、实时时钟系统等模块,本系统将STM32F103RCT6芯片作为整个系统的核心[1],担任对各个

传感器采集的数据进行处理、分析、存储,并将PM2.5数据、温度值、湿度值在OLED屏幕上正确显示,存储芯片主要用来存储一周的PM2.5数据,按键模块是用来调取存储在W25Q16中的某一天的PM2.5数据,并将一天的众多数据以柱状图的形式显示在OLED上,以直观的反映一天中PM2.5值的变化。

1.2 主控制器

主控制器使用的是一种高性能的32位单片机,其拥有超大的闪存容量,大量的GPIO口供使用,还拥有丰富的内设资源,使用该单片机能够大大的简化设计电路,是一款高性价比的微控制器。主控制器就像是人的大脑,拥有着本系统绝对的主导地位,控制着该系统的所有模块的正常工作。主控制器型号众多,本设计使用STM32F103RCT6芯片,其拥有48K SRAM和256K FLASH,本设计主要使用该单片机的IIC通信、SPI通信、12位ADC等内部资源,以及其丰富的GPIO口资源,该芯片完全能够胜任本系统软件、硬件设计。

1.3 PM2.5传感器

PM2.5传感器采用的是比较常用的夏普光学灰尘传感器,型号为GP2Y1010AU0F,实物图,如图2所示。

由于该传感器在检测空气中的粉尘、燃烧产生的烟雾、PM2.5颗粒时非常有效,因此该传感器常用于空气进化器、空调、PM2.5测量等系统中。该装置主要由一个红外发光二极管和光电晶体管组成,两晶体管对角放置在传感器中,利用灰尘和细颗粒在光的照射下会发生散射的现象,然后测量入射光在被测量颗粒场的光强衰减率,最后对数据进行处理,得出灰尘浓度。该PM2.5传感器具有体积小、电路连接简单、数据输出稳定、功耗低、價格实惠等优点,非常适合本系统使用,传感器接线图,如图3所示。

灰尘传感器的灵敏度为0.5 V/0.1(mg/m3),保证在其测量范围内时,PM2.5传感器输出的模拟电压与灰尘浓度呈一定的线性关系,通过厂商提供的线性关系图,灰尘浓度N=K*V,可得出系数K=N/V约等于0.13,由于该传感器输出的为模拟信号,需先通过STM32内部的12位的ADC将模拟信号转换为数字信号值value,然后计算出电压值,即电压值V=value*3 300/4 096,最终得出PM2.5值=V*0.13。

1.4 外部存储

本系统采用的是W25Q16外部存储芯片,W25Q16(16M-bit)是为系统提供一个最小的空间、引脚和功耗的存储器解决方案的串行Flash存储器[2],该芯片比普通的串行Flash存储器更灵活、性能更优越,采用SPI串行通信,能够快速的存储数据和读取数据,芯片工作电压在2.7 V到3.6 V之间,正常工作电流小于5 MA,掉电时低于1 uA。

W25Q16由每页256字节,总共8 192页组成,每页的256字节用一次页编程指令即可完成,该芯片还具有灵活的4 KB扇区结构,每次擦除的最小单元为16页,即一个扇区(4 KB)。在本系统中,由于存储的PM2.5数据量较小且简单,为了方便存储与擦除,在存储数据时,是将一天的PM2.5数据存储在一个扇区内,该扇区内剩余空间不使用,本系统设定为存储一周的数据,即需要7个扇区的容量,因此,对于该芯片来说,存储容量完全够用。

1.5 实时时钟

为了让系统能随着时间准确的采集PM2.5数据并将数据存储起来,实时时钟系统是非常重要的,本设计将DS1302时钟芯片作为实时时钟的核心[3],DS1302时钟芯片是8引脚芯片,体积小、计时精准,传输数据采用IIC通信,数据传输快且稳定,为保证内部正常计数,在芯片晶振引脚处需外接32.768 kHz的晶振,该芯片还可接备用电池,在主电源掉电时,利用备用电源使其继续正常的运转,该芯片的时间误差极小,性价比高,非常适用于本系统。该模块的接线图,如图4所示。

1.6 OLED显示

OLED显示屏是一种有机发光显示屏,主要由非常薄的有机材料涂层和玻璃基板组成,与LCD显示屏最大的区别是,OLED无需背光源,完全依靠自身发光来显示图像,观察效果也不会受到观察角度以及周围光线的影响,拥有功耗低、显示效果好、驱动简单、发光对比度高等特点。在本设计中,将使用OLED显示实时测得的PM2.5数据、温度值、湿度值,通过按键,可查看存储在Flash芯片中前几天的PM2.5数据,这些数据将以柱状图的形式显示在OLED上,观察柱状图高低的变化,可直观的观察出某一天24小时PM2.5的波动情况。

1.7 温度传感器

温度传感器采用三引脚DS18B20传感器,该传感器输出为数字信号,通过单片机接收该传感器的数字信号,并对数据进行处理后,得出结果,并将其结果显示在OLED上。该传感器只有一个普通三极管的大小,具有体积小、价格便宜、使用简单、输出数据稳定、功耗低、测量精度高等特点。本系统主要使用该传感器测量某地点的实时温度,是一个高性价比的选择。DS18B20接线图,如图5所示。

1.8 湿度传感器

DHT11是一个能够测量温度和湿度的数字传感器,但由于其温度测量范围小,所以多用来测量湿度,由于DHT11传感器内部使用了一个8位MCU,因此具有自动数据校准功能[4],校准后湿度精度为5%RH,该传感器内部组成结构,如图6所示。

有高性能8位MCU、电阻式感湿元件、NTC测阻元件等。该传感器具有体积小、驱动简单、响应快、抗干扰能力强、性价比高等特点,应用场所十分广泛。

2 软件程序设计

2.1 程序流程设计

程序设计采用的编程软件是MDK5,由于本设计使用STM32单片机的功能多且设计复杂,为了减少编程工作量,本次编程主要以官方提供的固件库函数为基础,通过调用库函数来进行编程,能够大大减小编程难度。由于官方的库函数使用范围宽广,不恰当的使用会导致程序代码的大小过大,因此在编程时应该穿插使用。

由于本设计使用的模块较多,为了方便程序的调试与检测,程序应该模块化。总程序流程图,如图7所示。

系统通电后,单片机对系统、各传感器、OLED等模块进行初始化,初始化各模块使用的GPIO口以及开启各模块的功能,此时实时时钟系统也已经正常工作,各传感器随着时间的推移开始收集数据,采集到的数据会经过STM32内部的模数转换,转换成数字信号,并通过程序对该数字信号进行处理,在本系统中,我们规定每隔1分钟采集一次PM2.5数据,15分钟就有15个PM2.5数据,然后将这15个PM2.5数据取平均值,该平均值作为这15分钟的一个PM2.5数据,并将此PM2.5数据存入Flash存储器中,一天24小时,将会有96个PM2.5数据被存入Flash存储器中,当用户通过按键调取某一天的数据时,OLED将PM2.5数据以柱状图的形式显示出来,当不调取前几天的数据时,OLED将显示实时采集到的PM2.5值,实时PM2.5数据将会每5秒刷新一次。温度和湿度数据会进行实时采集并处理,同时显示在OLED上。但温度值和湿度值不会存入外部存储器中。

2.2 程序调试

2.2.1 软件仿真

软件仿真采用MDK5自带的程序仿真,在编程过程中,通过软件仿真,我们可以快速的检验程序的一般可行性,当程序有运行错误时,我们可通过软件仿真快速找出其原因,并对其修改完善。使用软件仿真可以查看运行过程中各个寄存器的状态,通过观察这些寄存器的状态,可以判断程序是否能够达到预期效果。在检验程序的效果时,我们可以人为的控制,让其一步一步运行程序,通过串口监视器、寄存器状态、逻辑分析仪、符号窗口等众多窗口,我们可以观察到该步程序的各个状态,并判断是否符合预期值。软件仿真功能示意图。如图8所示。

2.2.2 采集数据子程序

在该系统中,核心部分是各个传感器模块数据的采集与存储,以PM2.5值的采集与存储为例,设定一分钟采集一次PM2.5数据,15分钟采集15个数据,并以这15个数据的平均值作为该15分钟内的一个数据平均值,然后将其存入数组中,当一天结束后,总共会有96个数据存入数組,最后将数组的数据存入FLASH中。以下为数据采集过程伪代码。

3 实验结果

用该系统对多个地点进行多次测量与评估,然后分析测得的一天的数据,并与国家天气预报的PM2.5进行比较,数据相近,但在室内,由于人多物杂,人员活动的影响,尤其在操场及食堂内,测得的PM2.5数据、温度、湿度都相对偏大。但通过多次数据的测量与比较,在相对封闭的空间内,采集的数据更加稳定,在开阔的户外及天气的影响,测量时,数据波动大,但对波动较大的数据进行平均值处理后,多个时段的平均值差值相对比较小,因此可以得出,单一的看某地点某时刻的PM2.5数据并不能真正的反映其空气质量,需要进一步比较一天的PM2.5数据。如表1所示。

规定用本系统测得的为“测量值”,以某测量仪器测得的为“实际值”,国家天气预报的值作为“天气预报值”,对各数据进行对比,测量数据达到了设计要求。

4 总结

根据系统的设计要求,系统所使用的传感器都是市面上常用的传感器,精度高、实用性好,完全能够保证系统的精确度和稳定性;基于STM32强大的硬件和软件功能,该系统能够对收集到的数据进行自动处理、存储以及数据的图形化实时显示,通过对本系统的实地测试,数据采集、处理、存储以及实时显示等功能正常运行且工作稳定;系统整体模块化设计,便于系统的扩展和维修,硬件体积小,集成度高,便于嵌入其他设备或装置,适用范围广,室内外均可使用。

参考文献

[1] 乌云.基于STM32的温度检测设计与实现[J].电子制作,2017(13):7888.

[2] 蒋雪琴.基于单片机的串行通信[J].电子世界,2016(14):108-112.

[3] 许珂乐.基于51单片机的电子时钟设计[J].现代电子技术,2017(13):108-112.

[4] 王金宝,谷文,张珽.湿度传感器的应用研究[J].科技风,2016(19):49-58.

(收稿日期: 2019.08.16)

猜你喜欢
湿度编程单片机
加湿器用不对 警惕肺炎缠身
玩游戏学编程,Blockly Games上手玩
湿度,癌症患者易忽视的问题
纺织机上诞生的编程
编程屋完成数百元万天使轮融资
学编程,先画画
带有双检测结构的电缆接头保护装置
跟踪导练(二)(2)
C8051F020与80C51单片机的异同点
单片机I/O口模拟串行通讯的C51实现方法