基于stm32的空气质量监测系统

目录

摘 要

Abstract

目 录

第 1 章 绪论

第 2 章 空气质量监测系统总体方案设计

第3章 硬件的部分介绍

3.1 硬件系统的的原理方框图

3.2 硬件系统的的原理图

3.3 温湿度传感器

3.4 甲醛传感器

3.5 报警提醒模块及其他

3.6 系统工作原理

3.7 本章小结

第四章 方案软件设计与实现

4.1 主程序流程图

4.2 甲醛检测流程图

4.3 DHT11流程图

4.4 键盘扫描子程序流程图

4.5 软件调试过程

4.6 本章小结

第 5章 总结与展望

5.1课题总结

5.2设计展望

参考文献

致 谢

附录


 

随着工业发展,国民经济日益增长,人民生活指数也在不断提高。但是给环境却带来不可逆的影响,因为空气质量的恶化,使人类引起一系列呼吸道病症,危害身心健康。国家政府出台政策,一方面从源头控制污染源,一方面增加空气质量监控。各大中城市也将PM2.5作为天气预报一项重要指标,时时提醒市民关注环境。在对国内外室内空气质量监测系统进行调查研究后,针对传统监测系统监测参数少、指示功能差等缺陷,设计了一套基于 STM32 单片机的室内空气质量监测系统。监测装置放置于不同环境内,采用主从控单片机和 485 总线收集处理传感器数据,实时监测室内 PM2.5、PM10、一氧化碳、二氧化碳、甲烷浓度和空气温湿度,并控制指示灯发出不同颜色灯光指示当前空气质量。

本设计是基于单片机STM32设计的一款对室内空气质量监测的设备,通过指示灯闪烁颜色判断当前空气质量是否达标,可将设备与手机连接实时查看空气指标。

关键词: STM32F103;空气监测;电路图

Abstract

With the development of industry, the national economy is growing day by day, and the people's living index is also constantly improving. However, it has irreversible effects on the environment, as the deterioration of air quality causes a series of respiratory diseases and endangers physical and mental health for humans. The national government has introduced policies to control pollution sources from the source and increase air quality monitoring. Major and medium-sized cities also consider PM2.5 as an important indicator for weather forecasting, constantly reminding citizens to pay attention to the environment. After conducting research on indoor air quality monitoring systems both domestically and internationally, a set of indoor air quality monitoring systems based on STM32 microcontroller was designed to address the shortcomings of traditional monitoring systems such as limited monitoring parameters and poor indication functions. The monitoring device is placed in different environments and uses a master-slave microcontroller and 485 bus to collect and process sensor data. It monitors indoor PM2.5, PM10, carbon monoxide, carbon dioxide, methane concentration, and air temperature and humidity in real time, and controls the indicator lights to emit different colors to indicate the current air quality.

This design is based on the STM32 microcontroller, which is a device for monitoring indoor air quality. By flashing the color of the indicator light, it can determine whether the current air quality meets the standard. The device can be connected to a mobile phone to view air indicators in real time.

Key Words: STM32F103, air monitoring, Circuit diagram

1  绪论

    1. 课题研究背景与意义

随着集成电路技术的进步和嵌入式处理器的广泛应用,室内空气质量监测系统具备了实时处理和分析气体传感器信号的能力,能够计算被测气体的浓度,实现实时监测功能。该系统主要采用电化学和光学原理,利用相应的电化学传感器和光电传感器进行气体浓度的监测。

随着中国经济的快速发展,大量使用高污染能源导致环境问题日益严重,尤其是城市空气污染对人体健康造成严重威胁。为了保障公众健康,国家颁布了《室内空气质量标准》GB/T18883-2002,其中包含了温度、相对湿度、一氧化碳、二氧化碳、甲醛、苯、可吸入颗粒物等指标。根据国家标准的要求,研发空气质量监测系统,实现对室内空气质量的实时监测,并及时报告空气污染信息,是有效保护人身健康的重要手段。

    1. 国内外空气质量监测系统研究现状
      1. 国外研究现状

国外在传感器领域的研究起步较早,发展速度较快,这间接推动了空气质量监测系统的发展。许多知名公司在气体监测器方面进行了研制,其中包括美国的Environmental Sensors Co.(ESC)公司和TSI仪器公司。SI公司是一家面向全球市场的跨国公司,设计和生产的测量仪器处于行业领先地位。TSI公司与世界各地的科研机构密切合作,在室内空气监测、化学分析、流体动力学研究等领域具有悠久的历史。TSI公司生产的便携式室内空气质量监测仪和气体流量计等产品在全球范围内享有盛誉。例如,该公司生产的7565型综合监测仪可以实时监测一氧化碳、二氧化碳等参数。此外,在测量甲醛、苯蒸汽等有害气体方面,国外还有一些知名产品,如英国PPM公司生产的PPM-400甲醛检测系统和美国InterScan公司生产的41602甲醛分析系统。在监测可燃气体泄漏方面,国外也有一些先进的产品,例如日本的新宇宙XP-3160可燃气体便携检测系统、美国ICS公司的可燃气体监测器以及法国的奥德姆便携可燃气体检测仪等国外在传感器领域的研究起步早、发展快,间接促进了空气质量监测系统的发展,各大公司研制的气体监测器不胜枚举,代表公司有美国 Environmental Sensors Co.(ESC)公司和 TSI 仪器公司。

      1. 国内研究现状

