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

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 技术交流认准下方 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.rhkb.cn/news/172332.html

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

相关文章

source insight4菜单工具按钮变乱恢复

目录 1&#xff1a;问题现象2&#xff1a;修改方式2.1 找到config_all.xml2.2 修改config_all.xml 1&#xff1a;问题现象 在source insight4点击工具按钮的时候&#xff0c;把工具全部都折叠了&#xff0c;然后手动拉出来的时候就乱了。 2&#xff1a;修改方式 2.1 找到con…

【多线程面试题 三】、 run()和start()有什么区别?

文章底部有个人公众号&#xff1a;热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享&#xff1f; 踩过的坑没必要让别人在再踩&#xff0c;自己复盘也能加深记忆。利己利人、所谓双赢。 面试官&#xff1a; run()和start()有什么区…

ffmpeg中examples编译报不兼容错误解决办法

ffmpeg中examples编译报不兼容错误解决办法 参考examples下的README可知&#xff0c;编译之前需要设置 PKG_CONFIG_PATH路径。 export PKG_CONFIG_PATH/home/user/work/ffmpeg/ffmpeg/_install_uclibc/lib/pkgconfig之后执行make出现如下错误&#xff1a; 基本都是由于库的版…

stm32的ADC采样率如何通过Time定时器进行控制

ADC采样率是个跟重要的概念. 手册上说可以通过Timer定时器进行触发ADC采样. 可我这边悲剧的是, 无论怎么样. ADC都会进行采样. 而且就算是TIM停掉也是一样会进行采样. 这就让我摸不着头脑了… 我想通过定时器动态更改ADC的采样频率. 结果不随我愿… 这到底是什么问题呢? 一…

哈希算法:如何防止数据库中的用户信息被脱库?

文章来源于极客时间前google工程师−王争专栏。 2011年CSDN“脱库”事件&#xff0c;CSDN网站被黑客攻击&#xff0c;超过600万用户的注册邮箱和密码明文被泄露&#xff0c;很多网友对CSDN明文保存用户密码行为产生了不满。如果你是CSDN的一名工程师&#xff0c;你会如何存储用…

uniapp实现webview页面关闭功能

实现思路&#xff1a; 1.关闭按钮是使用原生button添加的close属性。&#xff08;见page.json页面&#xff09; 2.监听关闭按钮的方法。&#xff08;onNavigationBarButtonTap&#xff09; 3.写实现关闭webview所有页面的逻辑。 废话不多说&#xff0c;直接上代码 1.page.…

【每日一题】合并两个有序数组

链接奉上&#xff1a;合并两个有序数组 目录 直接合并后排序&#xff1a;思路&#xff1a;代码实现&#xff1a; 双指针思路&#xff1a;代码实现&#xff1a; 直接合并后排序&#xff1a; 思路&#xff1a; 将nums2直接合并到nums1后边&#xff0c;并进行排序 代码实现&…

【多线程面试题 六】、 如何实现线程同步?

文章底部有个人公众号&#xff1a;热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享&#xff1f; 踩过的坑没必要让别人在再踩&#xff0c;自己复盘也能加深记忆。利己利人、所谓双赢。 面试官&#xff1a; 如何实现线程同步&…

docker镜像仓库

Hlarbor harbor是一个开源的云原生镜像仓库&#xff0c; 它允许仓库用户存储&#xff0c;使用docker镜像。可以将harbor看做是私有的dockerhub&#xff0c;它提供了更新安全性和控制性&#xff0c; 让组织能够安全的存储和管理镜像。 harbor RBAC&#xff1a;基于角色访问控制…

html/css/javascript/js实现的简易打飞机游戏

源码下载地址 支持&#xff1a;远程部署/安装/调试、讲解、二次开发/修改/定制 视频浏览地址

ASP.NET WebApi 极简依赖注入

文章目录 环境服务类启动项注入使用依赖注入的优点 环境 .NET Core 7.0ASP.NET CoreVisual Studio 2022 服务类 public class T_TempService {public T_TempService(){}public void Test(){}}启动项注入 #region 依赖注入 builder.Services.AddTransient<T_TempService&g…

springBoot与Vue共同搭建webSocket环境

欢迎使用Markdown编辑器 你好&#xff01; 这片文章将教会你从后端springCloud到前端VueEleementAdmin如何搭建Websocket 前端 1. 创建websocket的配置文件在utils文件夹下websocket.js // my-js-file.js import { Notification } from element-ui // 暴露自定义websocket对…

NAT技术与代理服务器

目录 一、NAT与NAPT技术 1.NAT技术 2.NAPT技术 &#xff08;1&#xff09;四元组的唯一性 &#xff08;2&#xff09;数据的传输过程 &#xff08;3&#xff09;NAPT的缺陷 二、代理服务器 1.正向代理和反向代理 2.代理服务器的应用 &#xff08;1&#xff09;游戏加…

MySQL的数据库操作、数据类型、表操作

目录 一、数据库操作 &#xff08;1&#xff09;、显示数据库 &#xff08;2&#xff09;、创建数据库 &#xff08;3&#xff09;、删除数据库 &#xff08;4&#xff09;、使用数据库 二、常用数据类型 &#xff08;1&#xff09;、数值类型 &#xff08;2&#xff0…

【云原生】portainer管理多个独立docker服务器

目录 一、portainer简介 二、安装Portainer 1.1 内网环境下&#xff1a; 1.1.1 方式1&#xff1a;命令行运行 1.1.2 方式2&#xff1a;通过compose-file来启动 2.1 配置本地主机&#xff08;node-1&#xff09; 3.1 配置其他主机&#xff08;被node-1管理的节点服务器&…

尚硅谷Flume(仅有基础)

q 1 概述 1.1 定义 Flume 是Cloudera 提供的一个高可用的&#xff0c;高可靠的&#xff0c;分布式的海量日志采集、聚合和传输的系统。Flume 基于流式架构&#xff0c;灵活简单。 Flume最主要的作用就是&#xff0c;实时读取服务器本地磁盘的数据&#xff0c;将数据写入到HD…

国际腾讯云直播推流配置教程!

云直播的服务本质是一个广播的过程&#xff0c;类似于电视台的直播节目通过有线电视网发送给千家万户。为了完成这个过程&#xff0c;云直播需要有采集和推流设备&#xff08;类似摄像头&#xff09;、云直播服务&#xff08;类似电视台的有线电视网&#xff09;和播放设备&…

开源Linux社区Armbian开发指南

1. 什么是armbian Armbian是一个基于Debian或Ubuntu的开源操作系统&#xff0c;专门针对嵌入式ARM平台进行优化和定制。Armbian可以运行在多种不同的嵌入式设备上&#xff0c;例如树莓派、ArmSoM、香蕉派等等。Armbian针对不同的嵌入式平台&#xff0c;提供了相应的硬件支持&a…

PYTHON+CH341 3线SPI驱动UC1601 LCD实现汉字显示

前言 参考大佬用CH341驱动OLED,链接如下&#xff1a;GitHub - jimjiang2/ch341dll_wrap_typical_app: A ch341dll Wrap is for using in Python 32bits windows to access I2C SPI and MDIO (by GPIO), and Demo with display PC sreen on OLED by i2c or SPI . 本文主要实现了…

分享一款基于 AI 的 Chrome 插件

最近使用大模型比较多&#xff0c;公司虽然提供了免费的 ChatGPT 但是需要跳转特定页面才能访问&#xff0c;比较麻烦&#xff0c;于是就想到是否可以开发一款类似于有道词典一样的 Chrome 插件&#xff0c;可以在任意页面使用&#xff0c;虽然市面上也有类似的插件&#xff0c…