基于单片机的智能电子鼻的设计

news2024/12/22 21:06:25

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 技术交流认准下方 CSDN 官方提供的联系方式

文章目录

    • 概要
  • 一、智能电子鼻系统的设计方案
    • 1.1智能电子鼻系统的设计思路
    • 1.2智能电子鼻系统的设计流程图
    • 1.3智能电子鼻系统的硬件数据清单及实物图
    • 1.4智能电子鼻系统的工作原理
  • 二、智能电子鼻系统的软件设计流程
    • 3.1智能电子鼻系统的总设计流程
    • 3.2 模数转换器模块设计流程
  • 三、实物展示
    • PCB制版设计
  • 四、结论
  • 五、 文章目录

概要

  智能电子鼻系统是围绕STM32单片机为中心而展开的,共延伸出三个功能模块,它们分别是空气质量PM2.5检测模块,煤气中毒预防模块和火灾报警模块。在PM2.5空气质量检测模块中,传感器首先检测检测空气中PM2.5的浓度后,通过显示器显示出结果,如果检测值高于正常值,那么对继电器部分通电。一氧化碳中毒预防模块,由传感器检测空气中CO浓度,若检测结果高于正常值,一方面单片机自动控制步进电动机工作进行开窗,另一方面给指定号码的手机进行GSM短信报警。火灾报警模块,由传感器检测烟雾浓度,若检测结果高于正常值,那么蜂鸣器报警,如果按下蜂鸣器停止按钮则停止报警。
关键词:STM32单片机;传感器;GSM短信报警

一、智能电子鼻系统的设计方案

1.1智能电子鼻系统的设计思路

S  TM32单片机是本次设计课题的核心,以STM32单片机为出发点而设计的智能电子鼻系统。本设计以STM32传感器为核心,有三个基础功能模块组成分别是PM2.5空气质量检测模块、一氧化碳中毒预防模块和火灾报警模块。
  在第一个模块中先由PM2.5传感器收集数据,经过A/D模数转换成电信号发送给STM32单片机进行数据处理,之后由显示器显示出实时数据,若测量浓度高于限定浓度,则单片机控制开关自动闭合给继电器器供电,可通过继电器旁边的指示灯是否变亮来判断继电器是否供电。
  在第二个模块中先由一氧化碳传感器收集数据,经过A/D模数传感器转换成电信号发送给STM32单片机进行数据处理,单片机经过公式对比得出测量浓度是否高于限定浓度的结果。若测量数据浓度超过单片机的限定数据浓度,则一方面单片机控制步进电动机转动,达到开窗的目的;另一方面单片机控制GSM报警系统给预先设置的手机号码发送短信进行报警,从而达到若室内无人也能及时收到信息并且降低室内一氧化碳浓度的目的。若后期测量数据浓度低于限定数据浓度,则STM32单片机控制步进电动机反向转动,从而实现关窗的功能。
  第三个模块中先由烟雾报警器收集数据,经过A/D模数转换器转换成电信号发送给STM32单片机进行数据处理,单片机经过公示对比得出测量浓度是否高于限定浓度的结果。若测量数据浓度超过阈值参数后,那么蜂鸣器进行报警,从而达到及时提醒人们寻找火源,为人们及时灭火或及时逃生争取时间。且该模块增加了蜂鸣器停止按钮,若人们想让蜂鸣器停止报警也可以实现。
  该设计硬件方面主要由STM32单片机,PM2.5传感器,一氧化碳传感器,烟感报警器,蜂鸣器,蜂鸣器停止按钮,显示器,步进电动机、GSM报警系统和A/D模数转换器等硬件组成。
  该设计软件方面共6000多行代码,主要由一个main主程序和多个子程序之间嵌套构成。其中stm32f10x是单片机的程序,SIM800是GSM短信报警的程序,KEY是按键的程序,MOTOR是步进电动机的程序,OLED是显示器的程序,ADC是模数转换的程序,FONT是字库的程序,USART是串口通信的程序,RELAY是继电器的程序,DHT11是温湿度的程序,DELAY是延迟的程序,设置为30S发送一次短信,从而避免连续触发。其中GSM短信报警的预留号码可以随意更改,只需在SIM800的程序里更改字符串即可,电话号码也是字符串,程序更改在SIM800中1698行。