随着人们对健康环境的关注度提高,对室内空气质量的监测需求也逐渐增加。尤其是在城市中,由于污染物排放和封闭空间的增加,室内空气质量问题日益凸显,因此对于高质量的监测系统的需求也在增加。传统科技企业涉足:许多传统科技企业开始涉足室内空气质量监测领域,推动了监测设备的发展。这些企业具备丰富的技术和资源,能够加速监测系统的研发和推广。设备功能改进:国内学者和研究人员通过不断的研究和创新,改进了监测设备的功能。例如,一些系统具备多参数监测能力,可以监测甲醛、一氧化碳、PM2.5等多种污染物,提供更全面的室内空气质量评估。便携化和智能化趋势:随着技术的进步,越来越多的监测设备实现了便携化和智能化。这使得监测设备更加方便使用和携带,用户可以随时随地监测室内空气质量,并通过手机或其他终端获取监测数据。实时监测需求:人们对实时监测的需求也在增加。传统的监测系统通常需要一定的时间来完成测量和数据处理,无法提供即时的监测结果。因此,对于具备实时监测功能的系统的需求也在不断增加。尽管国内的空气质量监测系统设计在不断发展,但仍存在一些挑战和改进空间。例如,一些系统的监测参数较少,功能扩展性有限;部分系统缺乏直观的指示功能,难以让用户直接了解室内空气质量;还有一些系统缺乏多节点监测功能,或者采用的通讯方式不够普及。因此,在未来的发展中,需要进一步提升监测系统的功能性、用户友好性和可扩展性,以满足不断增长的市场需求。

第 2 章 空气质量监测系统总体方案设计

    1. 系统功能需求分析

本方案的基本原理是,一单片机为核心,通过传感传感器的合理使用把与室内空气质量相关的检测对象的值检测出来,然后与国家的相关标准或者用户的个性化设置值进行对比。对比之后,单片机做出相应的判断,去触发报警提醒电路或者连接智能家居系统设备的执行电路。去做出提示或者启动相关设备来改变或者维持被检测量的当前状态。

设计本着两个原则,一个是可以成为一个检测是内控气质量的便携式仪器,另一方面是能够作为智能家居数据采集的一个输入接口设备为其他需要相关参数的设备提供实时的有效参数。

    1. 温湿度传感器的选择

方案一:测量温度时,直接使用数字化的温度传感器,这样的传感器通过内部集成微型单片机和数字电路,因此能够直接输出温度的数字值。一款经典好用的传感器DS18B20。它只有一根数据线(同常这种传输方式叫做“1-wire”),这种通信方在硬件上式十分简洁,仅仅通过一根信号线就可以完所有通信信息的传输。它的封装也非常简洁,采用了与普通三极管同样的封装形式。除一个信号线以外,再接上电源就可以正常工作了,不需要其他的外部元件(当然,有时也需要外接一个上拉电阻)。设计者考虑到为了便于多点测量,把内部的64位光NROM序列号作为器件地址序列码,并且出厂之前就光刻在它的只读存储器ROM之中。它的封装外形就是同普通三极管一样,在其内部集成了全部传感元件及转换电路;能够把现场测得的温度直接以单数据线的数字方式传输,因为这种传输方式的抗干扰能力非常强,所以它能也够在许多比较恶劣的环境中正常工作。这种传感器在各种设备控制、过程控制以及一些环境的控制当中被广泛使用,在消费类测温电子产品中它的使用率也非常高。该电路的检测温度范围为-55~+125℃:精度为±0.5℃(在-10℃~+85℃范围)而且可以在一个很短的时间内完成对温度的数值读取。

对于湿度值的检测,传统的检测方法一般都是使用实名电阻,在通过搭建电路测量相关的电压或电流值,来对应湿度值。湿敏电阻CHR-01是通常使用的一种,用该湿敏电阻进行湿度信号采集时,一般运用555时基或者接入一些典型的振荡电路,然后再检测所采用的电路输出的振荡频率值,之后再利用所测得的频率值计算出相应的电阻值,然后再根据电阻值对照它对应的湿度值。

