基于单片机的智能电子鼻的设计
欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 技术交流认准下方 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
相关文章:

基于单片机的智能电子鼻的设计
欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 技术交流认准下方 CSDN 官方提供的联系方式 文章目录 概要 一、智能电子鼻系统的设计方案1.1智能电子鼻系统的设计思路1.2智能电子鼻系统的设计流程图1.3智能电子鼻系统的硬件数…...

代码随想录图论 第三天 | 130. 被围绕的区域 417. 太平洋大西洋水流问题
代码随想录图论 第三天 | 130. 被围绕的区域 417. 太平洋大西洋水流问题 一、130. 被围绕的区域 题目链接:https://leetcode.cn/problems/surrounded-regions/ 思路:题目要求沾边的不动,只改没沾边的,那么可以先dfs遍历4条边&am…...

二、【常用的几种抠图方式一】
文章目录 选框抠图快速选择工具抠图魔棒工具抠图对象选择工具抠图套索工具抠图多边形套索工具抠图磁性套索工具抠图 选框抠图 选框工具抠图适合规则的图形,如下图先使用选框工具框出对象的图轮廓,然后再选择并遮住在里边擦出图形的边缘,根据…...

常见面试题-MySQL专栏(一)
为什么 mysql 删了行记录,反而磁盘空间没有减少? 答: 在 mysql 中,当使用 delete 删除数据时,mysql 会将删除的数据标记为已删除,但是并不去磁盘上真正进行删除,而是在需要使用这片存储空间时&…...

使用Docker部署Apache Superset并实现公网远程访问
大数据可视化BI分析工具Apache Superset实现公网远程访问 文章目录 大数据可视化BI分析工具Apache Superset实现公网远程访问前言1. 使用Docker部署Apache Superset1.1 第一步安装docker 、docker compose1.2 克隆superset代码到本地并使用docker compose启动 2. 安装cpolar内网…...

buuctf_练[CISCN2019 华东南赛区]Web4
[CISCN2019 华东南赛区]Web4 文章目录 [CISCN2019 华东南赛区]Web4掌握知识解题思路代码分析正式解题 关键paylaod 掌握知识 根据url地址传参结构来判断php后端还是python后端;uuid.getnode()函数的了解,可以返回主机MAC地址十六进制;pyt…...

国际腾讯云直播推流配置教程!
云直播的服务本质是一个广播的过程,类似于电视台的直播节目通过有线电视网发送给千家万户。为了完成这个过程,云直播需要有采集和推流设备(类似摄像头)、云直播服务(类似电视台的有线电视网)和播放设备&…...

RocketMQ与Kafka差异对比:从架构到性能细节,解析两者在可靠性、扩展性和可用性等方面的优劣
淘宝内部的交易系统使用了淘宝自主研发的Notify消息中间件,使用Mysql作为消息存储媒介,可完全水平扩容,为了进一步降低成本,我们认为存储部分可以进一步优化,2011年初,Linkin开源了Kafka这个优秀的消息中间…...

【数智化人物展】同方有云联合创始人兼总经理江琦:云计算,引领数智化升级的动能...
江琦 本文由同方有云联合创始人兼总经理江琦投递并参与《2023中国企业数智化转型升级先锋人物》榜单/奖项评选。 数据智能产业创新服务媒体 ——聚焦数智 改变商业 在这个飞速发展的数字时代,我们置身于一个前所未有的机遇与挑战并存的时刻。数字化转型不再仅仅是一…...

SpringMVC Day 03 : 处理静态资源
前言 欢迎来到第三天的 SpringMVC 学习系列!在前两天的教程中,我们已经学习了如何搭建 SpringMVC 环境、创建控制器和处理请求等基础知识。今天,我们将继续探索 SpringMVC 的功能,并学习如何处理静态资源。 在现代 Web 应用程序…...