1.2智能电子鼻系统的设计流程图

智能电子鼻系统的设计流程图如下所示,见图1-2。
在这里插入图片描述

图1-1 总体设计图

1.3智能电子鼻系统的硬件数据清单及实物图

本次设计使用的主要元件信息见下表1-1:

表1-1 元件清单
在这里插入图片描述

在这里插入图片描述

图1-2 实物图

1.4智能电子鼻系统的工作原理

  基于单片机的智能电子鼻的设计主要由三个小功能模块组成,以STM32F103C8T6单片机为中心。三个小模块是PM2.5传感器,CO传感器,烟感报警器;还有对应其功能的硬件如:显示器,空气净化器,步进电动机,GSM报警系统,蜂鸣器,蜂鸣器停止按钮,A/D转换器等。
PM2.5空气质量检测模块:
  本模块由PM2.5传感器、显示器和A/D转换器和继电器构成。经传感器检测空气中PM2.5的浓度后,经A/D模数转换后,由显示器显示出结果。其中PM2.5传感器设置的阈值参数为400ppm:若检测数值<400ppm则为正常范围;若检测数值>400ppm则超标。若浓度高于阈值参数,则予以通电进行下一步的处理工作,此时继电器予以供电,旁边的LED红色指示灯发亮,若没有供电,则LED红色指示灯不亮,可通过观察LED红色指示灯是否发亮来判断是不是通电。
煤气中毒预防模块:
  本模块由CO传感器、步进电动机控制开关窗、A/D模数转换和GSM短信报警组成。由传感器检测空气中CO浓度,经A/D模数转换后,CO传感器设置的浓阈值参数为50ppm:若检测数值<50ppm则为正常范围;若检测数值>50ppm则超标。若检测结果高于阈值参数,一方面单片机自动控制步进电动机工作进行开窗,另一方面给指定号码的手机进行GSM短信报警。
火灾报警模块:
  本模块由烟感报警器、蜂鸣器、A/D模数转换、GSM短信报警和蜂鸣器停止按钮组成。由传感器检测烟雾浓度,经A/D模数转换后,烟感报警器设置的阈值参数为250ppm:若检测数值<250ppm则为正常范围,若检测数值>250ppm则超标。若检测结果高于阈值参数,那么蜂鸣器报警,按下蜂鸣器停止按钮则停止报警。
  三个传感器的阈值参数设置完之后使用PM2.5传感器来检测空气中PM2.5的含量,使用CO传感器来检测空气中一氧化碳的含量,使用烟感报警器检测空气中烟雾浓度。数据经过A/D模数转换器处理后,由STM32单片机经过公式测算出所求浓度是否超标。当PM2.5浓度超标后,显示器显示实时浓度,同时开关闭合空气净化器开始工作。当CO浓度超标后,步进电动机开始转动实现开窗功能,同时GSM发送短信报警。当空气中烟雾浓度超标后,蜂鸣器报警,按下停止按钮那么停止报警。
  本课题中的限定浓度设定均已经过试验选为最佳数值,后期若想更改浓度数值也可以随时更改,使用时该系统放在任何位置均可进行气体监测。其中气体浓度单位是ppm,是相对于传感器满量程输出的电压值,公式=采集的电压/满量程电压,满量程是500ppm。测量数值精度为1ppm,最小测定值是1/100万即百万分之一,最大测定值500ppm,测量浓度范围是1ppm—500ppm。使用的温度范围-40℃—80℃均可,湿度低于95%都可以进行监测气体浓度。

二、智能电子鼻系统的软件设计流程

3.1智能电子鼻系统的总设计流程