方案二:把温度和湿度一起采集,目前市场上也已经有成熟的把二者集成在同一个个模块之上的传感器。本设计采用温度和湿度一起检测的传感器件,DHT11是这种类型传感器的一个代表,它不仅就有稳定性好,性价比高的性能优点,而且他的封装形式也极为简便,采用了同DS18B20一样的传输方式,让硬件连接也变得非常简单。

综合比较,在方案一中,温度传感器比较精确,但是采用湿敏电阻测量湿度,不仅要搭建信号采集电路,同时由于要自行搭建测量电路,导致不可避免的引线误差和放大电路的漂移引起的误差,为了消除这些误差还要设计专门的补偿措施。不仅测量湿度的精度很低,而且还造成了许多不必要的麻烦;方案二则直接把温湿度集成在一个器件中,虽然温度的检测精度没有DS18B20的精度高,但是成本低廉且使用方便相比较选择方案二。

    1. 甲醛传感器的选择

如果采用普通的甲醛敏感器件,例如氧化锡之类的对甲醛敏感的金属氧化物作为敏感器件,设计电路采集模拟信号在经过AD转换来量化甲醛浓度,会因为材料和技术要求的原因不容易做到,并且不易校零误差较大。

基于检测仪的特点,以及精度的考量,本系统设计决定采用现在检测甲醛较为流行的方法,电化学检测法来检测甲醛。决定采用郑州炜盛科技有限公司设计生产的ZE08—CH2O甲醛传感器模组,它能直接输出数字信号,与单片机通信采用串口通信比较方便。而且其还在设计中专门采用了温度传感器来进行温度补偿,可以达到2ppb的精度。

    1. 单片机的介绍

单片机系统是一种集成了处理器、存储器、输入/输出接口和时钟等组件的微型计算机系统。它通常由单片机芯片、外部电路和相关软件组成。单片机芯片是系统的核心部件,它集成了中央处理器(CPU)、内部存储器(如闪存或EEPROM)、随机存储器(RAM)、输入/输出(I/O)接口、定时器/计数器和其他外设控制器等。这些组件共同构成了一个完整的计算机系统。单片机系统的外部电路包括与芯片相连的外部存储器、传感器、执行器、通信接口等。外部电路的设计取决于具体的应用需求,它们通过与单片机芯片的引脚连接来实现与外界的交互。单片机系统的软件部分包括编译器、汇编器、调试器和应用程序。编译器将高级语言程序转换为机器语言代码,汇编器将汇编语言程序转换为机器语言代码。调试器用于调试和测试单片机程序。应用程序是根据具体需求编写的,它们利用单片机的处理能力和外部电路的功能来完成各种任务。单片机系统具有体积小、功耗低、成本低廉、可靠性高等优点,因此在嵌入式系统中得到广泛应用。它们被用于各种领域,如家电控制、工业自动化、汽车电子、医疗设备等。单片机系统的灵活性和可编程性使得它们适用于不同的应用场景,并且可以根据需求进行定制和扩展。

    1. 设计原理

基于硬件的选择考量,在选择STM32F103C8T6 单片机,数字温湿度传感器DHT11和数字甲醛检测模组ZE08—CH2O等这些主要的硬件模块后,针对本设计的原理就体现在软件上。实际上就是对室内空气质量好坏的评判标准上有不同的选择,这里主要讲的是温湿度值的评判。

方案一:使用国家的明文规定的各项参数指标, 这样一来毫无疑问,对系统采集的参数数值有一个明确的量化值。在处理所采集到的检测值时,评判起来非常简单,是否报警提醒也有明确的指标。

方案二:使用国家标准和个性化设置双表准来处理数据。这样一来用户既可以有一个权威的参考指标来保证被测量的客观性,另一方面可以根据个人的实际身体感受来设置自己的最佳舒适度的温湿度界限值。

比较而言,虽然方案一相对于方案二设计软件会方便不少,但是为了更加体现设计的人性化,还是决定采用方案二。

第3章 硬件的部分介绍

3.1 硬件系统的的原理方框图

设计方案以STM32F103C8T6单片机系统为主控芯片,来对甲醛浓度值以及对温度、湿度进行实时控制和巡检。每一个检测模块可以单独完成主控芯片给出的指令任务,或者主动上传本模块信息。主控芯片控机负责整个系统的控制指令的发布,同时负责把各路信息进行整合处理。整个系统的硬件部分单片机、复位电路、温湿度检测、甲醛检测、键盘及显示、系统软件等部分的设计

硬件系统的的原理方框图如图3.1,设计本身的思想是与当前智能家居的发展趋势结合的。原理框图中的一些执行部件,在实物设计时考虑到实验条件,采用把报警提示电路部分具象成室内一些家电设备。主要是用红绿LED灯和蜂鸣器的响应来模拟室内的空调和换风系统的动作。

图3.1 硬件系统的的原理方框图

3.2 硬件系统的的原理图

