【单片机毕业设计】【mcuclub-hj-006-7】基于单片机的空气质量(天然气、CO、甲醛、甲苯、TVOC、CO2)检测的设计

news/2024/4/27 23:12:36/文章来源:https://blog.csdn.net/weixin_61121477/article/details/127442684

    最近设计了一个项目基于单片机的空气质量(天然气、CO、甲醛、甲苯、TVOC、CO2)检测系统,与大家分享一下:

一、基本介绍

项目名:空气质量(天然气、CO、甲醛、甲苯、TVOC、CO2)
项目编号:mcuclub-hj-009
单片机类型:STC89C52
具体功能:
1、通过MQ-5检测天然气或煤气值,超过设置最大值进行声光报警,并开启风扇和净化器
2、通过MQ-7检测CO值,超过设置最大值进行声光报警,并开启风扇和净化器
3、通过MS1100检测甲醛值,超过设置最大值进行声光报警,并开启风扇和净化器
4、通过MQ-135检测甲苯值,超过设置最大值进行声光报警,并开启风扇和净化器
5、通过SGP30检测TVOC值及CO2值,超过设置最大值进行声光报警,并开启风扇和净化器
6、通过按键设置各上限值,可以手动控制风扇和净化器、切换模式
7、通过显示屏显示数据
扩展功能:通过蓝牙模块将测量数据发送到手机端,并可以控制风扇和净化器、切换模式

二、51实物图

单片机型号:STC89C52

板子为绿色PCB板,两层板,厚度1.2,上下覆铜接地。元器件基本上为插针式,个别降压芯片会使用贴片式。

供电接口:TYPE-C

 

三、51仿真图

仿真软件版本:proteus8.9

电路连线方式:网络标号连线方式

注意:部分实物元器件仿真中没有,仿真中会用其他工作原理相似的元件代替,这样可能导致实物程序和仿真程序不一样

 

 四、32实物图

单片机型号:STM32F103C8T6

板子为绿色PCB板,两层板,厚度1.2,上下覆铜接地。元器件基本上为插针式,个别降压芯片会使用贴片式。

供电接口:TYPE-C

 

 五、原理图

软件版本:AD2013

电路连线方式:网络标号连线方式

注意:原理图只是画出了模块的引脚图,而并不是模块的内部结构原理图

 

 六、PCB图

由原理图导出,封装很大一部分都是作者自己绘制,不提供封装库,只提供连接好的源文件。中间有一个项目编号,隐藏在单片机底座下,插入单片机后不会看到。

两层板,上下覆铜接地。

 

七、系统框图

本设计以单片机为核心控制器,加上其他模块一起组成此次设计的整个系统,其中包括中控部分、输入部分和输出部分。中控部分采用了单片机控制器,其主要作用是获取输入部分的数据,经过内部处理,逻辑判断,最终控制输出部分。输入由三部分组成,第一部分是天然气检测模块,通过该模块检测当前环境的天然气;第二部分是一氧化碳检测模块,通过该模块检测当前环境的一氧化碳;第三部分是甲苯检测模块,通过该模块检测当前环境的甲苯;第四部分是甲醛检测模块,通过该模块检测当前环境的甲醛;第五部分是SGP30模块,通过该模块检测当前环境的二氧化碳和TVOC;第六部分是模数转换模块,通过该模块将传感器测量到的模拟电压转换成数字量;第七部分是按键模块,通过该模块可以切换界面、设置阈值、切换模式等;第八部分是供电模块,通过该模块可给整个系统进行供电。输出由三部分组成,第一部分是显示模块,通过该模块可以显示监测的数据以及设置的阈值;第二部分是继电器模块,通过两个继电器分别控制通风和净化;第三部分是声光报警模块,当监测值不在设置的阈值内时进行声光报警。除此之外,蓝牙模块既作为输入又作为输出,蓝牙模块和手机进行连接,可以将监测的数据传输到用户手机端,用户也可以通过手机端发送指令控制继电器的工作及其模式的切换。具体系统框图如图所示。​

 八、软件设计流程

