基于单片机的智能空气净化系统

news2024/9/23 19:17:04
【摘 要】 设计了一种基于单片机的智能空气净化系统。通过传感器实时采集空气中 PM2.5 、甲醛等有害健康物质的浓度,将各项数据显示到液晶显示屏,当浓度超过设置的警戒值时,控制蜂鸣器发出警报。根据浓度大小控制空气净化器电机转速,实现空气净化器的智能控制,空气质量差时,实现快速空气净化;空气质量好时,能省电降低噪音。实验表明,该系统对清除室内空气污染物质、提高室内空气质量有良好的效果。

0 引言

随着生活水平的提高,人们对生活环境舒适度的要求也随之提高,室内装修也越来越精致。室内装修材料的大量使用,不可避免地使室内甲醛浓度增高,影响家庭成员的身体健康。
环境与室内空气的污染,催生了人们对空气净化器的需求。本文设计了一种基于单片机的智能空气净化系统,通过各种传感器实时采集室内空气质量数据,显示到液晶显示屏,并根据采集的各项数据,控制电机转动速度,实现空气净化器的智能控制。

1 系统设计

1.1 系统整体设计

本系统由主控制单片机 、空气检测传感器、空气净化电机、数据显示器与网络模块组成,如图1所示。
单片机:基于软件程序规模与单片机ROM容量大小,选用 AT89C52 。使用单片机处理各传感器采集的数据,根据数据判断空气质量,驱动电机转动。持续采集空气质量数据,根据前后数据变化,反馈到电机转速的变化上。
数据显示LCD:采集的空气PM2.5、甲醛浓度以及实时电机转速数据,通过液晶显示屏显示。电机驱动:风扇驱动采用 PWM(Pulse Width Modulation)控制直流电机的转速 。由于选用的单片机中没有 PWM 输出功能,本系统中采用定时器与软件控制来实现PWM的输出。WIFI 模块:为了与其他智能家居进行连接通信,设计中添加WIFI模块与其他智能电子产品或者本地无线网络连接,将空气质量数据保存至网络数据库。
空气检测传感器:本系统包含PM2.5、甲醛浓度测量功能,需要两种传感器分别检测 PM2.5 与甲醛浓度。

1.2 PM2.5传感器

系统选用光学灰尘传感器(GP2Y1010AU0F)来检 测 空 气 中 PM2.5 值 。 光 学 灰 尘 传 感 器(GP2Y1010AU0F)对检测非常细的颗粒非常有效,并且常用于空气净化系统。传感器引脚 1 连接220uF电容和150欧姆的电阻,引脚2连接单片机的P3.2,引脚5是粉尘浓度的模拟量输出,连接模数转换器(ADC0832)通道1。具体电路图如图2所示。

1.3 甲醛传感器

系统选用 ZE08-CH2O 型电化学甲醛模组来检测空气中的甲醛浓度 。它利用电化学原理探测空气中的甲醛,具有良好的稳定性与选择性。该型传感器内置温度传感器,可进行温度补偿,能够进行数字与模拟输出。传感器引脚 3 接地,引脚 4 接电源,引脚 5连接单片机 P3.0口,具体电路图如图 3所示。

2 软件流程

智能空气净化系统的软件主流程如图4所示。系统软件采用 C 语言编写,在 Keil μ Vision4 中编译。每隔 3分钟从传感器中获取 PM2.5浓度与甲醛浓度数据,并将获取的数据显示到液晶模块中。 如果任何一种物质浓度超过设置的警戒值,触发蜂鸣器报警2分钟,设置电机全速转动,驱动空气净化装置提高室内空气质量,降低有害物质浓度。如果空气质量低于警戒值,设置电机低速转动,维持空气质量的同时,降低噪音、节省电力。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1993646.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

04.C++类和对象(中)

1.类的默认成员函数 默认成员函数就是用户没有显式实现,编译器会自动生成的成员函数称为默认成员函数。一个类,我们不写的情况下编译器会默认生成以下6个默认成员函数,需要注意的是这6个中最重要的是前4个,最后两个取地址重载不重…

Selenium + Python 自动化测试04(操作方法1)

上一篇我们讲述了webdriver 元素定位方法。我们对如何定位元素有了一个基本的认识。接着我们详细讲述对元素常见的一些基本操作方法,以便我们可以做很多功能操作的测试。这一篇侧重最基本的操作方面。 1、send_keys 方法 此方法类似于模拟键盘输入。还是以下面网站…

React项目中引用视频播出插件 easyPlayer.js 部署趟坑日志

目录 前文记录背景问题摸排:第一天前端打包失败?远程打包逻辑与本地打包逻辑不一致?远程入口页被篡改?再次排查本地webpack打包逻辑 问题摸排:第二天确认本地与远程打包一致排查远程nginx代理定位问题 index.html 的所…

AI10-PaddleDetection2.7安装测试

1、下载PaddleDetect-release-2.7开源项目 https://github.com/PaddlePaddle/PaddleDetection https://github.com/PaddlePaddle/PaddleDetection/releases PaddleDetection: PaddleDetection的目的是为工业界和学术界提供丰富、易用的目标检测模型 2、安装 环境要求 * Paddl…

[Qt][QWidget]详细讲解

目录 1.概述2.QWidget核心属性1.简介2.核心属性概览 3.QWidget常用属性1.enabled2.geometry1.是什么?2.Window Frame的影响3.相关API4.注意 3.windowTitile4.windowIcon5.windowOpacity6.cursor8.font9.toolTip10.focusPolicy11.styleSheet 1.概述 Widget是Qt中的核…

2024新版ChatGPT系统源码SparkAi系统,支持GPT4.0全模型,AI绘画,AI换脸+自定义智能体GPTs应用+AI视频+文档分析