该系统的组成主要有,STM32F103C8T6RC单片机的最小系统、甲醛传感器模组、温湿度传感器、LCD12864显示屏、设置按键以及报警提醒电路等。其中报警提醒电路中是由红绿LED灯和一个有源蜂鸣器组成,而此部分是可以预留给家用空调换风系统的间接控制接口,从而可以成为整个智能家居的一部分。同时在设计时也预留出了NRF24L01芯片的接口方便与智能家居设备的无线连接,从而发挥更加智能化的作用。系统原理图如图3.2所示。

图3.2 STM32F103C8T6 最小系统电路系统原理图

3.3 温湿度传感器

3.3.1  DHT11概述

Sensirion温湿度传感器家族中的插针型封装系列,这种封装形式使用起来非常方便。 DHT11传感器就属于该系列的代表之一。它是一款在一块微型电路板上集成了微型单片机和一个14位的模数转换器,使得这款传感器直接输出方便使用的数字温湿度值。较高的集成度也使得该传感器的反应速度非常的迅速,抗干扰能力也非常强。简洁的封装,和内部的电压调整也使得它在使用时可以方便且迅速。

3.3.2  DHT11特点

它具有一体化的结构设计,相对同时地把温度值和湿度值测量出来,并且直接是输出数字信号,这对于用户来说极大地缓解了一些测量时的预处理过程。单总线结构的输出方式能够帮助使用者节省用户控制器的I/O口资源。并且不需要再连接其他的电器元件。其实物的形状如图3.3所示。

3.3 DHT11外形及引脚说明

3.3.3 DHT11引脚说明及工作原理

传感器管脚的识别:从有通气孔的一面看,依次是:电源正极、数据输出脚、空脚和电源地。而其硬件原理图如图3.4所示,个引脚功能如表3.1所示。

3.4  DHT11原理图

表3.1 引脚说明

引脚号

引脚名称

类型

引脚说明

1

VCC

电源

正电源输入,3V-5.5V DC

2

Dout

输出

单总线。数据输入/输出引脚

3

NC

空脚。扩展未用

4

GND

电源地

该数字式温湿度一体传感器的传输方式是单总线格式,每一次传送数据共有5个字节40位,其中高16位中湿度整数位和湿度小数位各8位,其次16位为温度整数位和小数位各8位,最后一个字节为8位的校验位。在与主控芯片的通信时,该传感器要严格执行它的读写协议,并且它的信号的‘0’和‘1’电平均采用高电平的方式来表示,其中持续26us-28us的高电平是它的信号‘0’,持续70us的高电平则为它的信号‘1’。因此来说,在通信时要非常注重时序的把握和时间的精确。

3.4 甲醛传感器

3.4.1 ZE08-CH2O概述

ZE08-CH2O是一种通用小型化的电化学甲醛模组。采用的是电化学原理对空气(一般都是在室内)中的甲醛浓度进行测,它的选择性和稳定性都比较优异。内置温度传感器可进行温度补偿,同时可以输出数字信号和模拟信号,方便使用其引脚入图3.5和表3.2所示。

图3.5  ZE08-CH2O模组引脚图

在本系统设计中采用它的串口输出,如图3.6所示。其中传感器的RXD引脚接STM32F103C8T6RC单片机的P3.1口(即单片机的TXD口),传感器的TXD引脚接STM32F103C8T6RC单片机的P3.0口(即单片机的RXD口)。在实际的应用中,由于由于往往使用的都是该传感器的主动上传模式,因而就不必接入传感器的数据接收端口(其TXD引脚),本系统就采用了此方式。

此外ZE08-CH2O模组的通信协议,它的通信命令分为主动上传式和问答式两种。出厂时默认的是主动上传式,使用时参照其格式定义处理测得的数据即可。其默认的检出浓度单位是ppm,因而需要转化成平时我们所用到的单位mg/m³。根据国家标准,室内的甲醛平均浓度不得超过0.1mg/m³的上限。

3.4.2 ZE08-CH2O工作原理

图3.7  电化学传感器原理图

参考点击的作用就是保证在电机的化学反应过程中保持恒定的电压,而检测气体浓度是只需检测传感器的反电极即可。至于所加的电压值则与被检测的对象有关,这里所采用的传感器则不需要考虑这个问题在模组的电路中已经处理,用户只需接上它的电源引脚。

3.5 报警提醒模块及其他

该系统设计的报警提醒模块电路,主要有由LED灯和蜂鸣器组成,LED灯为温湿度值报警,红灯作为生鲜报警指示,绿灯作为下限报警指示,蜂鸣器为甲醛超标报警提示并且同时闪烁红灯。原理图如图3.8所示。

图3.8  报警提醒电路及按键原理图

对于P1.3口的按键,它是用来设置温湿度的检测标准,有冬季和夏季两种模式可供选择。两种模式触发报警的标准值是不一样的,从而可以工具选定模式来保持室内空气质量能够给人们带来最佳的体验。