系统的主流程图如图所示。在主程序中:首先对各个模块进行初始化,随后进入while主循环,在主循环中,首先进入第一个函数按键函数,该函数主要分为两部分,第一部分为调用按键扫描函数获取按键键值,第二部分通过键值进行相应的处理操作,包括切换界面、设置阈值等;紧接着进入第二个函数监测函数,该函数主要通过调用相应的驱动函数获取测量值,并通过蓝牙模块将监测的数据传输到手机端,用户也可以通过手机端发送指令,设备根据用户发送的指令执行对应的处理;紧接着进入第三个函数显示函数,该函数显示监测值及阈值;最后进入第四个函数处理函数,该函数主要判断当前各个气体检测值是否在设置的阈值之内,如果有气体检测值大于设置的最大值,则声光报警,并且打开风扇继电器进行通风以及净化继电器净化空气,如果各个检测值都在设置的阈值之内,则取消声光报警,并关闭通风和净化继电器。

 

 九、部分程序展示

软件版本:keil5

逻辑程序和驱动程序分开,分布于main.c和其他.c文件

void Manage_function(void)
{if(flag_display == 0)									//测量界面{if(flag_mode == 0)              //在自动模式下{if(har_value > har_max || trq_value > trq_max || co_value > co_max || jb_value > jb_max || co2_value > co2_max || tvoc_value > tvoc_max){                   //有值大于设置的最大值,通风、净化,触发报警RELAY_TF = 0;RELAY_JH = 0;if(time_num % 30 == 0){LED = ~LED;BEEP = ~BEEP;}}else{RELAY_TF = 1;RELAY_JH = 1;LED = 1;BEEP = 1;}}else                            //手动模式下,关闭声光报警{LED = 1;BEEP = 1;}}else																	//设置界面,关闭所有继电器,停止报警{RELAY_TF = 1;RELAY_JH = 1;LED = 1;BEEP = 1;}
}

资料请点击跳转到官网下载

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

04 CSS01

目标: 1、基础认知 2、基础选择器 3、字体和文本相关样式 4、Chrome调试工具 5、综合案例 一、基础认知 1.1 css介绍 中文名:层叠样式表 作用:给页面中的html标签设置样式 1.2 css语法规则 css写在style标签中,style标签一般…

【DETR 论文解读】End-to-End Object Detection with Transformer

目录前言一、整体架构二、基于集合预测的损失函数2.1、二分图匹配确定有效预测框2.2、损失函数三、前向推理四、掉包版代码五、一些问题Reference前言 贡献/特点: 端到端:去除NMS和anchor,没有那么多的超参,计算量也大大减少&am…

二叉树的OJ练习题

1.单值二叉树 描述:如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。只有给定的树是单值二叉树时,才返回 true;否则返回 false。 链接:965. 单值二叉树 - 力扣(LeetCode) 思路…

世界陶瓷卫浴100强榜单发布!

​  经过一年的严格数据审查,科学统计分析,备受全行业期待的 【世界陶瓷卫浴100强统计排行榜 】于2022年10月19日在中国佛山正式发布,除了陶瓷卫浴企业100强总榜以外,还发布了全球瓷砖企业30强、全球卫浴企业20强,全…

Python中的对象池是什么

在程序设计中,创建物体模块主要是通过生成对象来实现。当对象使用结束后,则会成为不再需要的模块进行销毁。 而在系统进行对象的生成与销毁过程中会大量的增加内存的消耗,同时对象的销毁往往会留下残留的信息,这样将会伴随内存泄露…

javaWeb SSM车辆调度系统myeclipse定制开发mysql数据库网页模式java编程SpringMVC

一、源码特点 JSP SSM车辆调度系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码 系统采用SSM框架,系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0&a…

swagger动态开关实践

swagger动态开关实践1. 背景2. 配置文件监听2.1 基于注解2.2 基于jdk3. swagger改造3.1 bean刷新3.2 方法重写4. 总结5. 参考资料1. 背景 系统漏洞扫描,扫出了swagger的问题。这个问题其实比较基础,那就是生产环境不应该开启swagger! 但是&…

FreeRTOS 软件定时器的使用

FreeRTOS中加入了软件定时器这个功能组件,是一个可选的、不属于freeRTOS内核的功能,由定时器服务任务(其实就是一个定时器任务)来提供。 软件定时器是当设定一个定时时间,当达到设定的时间之后就会执行指定的功能函数&…