本次课题设计的主体部分是由ZPH02-PM2.5传感器模块,A/D转换器模块,OLED液晶显示器模块,GSM短信报警模块、ULN2003驱动步进电机模块、MQ-2烟雾气敏传感器模块等基础模块组成。
第一部分软件通过PM2.5传感器来识别空气中PM2.5的浓度,之后通过A/D转换器转置成电信号,发送结果给单片机。第二部分软件通过一氧化碳传感器来识别空气中一氧化碳的浓度,之后通过A/D转换器转置成电信号,发送结果给单片机。第三部分软件通过烟雾传感器识别空气中烟雾的浓度,之后通过A/D转换器转置成电信号,发送结果给单片机。
综上STM32单片机通过设定的公式计算得出控制信号。如果PM2.5的浓度超过限定值,则显示器显示其实时浓度,同时单片机控制开关闭合,空气净化器开始工作。如果一氧化碳的浓度超过限定值,则GSM发短信报警,同时步进电动机转动实现开窗功能。如果烟雾的浓度超过限定值,那么蜂鸣器进行报警,按下停止按钮则停止报警。通过以上三个主要模块的功能,基本实现智能电子鼻的作用,从而给大家的安全带来长效的保护。
智能电子鼻系统的总设计流程图见下图:

在这里插入图片描述

图3-1智能电子鼻系统的总设计流程图

3.2 模数转换器模块设计流程

本课题中AD0832模数转换器将模拟信号转换成数字信号的配置代码如下所示:

在这里插入图片描述

图3-2 配置代码过程

AD0832模数转换器首先把传感器传输过来的模拟信号转换成对应的数字信号,其次在内存单元里储存相对应的数值。

在这里插入图片描述

图3-3 模数转换过程

三、实物展示

在这里插入图片描述

PCB制版设计

4.1 ZPH02-PM2.5传感器

在这里插入图片描述

图4-1 STM32F103C8T6单片机最小系统

4.2 ULN2003驱动步进电机

在这里插入图片描述

图4-2 ULN2003驱动步进电机
4.3 MQ-2烟雾气敏传感器

在这里插入图片描述

图4-3 MQ-2烟雾气敏传感器

四、结论

  在基于单片机智能电子鼻的设计与实现这个毕业设计课题选定后,由于本人在软件语言编程方面存在经验缺少的问题,所以在这个上面投入了不少精力,走的也不是很顺利。恰逢年初新型冠状病毒肆虐,本人所在小区也进行了严格的管控,在出不去门也买不到相关参考书籍(因疫情快递停运)的条件下,慕课等网络平台给了我新的思路,俗话说穷则思变,我通过一些论坛博客和网络在线阅读书籍解决一些具体操作问题后,各大高校的网上图书馆给我了新的启示,在这里我通过详细而全面的了解和研读后,终于在这部分有了较大的提升与进步。最后也很感谢我的室友和同学们给予我的帮助,我终于从传感器调试困难的状态慢慢走了出来,当然这里也少不了传感器卖家的指导和提供的详细参考资料和数据,我终于把这几个传感器和单片机磕磕绊绊的连接起来并使之形成一个较为完整的设计。

五、 文章目录

目录
前言 1
第一章 智能电子鼻系统的设计方案 3
1.1智能电子鼻系统的设计思路 3
1.2智能电子鼻系统的设计流程图 4
1.3智能电子鼻系统的硬件数据清单及实物图 4
1.4智能电子鼻系统的工作原理 5
第二章 智能电子鼻系统的硬件部分 7
2.1 ZPH02-PM2.5传感器模块 7
2.2 GSM短信报警模块 9
2.3 STM32F103C8T6单片机最小系统 10
2.4 OLED液晶显示器模块 13
2.5蜂鸣器及蜂鸣器停止按钮模块 14
2.6 继电器控制电路模块 15
2.7 ULN2003驱动步进电机模块 15
2.8 MQ-2烟雾气敏传感器模块 16
第三章 智能电子鼻系统的软件设计流程 18
3.1智能电子鼻系统的总设计流程 18
3.2 模数转换器模块设计流程 18
3.3蜂鸣器报警模块设计流程 19
第四章 PCB制版设计 21
4.1 ZPH02-PM2.5传感器 21
4.2 ULN2003驱动步进电机 21
4.3 MQ-2烟雾气敏传感器 22
4.4 OLED液晶显示器 22
4.5 蜂鸣器及蜂鸣器停止按钮 23
4.6 继电器 23
4.7 GSM短信报警 24
4.8 串口通信 24
第五章 系统调试 25
5.1 智能电子鼻系统实物图 25
5.2智能电子鼻系统调试过程 25
结论 29
参考文献 30
致谢 31

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

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