另外,基于为了使本系统能够成为智能家居的一部分,在此设计中特意添加了无线传输模块NRF24L01如图3.9所示。使用时只需在接收端接入相同的模块即可完成通信。

图3.9  NRF24L01接口原理图

该系统的显示部分用的是液晶显示器12864,为了使程序更加简洁选用LCD12864时选择了一款带有中文字库的显示器。液晶显示器12864的连接方式有两种,一种是并行传输,另一种是串行传输。在并行传输时,除了要连接电源引脚之外,其控制引脚和数据引脚都要一一连接;而当采用串行连接传输数据时,除电源引脚外则只需要连接其SID(RW)和SCLK(EN)来传输数据,接PSB来片选和RESET来复位即可。两种方式各有优缺点,使用并行方式传输时,传输速度较快但缺点是连线过于多给焊接实物是带来许多麻烦;而使用串行传输时,传输数据的速度要比并行时慢,但是其连线数目比并行时减少了非常之多,这及大地方便了硬件电路的焊接。二者相较之下,由于本系统对数据的实时显示传输数据的速度要求并不高,自然串行传输方式被选定为本系统的显示数据传输方式。关于LCD12864在硬件电路中的连接原理图,如图3.10所示。

图3.10  系统原理图

3.6 统工作原理

首先,在设计本系统时这里需明确一个问题,人们认为的较高的室内空气质量的标准是什么。对于这个问题,实际上在国家标准里已经明确规定过各种可能影响到室内孔气质量的指标,那样的值是客观的。而本设计给出的答案就是以人体的舒适度来作为重要的标准,当然这不是唯一标准,因为有些有害气体我们在短期时间单单从人体舒适的角度来说,是感受不到影响的。为此本设计专门找出那些无形的危害人体健康的气体代表--甲醛,它也是主要的室内挥发性气体污染物。

本设计的主要功能模块是以上介绍的各个部分,由STM32F103C8T6RC单片机来作为主控芯片。此外本系统的拓展部分,把检测得到的参数值处理后反馈给一个执行电路。所谓的执行电路就是一些继电器模块,它一端与室内的一些空调设备和换风系统连接另一端连接单片机,来维持室内室内温湿度的合理值,使人体的感受处于一个比较舒适的状态;而本设计还预留了无线模块NRF24L01的接口,可以不经过继电器,无线发送到装有NRF24L01的执行机构,来控制室内的空调换风系统,这样可以使检测仪器放置位置更加地灵活。

而对于对采集到的数据的处理,甲醛的浓度警戒值是参照国家《室内空气质量标准》(GB/T 18883-2002),由于在一些建筑材料中含有能够产生甲醛的物质,而且它不会短期内就把甲醛完全释放殆尽,于是如果人们不注意经常通风,就很有可能导致甲醛在室内积聚使其浓度值过高以至于超过警戒值而危害人体健康。

就温湿度而言,我们可以从以往的经验和资料中,以及相关的标准中获知人们体感最舒服的温湿度值是一个范围,而且这个范围也会因季节的不同而不同,在本设计中采用了一个按键S1来切换不同季节,从而解决了对不同季节时的不同界限值的报警提醒或执行命令的输出问题。同时,另外用三个按键S2、S3和S4,来设置个性化的温度上下限值,来满足用户的个性化需求。

3.7 本章小结

本章节主要是通过对系统设计所用到的硬件和原理进行一个详细介绍,系统的阐述了各个模块在本设计中所使用的方法和原理。通过本章我们可以了解到就本设计的功能和实物形式而言,它不仅仅可以作为一款独立使用的便携式仪器,也可以方便地作为智能家居的一部分,接入整个智能家居的系统当中。

第四章 方案软件设计与实现

系统的程序设计包括,被检测对象信号的采集、按键扫描、液晶显示和报警提醒电路(也可看作是室内被控空调设备)控制。该系统软件的主要思想就是把检测到的室内空气质量(温湿度和甲醛值),与人体最舒适的体验指标值或国家标准值进行比较处理,之后把处理结果反馈给能够优化当前室内空气质量的驱动电路(报警提醒电路),系统工作时通过对被检测对象的巡检,从而把室内空气质量调节到一个理想状态。

4.1 主程序流程图

主程序的流程图如图4.1所示:

4.1  主程序流程图

系统的主程序实际上就是整个系统运行过程中的监控程序,它是整个系统程序的框架,通过它的执行来控制整个系统按预定操作方式运转。之所以把主程序叫做监控程序,主要是因为它的执行能够及时的响应来自系统内部的各种服务请求,可以有效地管理系统自身软硬件,及人机交互设备与系统中的其它设备进行交换信息,并且一旦在系统出现故障时,他要能够及时作出相应处理。