一、文章序言 人工智能技术正迅猛发展,AI语言模型、AI绘画和AI视频已经在许多领域得到广泛应用。这些技术不仅在科技创新方面表现出色,还在艺术创作、内容生成和商业应用中展现出巨大的潜力。 SparkAi创作系统是一款基于ChatGPT和Midjourney开发的智能…

【Linux】系列入门摘抄笔记-4-查看文件内容命令cat/more/less/tail

cat 查看文件内容 cat [选项] [参数] cat 命令可以用来显示文本文件的内容(类似于 DOS 下的 type 命令),也可以把几个文件内容附加到另一个文件中,即连接合并文件。 tac 反向显示文件内容 tac [选项] [参数] 将文件全部内容从…

玩转Docker:Lsky pro图床+私有化部署大模型(Ollama+Openwebui)

最近搞了一个测试服务器,捣鼓了下一键搭建dnmp集成环境,然后还搭建了一个Lysk pro图床服务,后面又看到了开源大模型,也试着搭建了一下,中间出了一点小插曲。不过也算搭建成功了。做一个小结汇总。 1.前情回顾 DNMP:基…

探索list与iterator的区别及yield的用法

1 问题 探索list与iterator的区别探索yield的用法 2 方法 通过网上学习后了解到 List返回的类型是list,list只会查询一级缓存。list()中返回的List中每个对象都是原本的对象。查询的时候没遍历一个对象会产生一条sql;而iterator这个迭代器返回的类型是it…

Apache HTTPD 换行漏洞(CVE-2017-15715)

Vulhub - Docker-Compose file for vulnerability environment Apache HTTPD是一款HTTP服务器,它可以通过mod_php来运行PHP网页。其2.4.0~2.4.29版本中存在一个解析漏洞,在解析PHP时,1.php\x0A将被按照PHP后缀进行解析,导致绕过一…

sns.distplot()用法

seaborn.distplot(aNone, binsNone, histTrue,kdeTrue, rugFalse, fitNone, hist_kwsNone,kde_kwsNone, rug_kwsNone, fit_kwsNone,colorNone, verticalFalse, norm_histFalse,axlabelNone, labelNone, axNone, xNone)参数解释 a: 序列series、一维数组或者list,上…

经典街机游戏:拳皇97 for Mac(KOF97) 支持M1 中文移植版

游戏玩家一定会上手的游戏就是拳皇系列了吧,其中最经典的就是拳皇97,小编为大家提供的就是拳皇97mac版,熟悉的场景,熟悉的操作,原来Mac上打街机也可以这么爽,亲测拳皇97 for Mac 支持M1 Mac,喜欢…

ASP.NET Core Web API 使用Autofac框架

总目录 前言 主要介绍如何在ASP.NET Core Web API 使用Autofac框架 一、创建ASP.NET Core Web API 我们先创建一个ASP.NET Core Web API项目,然后准备相关的代码 1 假如我们需要实现登录的功能,现在我们创建相关的服务接口 public interface ILoginSe…

【vue+mathjax】mathjax的使用

方法一、引用外网的地址 但是使用这个方法&#xff0c;会报跨域&#xff0c;所以需要注意 第一步&#xff1a;在public/index.html中引入地址 <!DOCTYPE html> <html><head><meta charset"utf-8" /><meta http-equiv"X-UA-Compatib…

【uniapp】uniapp+vue2微信小程序实现分享功能

uniappvue2做的微信小程序实现分享功能 问题描述 uniappvue2做的微信小程序&#xff0c;发布以后点击右上角三个点&#xff0c;分享小程序的时候&#xff0c;转发和分享按钮都是灰色 解决方案 转发、分享、复制链接这几个功能需要自己来手动写方法&#xff0c;考虑到每个页…

文件上传漏洞(二,靶场搭建及漏洞利用)

前言&#xff1a; 本文基于github上的upload-labs&#xff0c;PHP study以及bp抓包软件进行操作。 一&#xff0c;靶场搭建。 靶场链接 1&#xff0c;下载zip文件到PHP study下的www文件夹内&#xff0c;并解压。 2&#xff0c;创建网站。 此处php版本应选择较老版本&…

记两次非常规文件上传Getshell

常规绕过前端和后端的任意文件上传已经没意思了&#xff0c;本文记录下之前和最近遇到的2个不太常规的任意文件上传Getshell的案例。 路径穿越文件上传Get Shell Nmap快速全端口扫描发现开放22&#xff0c;80和3306端口。访问目标&#xff0c;使用hfinger扫描发现Web应用使用…

【GD32 MCU入门教程】七、分散加载说明

分散加载说明以GD32F103ZE为例&#xff0c;分别用Keil、IAR和Embedded Builder工具实现&#xff1a;将函数放置某个地址、将常量放置某个地址、将函数放在RAM中运行的三种效果。 1、将led_toggle()函数放在0x08040000地址后。 2、将tempbuf[1024]常量放在0x08020000地址后。 …

JavaWeb中的前端工程化

本笔记基于【尚硅谷全新JavaWeb教程&#xff0c;企业主流javaweb技术栈】https://www.bilibili.com/video/BV1UN411x7xe?vd_sourcea91dafe0f846ad7bd19625e392cf76d8总结 第七章 前端工程化 一、前端工程化开篇 1.1 什么是前端工程化 前端工程化是使用软件工程的方法来单独…

借用BI系统又快又灵活地完成财务数据分析

和其他BI软件相比&#xff0c;奥威BI软件在财务分析上的表现十分突出&#xff0c;不仅能快速对接金蝶ERP&#xff0c;完成科目多变的财务指标计算分析&#xff0c;把复杂财务数据变得通俗易懂&#xff0c;还支持自助分析。从奥威BI软件的表现上看&#xff0c;说它是一款BI财务分…