相关文章

软考高项-计算题理解

动态回收期主要是看净现值&#xff0c;仔细看&#xff0c;04年投资了925.93 &#xff0c;05,06合计共有825.59&#xff0c;也就是说2年还不能收完&#xff0c;剩余的部分要2年&#xff08;925.93-428.67-396.92&#xff09;2.27&#xff0c;也就是说这道题选C (6-1.1-0.35-0.05…

Jetpack:018-Jetpack中的导航一

文章目录 1. 概念介绍2. 使用方法2.1 基本概念2.2 传统用法2.3 新的用法 3. 示例代码4. 内容总结 我们在上一章回中介绍了Jetpack库中对话框相关的内容&#xff0c;本章回中主要介绍 导航。闲话休提&#xff0c;让我们一起Talk Android Jetpack吧&#xff01; 1. 概念介绍 我…

基于 Redis + Lua 脚本实现分布式锁,确保操作的原子性

1.加锁的Lua脚本&#xff1a; lock.lua --- -1 failed --- 1 success--- getLock key local result redis.call(setnx , KEYS[1] , ARGV[1]) if result 1 then--PEXPIRE:以毫秒的形式指定过期时间redis.call(pexpire , KEYS[1] , 3600000) elseresult -1;-- 如果value相同&…

动态规划(数位统计Dp)

AcWing 338. 计数问题 思路分析&#xff1a; 代码展示&#xff1a; #include <iostream> #include <algorithm> #include <cstring> #include <vector>using namespace std;//10的x次方 int pow10(int x) {int res 1;while(x --) res * 10;retur…

NIO和BIO编程

一、网络通信编程基本常识 1、什么是Socket&#xff1f; Socket是应用层与TCP/IP协议族通信的中间软件抽象层&#xff0c;它是一组接口&#xff0c;一般由操作系统提供。 2、短连接 短连接是指socket建立连接之后传输数据确定接收完后关闭连接 3、长连接 长连接是指建立so…

全新高速HID调试工具

全新高速 HID 调试工具&#xff0c;程序袁USB开发利器 支持一下特性&#xff1a; 支持高速USB自适应HID报告长度自动定时发送内置CRC小工具自定义显示 高速USB HID调试工具下载

Pytorch - 数据增广

增加一个已有数据集&#xff0c;使得有更多的多样性 在语言里面加入各种不同的背景噪音改变图片的颜色和形状 翻转 左右翻转上下翻转 但是并不总是可行的。 切割 从图片中切割一块&#xff0c;然后变形到固定形状 随机高宽比随机大小随机位置 颜色 改变色调、饱和度、明…

HackTheBox-Starting Point--Tier 0---Preignition

文章目录 一 题目二 实验过程 一 题目 Tags Web、Custom Applications、Apache、Reconnaissance、Web Site Structure Discovery、Default Credentials译文&#xff1a;Web、定制应用程序、Apache、侦察、网站结构发现、默认凭证Connect To attack the target machine, you …

【软件教程】如何用C++检查TCP或UDP端口是否被占用

一、检查步骤 使用socket函数创建socket_fd套接字。使用sockaddr_in结构体配置协议和端口号。使用bind函数尝试与端口进行绑定&#xff0c;成功返回0表示未被占用&#xff0c;失败返回-1表示已被占用。 二、CODE 其中port需要修改为想要检测的端口号&#xff0c;也可以将代码…

eslint提示 xxx should be listed in the project's dependencies

有时候手动安装了一个npm包A&#xff0c;npm包A里面包含了npm包B&#xff0c;这时候如果 import xxx from npm包B;eslint会报错&#xff0c;提示 npm包B 不在 package.json 里面 解决方法&#xff1a;在 eslintrc.js 增加配置 module.exports {rules: {import/no-extraneous-d…

Linux常见问题解决操作(yum被占用、lsb无此命令、Linux开机进入命令界面等)