该流程图反映的是,整个系统大致的工作流程。系统通电之后,完成各项初始化之后便进入到了监控状态,在没有外部控制信息输入系统的情况下,温湿度传感器和甲醛传感器把检测到的当前值不断刷新并送给液晶显示出来。

4.2 甲醛检测流程图

甲醛检测程序的流程图如图4.2所示:

4.2 甲醛检测流程图

甲醛检测,由于使用的传感器的串口输出,故传感器与单片机通信时,需要设置单片机的串口,包括工作方式和波特率的设置。串行端口完成一帧字符发送或者接收时会引起中断,本设计中使用的甲醛传感器中,采用的是它的主动上传模式,而它每隔一秒钟发送一次数据,所以每隔一秒钟变回触发一次串行中断。在本设计中,采用的是STM32F103C8T6RC的串口方式1,定时器1的方式2,中断使用的是串行口中断。由于本设计系统中采用的晶振为11.0592MHz,而此甲醛传感器的串口通信波特率为9600,可以计算出T1的初始值为2530xfd

4.3 DHT11流程图

甲醛检测程序的流程图如图4.3所示:

4.3 DHT11检测流程图

执行DHT11的检测程序时,其通信过程是传感器与单片机握手成功后,由传感器一次性上传所有检测数据,当然用户可以根据需要取舍。

4.4 键盘扫描子程序流程图

   键盘扫描子程序的流程图如图4.4所示:

4.4 键盘扫描子程序的流程图

按键S1是用来切换季节模式,按奇数次是选择夏季模式,偶数次为冬季模式。按键S2用来选择调节温度的上限还是下限,按下奇数次是调节上限,按下偶数次为调节下限,而两个限值的变化有按键S3和S4来确定,按S3减少按S4增加。其实,S2、S3、和S4这三个按键是用来进行个性化设置温度的。

4.5 软件调试过程

本次设计所使用的编程语言是比较经典的,单片机C语言,使用的编辑器是Keil5编译器[10]。因为在本次系统设计当中采用了两种传感器,而且无论是温湿度传感器还是甲醛传感器都采用的是串行的通信方式,所以对时序的要求就比较严苛了。对于甲醛传感器的通信协议的波特率9600系统采用的11.0592MHz的晶振,非常便于计算定时器的初值[16]。然而对于需要用时间来判断‘0’和‘1’信号的温湿度传感器的信号传输来说,采用11.0592MHz的晶振可以说给延时函数的精确度的计算带来了一定的麻烦,计算结果总是不能很精确,为了解决这个问题编写时还查询了关于STM32单片机的指令所用时间。

除了这个问题还遇到了一个意想不到的问题,就是由于使用的甲醛传感器并不是新出厂的,因而没有办法判断当前的数据传输模式是问答式还是主动上传式,并且还不知道传感器是否是无损坏。在一开始并没有意识到这个问题,默认按照了主动上传来读取数据,一直没有调通不只是硬件问题还是软件问题,后来想到这个问题后才得以解决。

4.6 本章小结

本章主要介绍的是系统设计的各个模块的程序编写流程图,从流程图中给读者表明作者的思考的方式和思路。通过对对流程图的展示,也希望读者能够通过此来更好地把握该设计或者仪器的使用,并且便于优化和修改。

 5 总结与展望

5.1课题总结

本系统设计利用一款比较经典的单片机以及相关传感器和液晶显示技术,完成了对影响室内空气质量的相关参数的测量。比较系统的介绍了系统所用到的各种硬件,以及各模块的设计方法,利用单片机C语言完成了整个系统的设计。本设计完成了对影响室内空气质量相关参数的检测、显示、报警提示和进一步处理的接口。整个系统软硬件搭配合理,设计、开发、维护方便,性价比高。

相对于传统的室内空气质量检测仪器来说,我们不仅考虑到不单单是把检测数据与国家标准进行对比,同时还设置了个性化功能,并且还能够与智能家居设备相连。就本设计硬件而言,单片机是一种非常经济适用的智能化芯片,而近些年来兴起的智能家居,给各种单片机的应用提供了一个非常巨大的空间。而对于单片机的选择原则也十分重要,并不是资源越丰富越好。我们要考虑到它的实际使用价值和性价比,虽然本设计采用的单片机的资源比较有限,但是对于完成该课题的设计是可以满足需要的。并且单片机的I/O口也还有结余,还有很大的扩展空间。

当然,就本设计而言还需要在设备的智能化方面做更进一步的改进。特别是在采集的数据的存储和处理方面,可以进一步对历史数据进行处理,给出统计信息。另外低功耗处理,也是非常重要的改进方面。

5.2设计展望