activiti 用户任务中的执行监听器
前言 略 用户任务中的执行监听器配置界面 监听器事件 用户任务中的执行监听器可以监听到的事件有: start:开始时触发。end:结束时触发。take:执行时触发。 监听器执行方式 监听器的执行方式: 类(classÿ…...

leetcode做题笔记200. 岛屿数量
给你一个由 1(陆地)和 0(水)组成的的二维网格,请你计算网格中岛屿的数量。 岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 此外,你可以假设该网格的四条边…...

HTTP 之 options预请求 nginx 解决跨域 postman调试跨域问题
一、HTTP一共有八种常见请求方法 get:参数在url上,浏览器长度有限制,不安全post:参数不可见,长度不受限制put:上传最新内容到指定位置delete:删除请求的url所表示的资源head:不返回…...

MFC知识点
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:…...

Spring-手写模拟Spring底层原理
概述 模拟大致的底层原理,为学习Spring源码做铺垫。 实现的功能:扫描路径、依赖注入、aware回调、初始化前、初始化、初始化后、切面 未实现的功能:构造器推断、循环依赖 重点:BeanDefinition、BeanPostProcessor 学习Spring…...

Scala【集合常用方法和函数操作(下)】
Fold、FoldLeft 和 FoldRight object Test03_Fold {def main(args: Array[String]): Unit {// 称作集合外的参数val list List(1,2,3,4)// fold的底层仍然是调用的 foldLeft// 第一个参数是一个值(称作集合内的参数,必须和集合外的参数类型一致)// 第二个参数是一…...

JS加密/解密之那些不为人知的基础逻辑运算符
不多说,直接上干货 使用逻辑非运算符 ! 和双重逻辑非运算符 !!:例如 ![]、!![]、!0、!!0 和 !""、!!""。空字符串的转换:!"" 和 !!""。数组和对象的类型转换:[] []、[] - []、{} [] 和…...

flinksql kafka到mysql累计指标练习
flinksql 累计指标练习 数据流向:kafka ->kafka ->mysql 模拟写数据到kafka topic:wxt中 import com.alibaba.fastjson.JSONObject; import org.apache.kafka.clients.producer.KafkaProducer; import org.apache.kafka.clients.producer.Produ…...

pdf转jpg的方法【ps和工具方法】
pdf转jpg的方法: 1.photoshop办法: pdf直接拖入ps中,另存为*.Jpg文件即可 另外注意的时候,有时候别人给你pdf文件中包含你需要的jpg文件,千万不要截图进入ps中,直接把文件拖入ps中,这样的文件…...

【已解决】Qt发送信号后,槽函数没有响应
Qt发送信号后,槽函数没有响应 检查有没有连接正确的信号和槽函数,有时候,大意了,会写错检查connect函数返回值,有没有连接成功检查对象的创建方式,确保在信号发送前,以及槽函数接收前ÿ…...

Kafka入门05——基础知识
目录 副本数据同步原理 HW和LEO的更新流程 第一种情况 第二种情况 数据丢失的情况 解决方案 Leader副本的选举过程 日志清除策略和压缩策略 日志清除策略 日志压缩策略 Kafka存储手段 零拷贝(Zero-Copy) 页缓存(Page Cache&…...

WordPress(7)配置邮箱发送功能
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、注册登陆163邮箱1. 配置SMTP二、开启smtp1.添加授权码二.在网站中配置smtp服务1.在主题的Boxmoe主题设置中开启邮箱设置三.安装所需要的插件1.安装完毕开启插件即可四.SMTP邮箱服务测试总结…...

简化路径(C++解法)
题目 给你一个字符串 path ,表示指向某一文件或目录的 Unix 风格 绝对路径 (以 / 开头),请你将其转化为更加简洁的规范路径。 在 Unix 风格的文件系统中,一个点(.)表示当前目录本身࿱…...

CS224W1.1——图机器学习介绍
文章目录 1. 介绍2. 主要问题3. 深度学习如何应用在图结构中4. 课程大纲 学习一下斯坦福CS224W的图机器学习(2021年),并做一下学习笔记,主要是研究方向与图神经网络相关。这次是第一次笔记,图片很多都是从斯坦福的PPT里…...

docker搭建waline评论系统
我这里是给博客网站嵌入评论系统的 1.登录LeanCloud 国际版,没有账号可以注册个 链接:点击跳转 2.新建应用,选择开发版(免费),商用版每个月最低消费5美刀。 3.在设置-应用凭证里面将AppID、AppKey、Maste…...

sql server 生成连续日期和数字
在sqlserver里,可以利用系统表master..spt_values里面存储的连续数字0到2047,结合dateadd()函数生成连续的日期 select convert (varchar(10),dateadd(d, number, getdate()),23) as workday from master..spt_values where type…...

太极v14.0.4 免ROOT用Xposed
一个帮助你免 Root、免解锁免刷机使用 Xposed 模块的 APP 框架。 模块通过它改变系统和应用的行为,既能以传统的 Root/ 刷机方式运作, 也能免 Root/ 免刷机运行;并且它支持 Android 5.0 ~ 11。 简单来说,太极就是个 Xposed 框架…...

python DevOps
在云原生中,python扮演的角色是什么? 在云原生环境中,Python 作为一种高级编程语言,在多个方面扮演着重要角色。云原生是指利用云计算的各种优势(如弹性、可扩展性和自动化),构建和运行应用程序…...

Git(四)底层命令:git对象、树对象、提交对象
目录 一、知识回顾1.1 Linux 基础命令1.2 .git 文件夹解析 二、git 对象(数据对象)2.1 hash-object 存储对象2.2 cat-file 查看对象 三、树对象3.1 ls-files 查看暂存区3.2 update-index 创建暂存区3.3 write-tree 生成树对象3.4 更新暂存区,…...

LVS-DR模式+keepalived+nginx+tomcat实现动静分离、负载均衡、高可用实验
实验条件: test2——20.0.0.20——主服务器——ipvsadm、keepalived服务 test3——20.0.0.30——备服务器——ipvsadm、keepalived服务 nginx5——20.0.0.51——后端真实服务器1(tomcat的代理服务器)——nginx服务 nginx6——20.0.0.61—…...