Linux常见问题解决操作&#xff08;yum被占用、lsb无此命令、Linux开机进入命令界面等&#xff09; 问题一、新安装的Linux使用命令lsb_release提示无此命令&#xff0c;需先安装再使用 Linux安装lsb命令 lsb是Linux Standard Base的缩写&#xff08;Linux基本标准&#xff…

springboot的缓存和redis缓存,入门级别教程

一、springboot&#xff08;如果没有配置&#xff09;默认使用的是jvm缓存 1、Spring框架支持向应用程序透明地添加缓存。抽象的核心是将缓存应用于方法&#xff0c;从而根据缓存中可用的信息减少执行次数。缓存逻辑是透明地应用的&#xff0c;对调用者没有任何干扰。只要使用…

cocosCreator 之localStorage本地存储和封装拓展

版本&#xff1a; 3.8.0 语言&#xff1a; TypeScript 环境&#xff1a; Mac 简介 在cocosCreator中&#xff0c;针对于本地存储主要使用localStorage接口&#xff0c;通过key-value的格式进行存储和读取数据。 主要接口有&#xff1a; 接口描述setItem(key, value)保存指定…

Spring Security —漏洞防护—跨站请求伪造(CSRF)

在终端用户可以 登录 的应用程序中&#xff0c;必须考虑如何防止 跨站请求伪造&#xff08;CSRF&#xff09;。 Spring Security 默认为 不安全的HTTP方法&#xff08;如POST请求&#xff09;提供CSRF攻击防护&#xff0c;因此无需额外代码。你可以使用下面的方法明确指定默认…

今年天猫双11,打响电商AI时代第一枪

自阿里提出双11以来&#xff0c;今年已是第15个年头。在这15年间&#xff0c;双11见证了中国电商的发展轨迹&#xff0c;从野蛮生长、完善体验到重质重效。如今&#xff0c;在双11的见证下&#xff0c;中国电商的进化正悄然发生。 一些新的变化值得关注。“最值得买的电视”&a…

系列六、FactoryBean vs ApplicationContext

一、FactoryBean vs ApplicationContext 1.1、概述 BeanFactory是一个工厂类&#xff0c;负责生产和管理bean&#xff0c;在Spring中BeanFactory是IOC容器的核心接口&#xff0c;它的主要职责就是生产bean及建立各个bean之间的依赖。applicationContext是BeanFactory的一个子接…

Go 的连接池、重试和超时

这是一个来自 API 的间歇性 500 个内部服务器错误的故事&#xff0c;这些错误最终是由 Go 包中的硬编码常量引起的database/sql。我将主要为您省去冗长的故事&#xff0c;并直接讨论问题以及我们发现的原因。我们注意到来自特定 API 端点的 500 错误数量有所增加&#xff0c;并…

网络协议--BOOTP:引导程序协议

16.1 引言 在第5章我们介绍了一个无盘系统&#xff0c;它在不知道自身IP地址的情况下&#xff0c;在进行系统引导时能够通过RARP来获取它的IP地址。然而使用RARP有两个问题&#xff1a;&#xff08;1&#xff09;IP地址是返回的唯一结果&#xff1b;&#xff08;2&#xff09;…

目前最优的非蒸馏、可商用的开源大模型!MIT-IBM 提出鲑鱼模型!

作者 | 谢年年、ZenMoore 今年上半年&#xff0c;IBM 加入大模型战局&#xff0c;提出了一种使用原则(Principle)驱动的、基于 LLM Self-Instruct 的全新方法&#xff1a;SELF-ALIGN &#xff08;自对齐&#xff09;&#xff0c;并以开源LLaMA为基础&#xff0c;用不到300行&am…

el-table(vue2中)滚动条被固定列盖住

一、项目场景&#xff1a; vue2 el-table 二、问题描述 1、现场图片&#xff1a; 2、全局css环境配置了滚动条高度为6px /* 全局滚动条配置 */ ::-webkit-scrollbar {width: 6px;height: 6px; }::-webkit-scrollbar-track {background-color: #f1f1f1; }::-webkit-scrollbar-…