通过此次设计可以进一步优化系统的稳定性和可靠性,确保监测设备的准度更高。同时,可以考虑增加更多的传感器来监测其他环境参数,如温度、湿度等,以提供更全面的环境信息。还可以开发更智能化的算法和模型,对监测数据进行实时分析和预测,以提供更精准的空气质量评估和预警功能。最后,可以考虑将系统扩展到更大的范围,如公共场所或城市层面,以实现更广泛的空气质量监测和管理。希望未来空气质量监测设备和系统都能更符合人们实际需求,让每个家庭都使用和关注到。

参考文献

  1. 闫海霞.室内空气质量监测仪[D].哈尔滨工业大学,2014.
  2. Lai ACK, Mui KW, Wong LT, et al. An evaluation model for indoor environment quality acceptance in residential building[J]. Energy and Building,2009,41(9) : 930-936.
  3. Marchetti N, Cavazzini A, Pasti L, et al. A campus sustainability initiative: Indoor air quality monitoring in classrooms[C]//AISEM Annual Conference, 2015 XVIII. IEEE, 2015: 1-4.
  4. 王一.基于有害气体无线传感器检测的室内空气洁净控制[D]. 西安建筑科技大学, 2013.
  5. 裴志刚,朱立.室内装修甲醛的危害及测量方法[J].实验技术与管理,2005,22 (6) : 127-128.
  6. Khoder MI, Shakour AA, Farag SA, et al. Indoor and outdoor formaldehyde concentrations in homes in residential areas in Greater cairo. Jenviron Monit,2000,2(2) : 123-126.
  7. 王嘉.室内空气品质监控系统的开发与研制[D].西北:西北工业大学,2002
  8. 刘建国,刘文清,魏庆农.我国的环境监测仪器产业状况及监测高技术创新的研究[J].光电子技术与信息,2002,15(2) : 14-18.
  9. 黄薇.室内空气中甲醛污染控制研究[D].南昌:南昌大学,2007.
  10. 安艳萍,钱平,陈超群.基于 EnOcean-WiFi 的远程室内空气监测系统研究[J]. 现代电子技术,2016,39(8).
  11. 周红波.基于嵌入式的室内空气监测系统的应用研究[D].华东交通大学,2015.
  12. 杨威风.基于 STM32 的室内空气质量监测器的设计与研究[D]. 武汉轻工大学, 2015. [13]Montrose M. Printed circuit board design techniques for EMC compliance[J]. Sensors &

Actuators A, 2000, 81(99):200–203.

[14]朱绍朋.基于移动互联网技术的农田生态环境远程监测系统研究[D]. 东北农业大学, 2016. [15]张涛 , 乔 彦 峰 .UDP 广 播 通 讯 在 光 电 经 纬 仪 组 网 中 的 应 用 [J]. 微 计 算 机 信 息 ,

 

时光荏苒,一眨眼便到了毕业的季节。整个大学时光,也在这次毕设中画上圆满的句号。还记得开学第一次来学校的场景,给我留下了深刻的印象。毕业后也会步入人生新的起点。

通过这次毕业设计,我认识到了自己知识的匮乏与动手实践能力的不足,在这里要感谢我的毕设指导老师,他提供了宝贵的指导和支持,帮助我理解和掌握单片机系统的原理和应用,以及空气质量监测的相关知识。此外,我还要感谢与我并肩作战的同学,他们与不断进行讨论和实践,分享彼此的经验和见解,为我提供了很多帮助和鼓励。我还要感谢相关领域的专家学者和工程师们,他们的研究成果和技术支持为我提供了丰富的参考和借鉴,使我能够更好地理解和应用单片机在空气质量监测中的作用。最后,我要感谢我的家人和朋友们,他们在我学习和实践的过程中给予了我无私的支持和鼓励,是我不断前行的动力和精神支柱。感谢以上所有人的支持和帮助,使我能够顺利完成基于单片机的空气质量监测项目。

未来虽然离开了学校,我希望自己保持不断学习的心态,学习是无止境的,学习能力也是宝贵的天赋。我时刻警醒自己要不断学习新的知识,不断进步。通过自己所学的知识和经验,能够为这个社会奉献自己的一份力。

附录

程序代码

 /*****************引脚配置********************/

void GPIO_Configuration(void)

{

  GPIO_InitTypeDef GPIO_InitStructure;

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);

  //LCD1602 管脚      

  GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_8| GPIO_Pin_9| GPIO_Pin_10| GPIO_Pin_11| GPIO_Pin_12| GPIO_Pin_13| GPIO_Pin_14| GPIO_Pin_15;

  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;  

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;

  GPIO_Init(GPIOB, &GPIO_InitStructure);

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7 |GPIO_Pin_6|GPIO_Pin_5;

  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;  

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;

  GPIO_Init(GPIOB, &GPIO_InitStructure);  

  //DHT11

  GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_0;

  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;  

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;

  GPIO_Init(GPIOB, &GPIO_InitStructure);

}

void IO_out( void )

