基于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 章 绪论
随着集成电路技术的进步和嵌入式处理器的广泛应用,室内空气质量监测系统具备了实时处理和分析气体传感器信号的能力,能够计算被测气体的浓度,实现实时监测功能。该系统主要采用电化学和光学原理,利用相应的电化学传感器和光电传感器进行气体浓度的监测。
随着中国经济的快速发展,大量使用高污染能源导致环境问题日益严重,尤其是城市空气污染对人体健康造成严重威胁。为了保障公众健康,国家颁布了《室内空气质量标准》GB/T18883-2002,其中包含了温度、相对湿度、一氧化碳、二氧化碳、甲醛、苯、可吸入颗粒物等指标。根据国家标准的要求,研发空气质量监测系统,实现对室内空气质量的实时监测,并及时报告空气污染信息,是有效保护人身健康的重要手段。
国外在传感器领域的研究起步较早,发展速度较快,这间接推动了空气质量监测系统的发展。许多知名公司在气体监测器方面进行了研制,其中包括美国的Environmental Sensors Co.(ESC)公司和TSI仪器公司。SI公司是一家面向全球市场的跨国公司,设计和生产的测量仪器处于行业领先地位。TSI公司与世界各地的科研机构密切合作,在室内空气监测、化学分析、流体动力学研究等领域具有悠久的历史。TSI公司生产的便携式室内空气质量监测仪和气体流量计等产品在全球范围内享有盛誉。例如,该公司生产的7565型综合监测仪可以实时监测一氧化碳、二氧化碳等参数。此外,在测量甲醛、苯蒸汽等有害气体方面,国外还有一些知名产品,如英国PPM公司生产的PPM-400甲醛检测系统和美国InterScan公司生产的41602甲醛分析系统。在监测可燃气体泄漏方面,国外也有一些先进的产品,例如日本的新宇宙XP-3160可燃气体便携检测系统、美国ICS公司的可燃气体监测器以及法国的奥德姆便携可燃气体检测仪等国外在传感器领域的研究起步早、发展快,间接促进了空气质量监测系统的发展,各大公司研制的气体监测器不胜枚举,代表公司有美国 Environmental Sensors Co.(ESC)公司和 TSI 仪器公司。
随着人们对健康环境的关注度提高,对室内空气质量的监测需求也逐渐增加。尤其是在城市中,由于污染物排放和封闭空间的增加,室内空气质量问题日益凸显,因此对于高质量的监测系统的需求也在增加。传统科技企业涉足:许多传统科技企业开始涉足室内空气质量监测领域,推动了监测设备的发展。这些企业具备丰富的技术和资源,能够加速监测系统的研发和推广。设备功能改进:国内学者和研究人员通过不断的研究和创新,改进了监测设备的功能。例如,一些系统具备多参数监测能力,可以监测甲醛、一氧化碳、PM2.5等多种污染物,提供更全面的室内空气质量评估。便携化和智能化趋势:随着技术的进步,越来越多的监测设备实现了便携化和智能化。这使得监测设备更加方便使用和携带,用户可以随时随地监测室内空气质量,并通过手机或其他终端获取监测数据。实时监测需求:人们对实时监测的需求也在增加。传统的监测系统通常需要一定的时间来完成测量和数据处理,无法提供即时的监测结果。因此,对于具备实时监测功能的系统的需求也在不断增加。尽管国内的空气质量监测系统设计在不断发展,但仍存在一些挑战和改进空间。例如,一些系统的监测参数较少,功能扩展性有限;部分系统缺乏直观的指示功能,难以让用户直接了解室内空气质量;还有一些系统缺乏多节点监测功能,或者采用的通讯方式不够普及。因此,在未来的发展中,需要进一步提升监测系统的功能性、用户友好性和可扩展性,以满足不断增长的市场需求。
第 2 章 空气质量监测系统总体方案设计
本方案的基本原理是,一单片机为核心,通过传感传感器的合理使用把与室内空气质量相关的检测对象的值检测出来,然后与国家的相关标准或者用户的个性化设置值进行对比。对比之后,单片机做出相应的判断,去触发报警提醒电路或者连接智能家居系统设备的执行电路。去做出提示或者启动相关设备来改变或者维持被检测量的当前状态。
设计本着两个原则,一个是可以成为一个检测是内控气质量的便携式仪器,另一方面是能够作为智能家居数据采集的一个输入接口设备为其他需要相关参数的设备提供实时的有效参数。
方案一:测量温度时,直接使用数字化的温度传感器,这样的传感器通过内部集成微型单片机和数字电路,因此能够直接输出温度的数字值。一款经典好用的传感器DS18B20。它只有一根数据线(同常这种传输方式叫做“1-wire”),这种通信方在硬件上式十分简洁,仅仅通过一根信号线就可以完所有通信信息的传输。它的封装也非常简洁,采用了与普通三极管同样的封装形式。除一个信号线以外,再接上电源就可以正常工作了,不需要其他的外部元件(当然,有时也需要外接一个上拉电阻)。设计者考虑到为了便于多点测量,把内部的64位光NROM序列号作为器件地址序列码,并且出厂之前就光刻在它的只读存储器ROM之中。它的封装外形就是同普通三极管一样,在其内部集成了全部传感元件及转换电路;能够把现场测得的温度直接以单数据线的数字方式传输,因为这种传输方式的抗干扰能力非常强,所以它能也够在许多比较恶劣的环境中正常工作。这种传感器在各种设备控制、过程控制以及一些环境的控制当中被广泛使用,在消费类测温电子产品中它的使用率也非常高。该电路的检测温度范围为-55~+125℃:精度为±0.5℃(在-10℃~+85℃范围)而且可以在一个很短的时间内完成对温度的数值读取。
对于湿度值的检测,传统的检测方法一般都是使用实名电阻,在通过搭建电路测量相关的电压或电流值,来对应湿度值。湿敏电阻CHR-01是通常使用的一种,用该湿敏电阻进行湿度信号采集时,一般运用555时基或者接入一些典型的振荡电路,然后再检测所采用的电路输出的振荡频率值,之后再利用所测得的频率值计算出相应的电阻值,然后再根据电阻值对照它对应的湿度值。
方案二:把温度和湿度一起采集,目前市场上也已经有成熟的把二者集成在同一个个模块之上的传感器。本设计采用温度和湿度一起检测的传感器件,DHT11是这种类型传感器的一个代表,它不仅就有稳定性好,性价比高的性能优点,而且他的封装形式也极为简便,采用了同DS18B20一样的传输方式,让硬件连接也变得非常简单。
综合比较,在方案一中,温度传感器比较精确,但是采用湿敏电阻测量湿度,不仅要搭建信号采集电路,同时由于要自行搭建测量电路,导致不可避免的引线误差和放大电路的漂移引起的误差,为了消除这些误差还要设计专门的补偿措施。不仅测量湿度的精度很低,而且还造成了许多不必要的麻烦;方案二则直接把温湿度集成在一个器件中,虽然温度的检测精度没有DS18B20的精度高,但是成本低廉且使用方便相比较选择方案二。
如果采用普通的甲醛敏感器件,例如氧化锡之类的对甲醛敏感的金属氧化物作为敏感器件,设计电路采集模拟信号在经过AD转换来量化甲醛浓度,会因为材料和技术要求的原因不容易做到,并且不易校零误差较大。
基于检测仪的特点,以及精度的考量,本系统设计决定采用现在检测甲醛较为流行的方法,电化学检测法来检测甲醛。决定采用郑州炜盛科技有限公司设计生产的ZE08—CH2O甲醛传感器模组,它能直接输出数字信号,与单片机通信采用串口通信比较方便。而且其还在设计中专门采用了温度传感器来进行温度补偿,可以达到2ppb的精度。
单片机系统是一种集成了处理器、存储器、输入/输出接口和时钟等组件的微型计算机系统。它通常由单片机芯片、外部电路和相关软件组成。单片机芯片是系统的核心部件,它集成了中央处理器(CPU)、内部存储器(如闪存或EEPROM)、随机存储器(RAM)、输入/输出(I/O)接口、定时器/计数器和其他外设控制器等。这些组件共同构成了一个完整的计算机系统。单片机系统的外部电路包括与芯片相连的外部存储器、传感器、执行器、通信接口等。外部电路的设计取决于具体的应用需求,它们通过与单片机芯片的引脚连接来实现与外界的交互。单片机系统的软件部分包括编译器、汇编器、调试器和应用程序。编译器将高级语言程序转换为机器语言代码,汇编器将汇编语言程序转换为机器语言代码。调试器用于调试和测试单片机程序。应用程序是根据具体需求编写的,它们利用单片机的处理能力和外部电路的功能来完成各种任务。单片机系统具有体积小、功耗低、成本低廉、可靠性高等优点,因此在嵌入式系统中得到广泛应用。它们被用于各种领域,如家电控制、工业自动化、汽车电子、医疗设备等。单片机系统的灵活性和可编程性使得它们适用于不同的应用场景,并且可以根据需求进行定制和扩展。
基于硬件的选择考量,在选择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的初始值为253即0xfd。
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设计展望
参考文献
- 闫海霞.室内空气质量监测仪[D].哈尔滨工业大学,2014.
- 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.
- 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.
- 王一.基于有害气体无线传感器检测的室内空气洁净控制[D]. 西安建筑科技大学, 2013.
- 裴志刚,朱立.室内装修甲醛的危害及测量方法[J].实验技术与管理,2005,22 (6) : 127-128.
- 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.
- 王嘉.室内空气品质监控系统的开发与研制[D].西北:西北工业大学,2002
- 刘建国,刘文清,魏庆农.我国的环境监测仪器产业状况及监测高技术创新的研究[J].光电子技术与信息,2002,15(2) : 14-18.
- 黄薇.室内空气中甲醛污染控制研究[D].南昌:南昌大学,2007.
- 安艳萍,钱平,陈超群.基于 EnOcean-WiFi 的远程室内空气监测系统研究[J]. 现代电子技术,2016,39(8).
- 周红波.基于嵌入式的室内空气监测系统的应用研究[D].华东交通大学,2015.
- 杨威风.基于 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;
相关文章:
基于stm32的空气质量监测系统
目录 摘 要 Abstract 目 录 第 1 章 绪论 第 2 章 空气质量监测系统总体方案设计 第3章 硬件的部分介绍 3.1 硬件系统的的原理方框图 3.2 硬件系统的的原理图 3.3 温湿度传感器 3.4 甲醛传感器 3.5 报警提醒模块及其他 3.6 系统工作原理 3.7 本章小结 第四章 方案…...
Leetcode-3 判断根结点是否等于子结点之和
Leetcode-3 判断根结点是否等于子结点之和(简单) 题目描述思路分析通过代码(python) 题目描述 **给你一个 二叉树 的根结点 root,该二叉树由恰好 3 个结点组成:根结点、左子结点和右子结点。 如果根结点值…...
《算法笔记》12.1小节——字符串专题->字符串hash进阶 问题 A: 求最长公共子串(串)
题目描述 求采用顺序结构存储的串s和串t的一个最长公共子串,若没有则输出false,若最长的有多个则输出最先出现的那一串。 输入 输入两个字符串 输出 输出公共子串 样例输入 abcdef adbcef 样例输出 bc 分析:用字符串哈希解决。检查…...
为何天线的长度设计为频率波长的四分之一?
目录 1. 电磁波的波长与频率关系 2. 四分之一波长天线的工作原理 3. 为什么选择 λ/4 而不是其他长度? 4. 实际应用中的例子 5. 总结 为何天线的长度设计为频率波长的四分之一? 天线的长度设置为频率波长的四分之一主要是基于电磁波的传播特性以及天线的…...
端口号详解(技术向)
端口号详解(技术向) 一、核心定义 **端口号(Port Number)**是 传输层协议(TCP/UDP) 的逻辑标识,用于在同一设备上区分不同应用程序的网络通信入口。端口号是用两个字节(无符号&…...
git合并多次commit提交
首先查看历史记录 git log 查看你想要合并的commit是哪些(注意:这里是逆序,最上的是最新提交) 找到当前想要合并的最后一个记录,复制该记录的下一个记录的 id(黄色部分commit id),…...
深入浅出Java-Lambda表达式
深入浅出Java-Lambda表达式 一、Lambda 表达式特征二、Lambda 表达式的基础语法与结构2.1 基本语法格式2.2 语法简化规则2.3 与匿名内部类的对比 三、函数式接口:Lambda 表达式的载体3.1 函数式接口的定义3.2 常用函数式接口分类3.2.1 消费型接口(Consum…...
FreeCAD傻瓜教程-外螺纹的绘制,利用两个实体进行布尔运算来实现
起因:因为要设计一个波珠螺丝固定器,为了不跑偏,需要在螺柱上加工一个直径6mm,深度1.2mm的圆弧凹槽所以想用泉州制造的6.8车铣加工。 但是该加工目前不支持轴向的钻孔,所以想着干脆在两端加上M8的螺栓,也起…...
java并发-线程池
文章目录 线程池定义组成工作参数设置种类关闭 线程池 定义 线程池就是提前创建好一批线程,反复复用处理任务,避免频繁创建销毁线程,同时控制线程数量,让系统更高效、稳定。 举个例子: 场景假设: 你开了…...
openlayer:06点击按钮实现地图动画移动
如何实现点击去辽宁按钮实现用动画效果将地图顺滑的切换到辽宁区域,点击回北京按钮后同样将地图使用动画效果移动回到辽宁。 本文介绍了如何通过OpenLayers库实现地图在北京市和辽宁省之间的平滑切换动画。首先,使用View类设置地图的初始中心点为北京市…...
使用 Matter.js 创建封闭箱体与里面的小球
下面是一个使用 Matter.js 创建的示例,包含一个地面、由4个长方形组成的封闭箱体,箱体内有10个不同颜色的小球。箱体可以被拖动,而小球被限制在箱体内部。 <!DOCTYPE html> <html> <head><title>Matter.js 可拖动箱体与小球</title><styl…...
自动化软件如何确保高可用性和容错性?
在数字化转型的浪潮中,RPA(机器人流程自动化)技术成为众多企业和机构实现业务流程优化的得力助手。以金智维为例,作为 RPA 领域的佼佼者,其技术在金融、政务等行业广泛应用,承担着大量关键业务流程的自动化…...
变电站综合自动化系统
系统介绍 a安科瑞 18702112163 变电站综合自动化系统为企业变电站提供了完整的SCADA功能,包括主接线图、设备工况、实时数据显示、定值管理、SOE报警/记录/查询/打印、棒图、实时/历史曲线、语音报警、历史信息查询、用户权限管理、各种运行数据统计分析报表等。系…...
【2025.05】Anaconda新手安装+配置+环境创建教程
本文目录 一、安装前述二、下载与安装1、下载2、选择安装类型3、选择安装路径: 三、设置环境1、添加conda目录到path2、修改envs\pgks默认目录第一种:修改.condarc文件第二种:使用conda config命令 四、修改镜像源五、常用命令(27…...
React-改变当前页class默认的样式
比如antd for mobile,已经定义了默认的ui的class样式,如果想在当前页面的控件显示特殊的样式,除了指定style外,还可以强制改变默认class的样式,比如我想改变list.item的字体。 在返回渲染布局里面加上 return (<&…...
腾讯游戏安全与高通合作构建PC端游安全新格局
导语:5月16日,2025游戏安全行业峰会在深圳举行,腾讯游戏安全ACE与高通(中国)在峰会上就腾讯游戏安全方案正式宣布达成行业生态合作。双方将依托高通技术公司专门面向AI PC打造的骁龙X系列平台,共同为《无畏…...
Token类型与用途详解:数字身份的安全载体图谱
在现代数字身份体系中,Token如同"数字DNA",以不同形态流转于各类应用场景。根据Okta的最新研究报告,平均每个企业应用使用2.7种不同类型的Token实现身份验证和授权。本文将系统梳理主流Token类型及其应用场景,通过行业典…...
【Linux基础I/O】文件调用接口、文件描述符、重定向和缓冲区
【Linux基础I/O一】文件描述符和重定向 1.C语言的文件调用接口2.操作系统的文件调用接口2.1open接口2.2close接口2.3write接口2.4read接口 3.文件描述符fd的本质4.标准输入、输出、错误5.重定向5.1什么是重定向5.2输入重定向和输出重定向5.3系统调用的重定向dup2 6.缓冲区 1.C语…...
软考中级软件设计师——操作系统考试题型
一、PV操作与进程同步(必考大题) 1. 真题示例(2020年真题) 题目: 三个进程P1、P2、P3共享一个缓冲区,P1生产数据放入缓冲区,P2和P3消费数据。要求: 缓冲区大小为10,满时…...
transformer归一化层优化:深度解读 RMSNorm (Root Mean Square Layer Normalization,均方根层归一化)
导读:RMSNorm 把传统 LayerNorm 的“减均值(centering) 除标准差(scaling)”简化为“直接除以向量均方根 (Root Mean Square, RMS,均方根)”。这一改动让归一化既 更省算 又 同样稳定,因而成为 …...
java基础 之 Hash家族(一)
文章目录 HashCode定义代码使用使用场景 HashMap定义常用方法使用场景 ConcurrentHashMap定义常用方法使用场景 HashTable定义常用方法使用场景 HashSet定义常用方法使用场景你想到过吗? HashMap、ConcurrentHashMap、HashTable的对比总结 HashCode 定义 hashcode是…...
windows服务器部署jenkins工具(二)
jenkins的大致流程:新增任务->配置任务->构建(打包)项目->部署(发布) 具体如何使用,我这里就不多讲了。这次就给大家讲讲,jenkins安装之后使用过程中存在的一些问题。 1.maven项目如…...
机器学习第二十讲:网格搜索 → 像尝试所有密码组合找最佳解锁方式
机器学习第二十讲:网格搜索 → 像尝试所有密码组合找最佳解锁方式 资料取自《零基础学机器学习》。 查看总目录:学习大纲 关于DeepSeek本地部署指南可以看下我之前写的文章:DeepSeek R1本地与线上满血版部署:超详细手把手指南 网…...
【人工智能发展史】从黎明到曙光01
人工智能的史诗:从黎明到曙光 序曲:晨曦微露 故事的序幕拉开于一个思想激荡的年代,1956年,达特茅斯会议的钟声,如同第一缕晨曦,宣告了"人工智能"纪元的到来。那个夏天,在新罕布什尔…...
ollama使用gpu运行大模型
罗列ollma镜像 ollama list拉取ollama镜像源里面的模型: ollama pull qwen2:1.5b下载CudaToolkit https://developer.nvidia.com/cuda-toolkit-archive 我这里选择11.7的万金油版本,从来没出过bug Ollama安装好后,为了让推理跑在GPU上&am…...
Linux电源管理——PSCI初始化流程和多核启动流程
目录 一、PSCI 初始化流程 1、PSCI设备树节点 2、PSCI kernel初始化流程 get_set_conduit_method set_conduit psci_probe 二、CPU PSCI 操作初始化流程 1、CPU 设备树节点 2、 struct cpu_operations 3、kernel 流程 cpu_read_bootcpu_ops smp_init_cpus 三、CPU…...
Linux问题排查-引起服务器带宽使用率高的内鬼
Linux网络流量监控与瓶颈分析全攻略:从基础命令到进程级方案 一、网络带宽查询与实时流量监控 1. 查询主机网络带宽 网卡理论带宽 通过ethtool命令查看网卡最大支持速率,例如: ethtool eth0 # 替换为实际网卡名(如ens33&#x…...
《微服务架构设计模式》笔记
思维导图 1-3章 4-6 章 5-13 章 资料 配套代码仓库:https://github.com/microservices-patterns/ftgo-application 作者网站:https://microservices.io/...
基于JDBC的信息管理系统,那么什么是JDBC呢?
JDBC 即 Java Database Connectivity,是 Java 语言中用于与数据库进行交互的一套 API。它提供了一种标准的方式,让 Java 程序能够连接到各种不同类型的数据库,并执行 SQL 语句来实现对数据库的查询、插入、更新和删除等操作。 主要功能 建立…...
百度地图的地铁图API所有城市的城市名和citycode的对照关系列表
百度地图的地铁图API所有城市的城市名和citycode的对照关系列表 城市keywordcitycode北京beijing131上海shanghai289广州guangzhou257深圳shenzhen340重庆chongqing132天津tianjin332石家庄shijiazhuang150南京nanjing315成都chengdu75沈阳shenyang58杭州hangzhou179武汉wuhan2…...
信息学奥赛一本通 1853:【08NOIP提高组】传纸条 | 洛谷 P1006 [NOIP 2008 提高组] 传纸条
【题目链接】 ybt 1853:【08NOIP提高组】传纸条 洛谷 P1006 [NOIP 2008 提高组] 传纸条 【题目考点】 1. 动态规划:坐标型动态规划 【解题思路】 抽象问题,存在m乘n的网格,每个格子中有一个数值,即同学愿意帮忙的…...
APM32小系统键盘PCB原理图设计详解
APM32小系统键盘PCB原理图设计详解 一、APM32小系统简介 APM32微控制器是国内半导体厂商推出的一款高性能ARM Cortex-M3内核微控制器,与STM32高度兼容,非常适合DIY爱好者用于自制键盘、开发板等电子项目。本文将详细讲解如何基于APM32 CBT6芯片设计一款…...
【Linux我做主】探秘进程与fork
进程和fork 父子进程和forkgithub地址前言1. 进程的标识符PID1.1 查看系统内所有的进程1.2 kill杀掉进程1.3 获取进程的PID1.4 bash与父子进程 2. 创建进程与fork2.1 fork创建子进程2.2 fork困惑的解释0. fork的工作原理1. 为什么给子进程返回0,给父进程返回子进程P…...
学习python day4
1.顺序语句结构 #赋值语句 name张三 age20 a,b,c,droom#字符串分解赋值 print(a,b,c,d) #输入输出也是典型的顺序结构 nameinput(请输入您的姓名:) ageeval(input(请输入您的年龄:)) #使用eval进行转换 print(姓名:,name) print(年龄&#x…...
如何通过外链建设提升Shopify独立站的权重和排名
一、外链质量评估与筛选原则 相关性优先 选择与自身行业、产品或目标用户群体高度相关的网站(如行业论坛、垂直媒体、评测博客)交换外链,避免低相关性垃圾链接导致搜索引擎惩罚。 权威性指标 关注外链来源网站的域名权威(DA…...
高并发内存池|六、page cache的设计
六、page cache的设计 1. page cache的结构 page cache 也是一个哈希桶结构,但它的映射结构与前两个 cache 不同。它的每一个桶是容量从 1 到 128 页大小的内存块,桶中的每个内存块由 SpanList 管理。page cache 的内存由其向系统申请所得,…...
C++线程池实现
C线程池实现 知识点补充为什么要实现线程池线程池的实现过程 知识点补充 在C11中引入了对线程库的支持,接下来我们介绍一下跟线程相关的一些知识点: 线程对象的构造方式 在C11中主要提供的三种线程的构造方式:无参构造、带参构造和调用移动构…...
#Redis缓存篇#(七)分布式缓存
目录 一 单节点Redis 1 单节点的问题 二 分布式缓存 1 Redis持久化 (1 RDB持久化 (2 AOF持久化 2 Redis主从集群 (1 搭建主从架构 (2 主从数据同步原理 3 Redis哨兵 (1 哨兵的作用和原理 (2 搭…...
【VSCode】安装与 ssh 免密登录
【VSCode】安装与 ssh 免密登录 下载SSH 登录设置免密登录关闭远程连接删除ssh连接(慎用!!!删除了建立的连接就没有了!!) 下载 https://code.visualstudio.com/docs/?dvwin64user 选择安装路径…...
【Python解决八皇后问题】回溯算法与优化策略全解析
目录 🌟 前言🏗️ 技术背景与价值🩹 当前技术痛点🛠️ 解决方案概述👥 目标读者说明🧠 一、技术原理剖析📊 核心概念图解💡 核心作用讲解🔧 关键技术模块说明⚖️ 技术选型对比🛠️ 二、实战演示⚙️ 环境配置要求💻 核心代码实现基础回溯实现位运算优化…...
判断一个元素是否在可视区域
判断元素是否在可视区域的方法 方法一:offsetTop 和 scrollTop 通过计算元素的 offsetTop 和容器的 scrollTop 来判断元素是否位于视口内。这种方法适用于简单的垂直滚动场景。 优点: 实现简单,性能较好。缺点: 不支持复杂的布局结构(如嵌套滚动),无法处理水平方向上的可…...
作物遗传与种质创新利用全国重点实验室-随笔10
作物遗传与种质创新利用全国重点实验室依托于南京农业大学,2022年11月完成国家重点实验室重组工作,由原名称“作物遗传与种质创新国家重点实验室”正式更名为“作物遗传与种质创新利用全国重点实验室”。 实验室面向国家粮食安全和农业高质量发展的重大战…...
分布式电源的配电网无功优化
分布式电源(Distributed Generation, DG)的大规模接入配电网,改变了传统单向潮流模式,导致电压波动、功率因数降低、网损增加等问题,无功优化成为保障配电网安全、经济、高效运行的关键技术。 1. 核心目标 电压稳定性:抑制DG并网点(PCC)及敏感节点的电压越限(如超过5%…...
游戏引擎学习第301天:使用精灵边界进行排序
回顾并为今天的内容做准备 昨天,我们解决了一些关于排序的问题,这对我们清理长期存在的Z轴排序问题很有帮助。这个问题我们一直想在开始常规游戏代码之前解决。虽然不确定是否完全解决了问题,但我们提出了一个看起来合理的排序标准。 有两点…...
网络框架二次封装:基于Kotlin的高扩展性网络请求框架完整实现
完整目录结构 1. 架构设计1.1 分层架构1.2 核心组件1.3 接口关系图2. 基础配置实现2.1 NetworkConfig完整代码2.2 CacheConfig完整代码3. 核心网络客户端3.1 SmartHttpClient完整实现3.2 单例管理3.3 服务创建与执行4. DSL请求构建器4.1 NetworkRequest完整实现4.2 生命周期绑…...
高噪声下扩展边缘检测算子对检测边缘的影响
目录 一、常见的边缘检测算子 二、扩展边缘检测算子对检测边缘的影响 三、结论 一、常见的边缘检测算子 Sobel 算子: Prewitt算子;...
Linux 内核音视频架构(V4L2 )介绍
一.概述 Linux 内核中的 V4L2(Video for Linux Two)框架 是用于管理音视频设备(如摄像头、电视调谐器、视频采集卡等)的核心子系统。 它提供了一套统一的接口,使得用户空间应用程序能够方便地访问和控制硬件设备&…...
专业 YouTube SEO 方案:打造高排名视频的关键步骤
YouTube 是全球订阅量最高的社交媒体平台之一。YouTube 为发布创意视频内容和针对特定受众开展营销活动提供了无限可能,是任何品牌内容营销策略的重要组成部分。 但是,为了发展您的 YouTube 频道并消除噪音,优化您的视频内容以便可以在搜索结…...
基于STM32的智能台灯_自动亮度_久坐提醒仿真设计(Proteus仿真+程序设计+设计报告+讲解视频)
这里写目录标题 1.主要功能2.仿真设计3.程序设计4.设计报告5.下载链接 基于STM32的智能台灯_自动亮度_久坐提醒仿真设计 (Proteus仿真程序设计设计报告讲解视频) 仿真图Proteus 8.9 程序编译器:keil 5 编程语言:C语言 设计编号࿱…...
labview硬件部分——压力测量
0kg的电压需要我们手动输入!在不放东西的时候的电压,先运行一次程序,将其记录后写到程序中的0kg输入按键即可。 整体的程序:...