el-switch接口实现

后台返回的数据: active-textswitch 打开时的文字描述string——inactive-textswitch 关闭时的文字描述string——active-valueswitch 打开时的值boolean / string / number—trueinactive-valueswitch 关闭时的值boolean / string / number—falseactive-colorswi…

Enzo丨艾美捷Enzo Ciglitazone解决方案

艾美捷Enzo Ciglitazone是一种噻唑烷二酮类降血糖药。它在遗传性肥胖的C57 Bl/6 ob/ob小鼠中显示抗高血糖活性,并且是选择性PPARγ激动剂(EC50=3M)。抑制人间充质干细胞中HUVEC分化和血管生成,并刺激脂肪生成和减少成骨…

区块链 — Overview

文章目录区块链的概念区块链数据结构区块链的基础技术哈希运算数字签名共识算法智能合约P2P网络区块链分类公有链联盟链私有链区块链的概念 狭义上,区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码学方式保证的不…

深度神经网络图像识别,深度神经网络图像配准

如何用Python和深度神经网络寻找相似图像 代码首先,读入TuriCreate软件包import turicreate as tc我们指定图像所在的文件夹image,让TuriCreate读取所有的图像文件,并且存储到data数据框data tc.image_analysis.load_images(./image/)我们来…

《python 可视化之 matplotlib》第一章 折线图 plot

《python 可视化之 matplotlib》第一章 折线图 本章节内容包括以下几方面内容: 绘制曲线 yx2yx^2yx2;让曲线更加光滑;常见的相关属性设置;多条折线图的绘制;折线图之间的颜色填充;时间序列可视化;常见问题…

iNFTnews|在元宇宙中探索NFT的无限可能

元宇宙正在使我们当下的生活发生显著变化。 我们都玩过很多电子游戏,看过很多相关的科幻电影,也有过很多关于元宇宙进入我们日常生活后,我们周围的事物将会受到怎样的巨大影响的讨论。 我们很快就会看到,如此先进的技术突破将逐…

人工神经网络概念及组成,人工神经网络基本概念

1、什么是BP神经网络? BP算法的基本思想是:学习过程由信号正向传播与误差的反向回传两个部分组成;正向传播时,输入样本从输入层传入,经各隐层依次逐层处理,传向输出层,若输出层输出与期望不符&…

含汞废水的深度处理方法

CH-95 是一款为了从工业废水中去除回收汞和贵金属而专门开发的螯合树脂。拥有聚乙烯 异硫脲官能基的大孔树脂,这种树脂对汞有极高的选择性。钠,碱土,铁铜等重金属等不能干扰 其对汞的选择性去除。 CH-97 是一款含有附着甲基硫醇聚苯乙烯共…

基于PB的企业人力资源信息系统设计与实现

目 录 摘 要 I Abstract II 第1章 引言 1 1.1选题背景及意义 1 1.2发展现状 1 1.3论文结构 2 第2章 系统分析 3 2.1 系统目标 3 2.2 系统需求分析 3 第3章 系统设计 5 3.1 系统功能结构设计 5 3.2 数据库设计与实现 7 3.2.1数据库需求分析 7 3.2.2数据库概念结构设计 8 3.2.3数…

[oeasy]python0010 - python虚拟机解释执行py文件的原理

解释运行程序 🥊 回忆上次内容 我们这次设置了断点 设置断点的目的是更快地调试调试的目的是去除​​bug​​别害怕​​bug​​一步步地总能找到​​bug​​这就是程序员基本功 调试​​debug​​ 我心中还是有疑问 ​​python3​​ 是怎么解释​​hello.py​​ 的…

Python实现SSA智能麻雀搜索算法优化支持向量机分类模型(SVC算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 麻雀搜索算法(Sparrow Search Algorithm, SSA)是一种新型的群智能优化算法,在2020年提出&am…

pytorch:常见的pytorch参数初始化方法总结

pytorch参数初始化1. 关于常见的初始化方法1) 均匀分布初始化torch.nn.init.uniform_()2) 正态分布初始化torch.nn.init.normal_()3) 常量初始化torch.nn.init.constant_()4) Xavier均匀分布5)Xavier正态分布初始化6) kaiming均匀分布初始化7) kaiming正…