{

  GPIO_InitTypeDef GPIO_InitStructure;

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC ,ENABLE);

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);

  

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0| GPIO_Pin_1| GPIO_Pin_2| GPIO_Pin_3;

  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;  

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;;

  GPIO_Init(GPIOC, &GPIO_InitStructure);  

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10|GPIO_Pin_9;

  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;

  GPIO_Init(GPIOC, &GPIO_InitStructure);  

}

int main(void)

{

  int ADC_num1,ADC_num2;

  int temp1,temp2;

  GPIO_Configuration();//初始化

  ADC1_GPIO_Config();

  ADC_Config();     

  Init1602();

  IO_out();

  WrByte1602(0,1,' '); //字符显示

  WrByte1602(0,2,'P');

  WrByte1602(0,3,'M');

  WrByte1602(0,4,'=');

  

  WrByte1602(1,1,' ');

  WrByte1602(1,2,'M');

  WrByte1602(1,3,'Q');

  WrByte1602(1,4,'=');

  WrByte1602(0,9,' ');

  WrByte1602(0,10,'W');

  WrByte1602(0,11,'D');

  WrByte1602(0,12,'=');

  WrByte1602(1,9,' ');

  WrByte1602(1,10,'S');

  WrByte1602(1,11,'D');

  WrByte1602(1,12,'=');   

  delay_ms(500);

  while(1)

  {

             //读取温湿度

         DHT11_receive(&shidu,&wendu);

    

    ADC_num1=Get_ADC(ADC_Channel_0);//读取PM2.5

    temp1=ADC_num1*100/4096;

          

    ADC_num2=Get_ADC(ADC_Channel_1);//读取空气质量MQ135

    temp2=ADC_num2*100/4096;

      

  WrByte1602(0,5,AsciiCode[temp1%1000/100]);//显示PM2.5

  WrByte1602(0,6,AsciiCode[temp1%100/10]);

  WrByte1602(0,7,AsciiCode[temp1%10]);

  

  WrByte1602(1,5,AsciiCode[temp2%1000/100]);  //显示空气质量MQ135

  WrByte1602(1,6,AsciiCode[temp2%100/10]);

  WrByte1602(1,7,AsciiCode[temp2%10]);    

     

  WrByte1602(0,13,AsciiCode[wendu%1000/100]);  //显示温度

  WrByte1602(0,14,AsciiCode[wendu%100/10]);

  WrByte1602(0,15,AsciiCode[wendu%10]);

  

  WrByte1602(1,13,AsciiCode[shidu%1000/100]);  //显示湿度

  WrByte1602(1,14,AsciiCode[shidu%100/10]);

  WrByte1602(1,15,AsciiCode[shidu%10]);  

  

  if(temp1>50||temp2>50)  PCout(9)=PCout(10)=0;//PM2.5或者空气质量MQ135>50  开启声光报警

  else  PCout(9)=PCout(10)=1;

### C++ HTTP Request Libraries 对于C++开发者来说,有多个库可以用来执行HTTP请求。以下是几个流行的选项: #### 1. Boost.Beast Boost.Beast是一个现代的C++库,专注于HTTP和WebSockets协议的应用层通信。该库设计上非常注重性能和灵活性,适合构建高性能的服务端应用以及客户端程序[^1]。 #### 2. cpp-httplib cpp-httplib是由日本开发者Yhirose开发的一个轻量级单文件头仅有的HTTP/HTTPS服务器和客户端实现。它易于集成到现有项目中,并且不需要额外依赖项,非常适合小型项目或嵌入式系统中的使用。 #### 3. POCO C++ Libraries POCO提供了一套全面的基础类库来帮助创建可移植、高效能的企业级网络应用程序和服务。其中包含了强大的HTTP模块,能够轻松处理GET, POST等各种类型的HTTP请求操作。 #### 4. C++ REST SDK (Casablanca) 微软推出的开源跨平台RESTful API开发工具包——C++ REST SDK也称为"Casablanca", 它不仅支持基本的HTTP方法调用还具备JSON解析等功能,在云端计算场景下尤为适用. #### 5. C++ Requests 另一个值得注意的选择是`C++ Requests`, 这个库受到Python `requests`启发而诞生,目的是让C++也能拥有同样简洁优雅的方式来发起各种形式(比如GET, POST) 的HTTP请求。其内部基于libcurl实现了对不同传输方式的支持并提供了诸如设置headers、携带payload等高级特性[^2]。 ```cpp // 示例代码展示如何利用CppRequests发送简单的GET请求 #include <iostream> #include "requests.h" int main() { try { auto res = requests::get("https://api.github.com/"); std::cout << "Status code: " << res.status_code << "\n"; std::cout << "Content:\n" << res.text; } catch (const std::exception& e) { std::cerr << "Error occurred during the request.\n" << e.what(); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

洲洲不是州州

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值