嵌入式人工智能(30-基于树莓派4B的气体传感器-MQ系列烟雾、酒精、空气质量等传感器)

news2024/11/24 6:27:52

1、气体传感器

气体传感器是一种用于检测和测量空气中各种气体浓度的设备。它们通常使用化学反应、光学原理或电化学原理来检测气体,并通过输出电信号或其他输出形式来指示测量结果。

气体传感器在许多领域都有应用,包括工业安全、环境监测、室内空气质量监测等。常见的气体传感器包括可燃气体传感器、有毒气体传感器、一氧化碳传感器、二氧化碳传感器等。

气体传感器的工作原理根据不同的类型而有所不同。例如,可燃气体传感器通常使用化学反应来检测可燃气体的存在,并产生相应的电信号。有毒气体传感器则通过与特定气体发生化学反应来测量气体浓度。光学气体传感器则使用光的吸收或散射来检测气体。

气体传感器的准确性和灵敏度是评估其性能的重要指标。准确性表示传感器测量结果与实际值之间的偏差程度,而灵敏度表示传感器对目标气体浓度变化的响应程度。

气体传感器的选择应根据具体的应用需求来进行。例如,在工业环境中,可燃气体传感器和有毒气体传感器通常被广泛应用于检测潜在的危险气体泄漏。在室内空气质量监测中,二氧化碳传感器被用于检测人员密集区域的二氧化碳浓度,以确保室内空气质量符合健康标准。

总之,气体传感器是一种将某种气体体积分数转化成对应电信号的转换器,探测头通过气体传感器对气体样品进行调理,如滤除杂质和干扰气体,干燥或制冷等。它能够提供有关空气中各种气体浓度的信息,从而保护人们的安全和健康。

2、MQ系列传感器

MQ气体传感器使用的气敏材料是在清洁空气中电导率较低的二氧化锡(Sno2)。当传感器所处环境中存在可燃气体时,传感器的电导率随空气中可燃气体浓度的增加而增大。使用简单的电路即可将电导率的变化转换为与该气体浓度相对应的输出信号。MQ气体传感器对甲烷的灵敏度高,对丙烷、丁烷也有较好的灵敏度。这种传感器可检测多种可燃性气,是一款低成本传感器。

上图是MQ系列传感器,可根据实际场景需求检测各种气体。我拿生活中常见的三种安全气体检测应用举例,于是到网上购买了这3款传感器-MQ-2烟雾传感器、MQ-3酒精传感器、MQ-135空气质量传感器。

(1)MQ-2烟雾传感器

MQ-2烟雾传感器是一种常见的气体传感器,用于检测空气中的烟雾浓度。它的工作原理是通过检测空气中的气体浓度变化来判断是否存在烟雾。

MQ-2烟雾传感器的主要特点包括:
高灵敏度:MQ-2烟雾传感器对于烟雾的检测非常敏感,可以快速响应和检测到微小的烟雾浓度变化。
宽检测范围:MQ-2烟雾传感器可以检测多种烟雾气体,包括烟草烟雾、厨房烟雾等。
低功耗:MQ-2烟雾传感器具有低功耗特性,可以长时间稳定工作。
易于使用:MQ-2烟雾传感器可以通过简单的数字或模拟信号进行输出,方便与其他电路或微控制器进行连接和使用。

MQ-2烟雾传感器广泛应用于火灾报警系统、烟雾探测器、安防系统等领域,可以及时检测到烟雾浓度升高的情况,发出警报或采取其他措施,保护人们的生命和财产安全。

(2)MQ-3酒精传感器

MQ-3酒精传感器是一种可用于检测空气中酒精浓度的传感器。它是一种半导体传感器,通过对气体中的酒精分子进行化学反应,进而产生电信号来检测酒精浓度。

MQ-3酒精传感器通常由半导体材料(如锡氧化物)制成,并与热电致动装置、可变电阻器和电路连接在一起。当酒精气体通过传感器时,酒精分子与半导体材料发生作用,改变了材料的导电性能。这种变化被传感器电路检测到,并转化为电信号输出。

MQ-3酒精传感器具有高灵敏度、快速响应和稳定性好的特点。它可以用于检测空气中的酒精浓度,例如在酒后驾驶检测、酒精饮品生产过程中的气体泄漏监测等应用场景。

然而,值得注意的是,MQ-3酒精传感器对其他气体也会产生一定的响应,因此在使用时需要进行准确的校准和滤波处理,以提高检测准确性。同时,传感器的寿命也会受到酒精浓度、温度和湿度等环境因素的影响,因此需要定期维护和更换。

(3)MQ-135空气质量传感器

MQ-135空气质量传感器是一种用于检测空气中有害气体浓度的传感器。它能够检测到一些有害气体,如二氧化碳、一氧化碳、甲醛、氨气、苯等。传感器通过测量空气中有害气体的电阻变化来判断气体的浓度。MQ-135传感器通常被用于空气质量检测仪器、空调系统、智能家居、室内空气监测等领域。它具有体积小、功耗低、灵敏度高等特点,广泛应用于环境监测和空气质量检测。

从外观看橙色的是MQ-3酒精传感器,另外2个看起来一模一样,要区分主要看传感器罩头外圈的刻印。见下图。

3、MQ传感器引脚与接线 

MQ传感器的引脚共有两种输出方式:AO 模拟信号输出和DO开关信号(TTL)。

 电器性能
输入电压:DC5V功耗(电流):150mA
DO输出:TTL数字量0和1(0.1和5V)
AO输出:0.1-0.3V(相对无污染),高浓度电压4V左右
特别提醒:传感器通电后,需要预热20S左右,测量的数据才稳定,传感器发热属于正常现象,因为内部有电热丝。

特别注意:各类芯片、传感器或电子元器件等一定要按照手册要求接电,有的要求5V,有的是3.3V,如果出现不能使用或者灵敏度差等其他小问题,必须检查下供电电压或电流是否满足输入要求。

本MQ系列的DO与AO和电阻式传感器接法及使用一模一样。请参考嵌入式人工智能(25-基于树莓派4B的电阻式传感器)-CSDN博客

4、实验代码与现象

(1)DO实验,如果检测到气体就使用蜂鸣器报警,不同的气体,报警的时间间隔不同。

import RPi.GPIO as GPIO
import time


# 用于接收信号的引脚
beeper = 31
mq3_pin = 36
mq135_pin = 38
mq2_pin = 40

# 设置引脚编号方式
GPIO.setmode(GPIO.BOARD)

# 将36号物理引脚设置为下拉电阻以保证精度
GPIO.setup(mq3_pin, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.setup(mq135_pin, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.setup(mq2_pin, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.setup(beeper, GPIO.OUT)
GPIO.output(beeper, GPIO.HIGH)

def beep(seconds):
    # 根据模块高低电平触发条件调正输出信号
    GPIO.output(beeper, GPIO.LOW)
    time.sleep(seconds)
    GPIO.output(beeper, GPIO.HIGH)

def beepAction(secs, sleepsecs, times):
    for i in range(times):
        beep(secs)
        time.sleep(sleepsecs)


if __name__ == '__main__':
    n=0
    try:
        while True:
            is_mq2DO = GPIO.input(mq2_pin)
            is_mq3DO = GPIO.input(mq3_pin)
            is_mq135DO = GPIO.input(mq135_pin)
            if is_mq2DO:
                print('未检测到烟雾')
            else:
                print('检测到烟雾')
                beepAction(0.3,0.2,5)
            if is_mq3DO:
                print('未检测到酒精')
            else:
                print('检测到酒精')
                beepAction(0.3,0.5,5)
            if is_mq135DO:
                print('未检测到气体杂质')
            else:
                print('检测到气体杂质')
                beepAction(0.3,1,5)
            time.sleep(2)
            n=n+1
            print('===========第{}次检测==========='.format(n))
            

    except KeyboardInterrupt:
        print('即将退出检测')
    finally:
        # 释放引脚
        GPIO.cleanup()

 实验发现树莓派的引脚默认电压并不都是高电平或者低电平,我用万用表测量GPIO26发现该引脚是低电平,插上蜂鸣器就响。GPIO6默认是高电平,插上不响,但运行程序的时候,默认低电平就响,所以蜂鸣器我就使用了GPIO26(BOARD31),程序默认给高电平,先关闭蜂鸣器。

实验发现效果还是可以的,比较灵敏。酒精的检测可以用卫生纸沾点酒放到传感器附近,各位同学就不用喝酒呼气检测了。烟雾的传感器可以用打火机气体丁烷(尽量不吸烟)来进行检测。本次实验不用抽烟喝酒也可以做。至于那个空气质量传感器,我试验发现对酒精和丁烷不敏感,我这边没有苯类化学气体,就不做实验了。

(2)AO检测,通过PCF8591检测酒精浓度大小,当数值超过200或者自己设定一个值,蜂鸣器就响。

import RPi.GPIO as GPIO
import time
import smbus
import time

bus = smbus.SMBus(1)
     
# 用于接收信号的引脚
beeper = 31
mq3_pin = 36

# 设置引脚编号方式
GPIO.setmode(GPIO.BOARD)

# 将36号物理引脚设置为下拉电阻以保证精度
GPIO.setup(mq3_pin, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.setup(beeper, GPIO.OUT)
GPIO.output(beeper, GPIO.HIGH)


#通过 sudo i2cdetect -y -1 可以获取到IIC的地址
def setup(Addr):
	global address
	address = Addr
     
# 读取模拟量信息
def read(chn): #通道选择,范围是0-3之间
	try:
		if chn == 0:
			bus.write_byte(address,0x40)
		if chn == 1:
			bus.write_byte(address,0x41)
		if chn == 2:
			bus.write_byte(address,0x42)
		if chn == 3:
			bus.write_byte(address,0x43)
		bus.read_byte(address) # 开始进行读取转换
	except Exception as e:
		print ("Address: %s" % address)
		print (e)
	return bus.read_byte(address)


if __name__ == "__main__":
    setup(0x48)
    try:
        while True:
            Alcohol_concentration = read(0)
            print(Alcohol_concentration)
            if Alcohol_concentration>200:
                GPIO.output(beeper, GPIO.LOW)
            else:
                GPIO.output(beeper, GPIO.HIGH)
            time.sleep(2)
    except KeyboardInterrupt:
        print('即将退出检测')
    finally:
        # 释放引脚
        GPIO.cleanup()

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

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

相关文章

photoshop学习笔记——移动工具

移动工具,可以对图层进行移动,快捷键 V 使用的素材已经放上了,直接下载即可 按住ctrl 可以自动选取,鼠标点击哪个对象,自动选中哪个图层 按住 shift 校正角度(只能沿着直线移动) 按住 alt 拖…

第 1 章 预备知识

1、C简介 C继承了 C 语言高效、简洁、快速和可移植性的传统。C面向对象的特性带来了全新的编程方法,这种方法是为应付复杂程度不断提高的现代编程任务而设计的。 C的模板特性提供了另一种全新的编程方法——泛型编程。 C融合了 3 种不同的编程方式:C …

请你谈谈:spring bean的生命周期 - 阶段5:BeanPostProcessor前置处理-自定义初始化逻辑-BeanPostProcess后置处理

BeanPostProcessor的postProcessBeforeInitialization方法是在bean的依赖注入(即属性填充)完成后,但在bean的初始化回调(如PostConstruct注解的方法或InitializingBean接口的afterPropertiesSet方法)之前被调用的。 具…

大模型算法备案各项要求详细说明

2024年3月1日,我国通过了《生成式人工智能服务安全基本要求》(以下简称《AIGC安全要求》),这是目前我国第一部有关AIGC服务安全性方面的技术性指导文件,对语料安全、模型安全、安全措施、词库/题库要求、安全评估等方面…

Windows按钮快捷键解释(有摸鱼技巧!):(个人尝试)另外警告:仅代表UP建议,不一定适用于所有电脑!谨慎尝试哦~好好工作!杜绝摸鱼!引以为戒!

哈喽!各位好,我们来一期电脑专题的(快捷键)第一次尝试,你们看看吧! 警告:仅代表UP建议,不一定适用于所有电脑!谨慎尝试哦~好好工作!杜绝摸鱼! 一…

HarmonyOs之 路由简单跳转

Navigation路由相关的操作都是基于页面栈NavPathStack提供的方法进行,每个Navigation都需要创建并传入一个NavPathStack对象,用于管理页面。主要涉及页面跳转、页面返回、页面替换、页面删除、参数获取、路由拦截等功能。 Entry Component struct Index …

算法通关:006_3二分查找:查找数组中<=num 最右边的值

文章目录 说明主要代码全部代码运行结果 说明 大于等于最右不考,意义不大。 直接看(arr.length-1) 位(即数组最后一位),如果大于num,那就说明arr[arr.length-1]是大于等于最右的数字数组最后一…

【视频讲解】ResNet深度学习神经网络原理及其在图像分类中的应用|附Python代码

全文链接:https://tecdat.cn/?p37134 原文出处:拓端数据部落公众号 分析师:Canglin Li 本文深入探讨了卷积层(Convolutional Layer)在深度学习框架中的核心作用与操作机制,并分析了其在特征提取、网络构…

学习记录701@org.hibernate.MappingException: No Dialect mapping for JDBC

使用spring data jpa 时报错:javax.persistence.PersistenceException: org.hibernate.MappingException: No Dialect mapping for JDBC type: 0。 但是在数据库中sql是可以执行的。 我是用的是原生查询: Query query entityManager.createNativeQuer…

ElasticSearch(七)— 相关性检索和组合查询

一、 相关性评分 全文检索与数据库查询的一个显著区别, 就是它并不一定会根据查询条件 做完全精确的匹配。除了模糊查询以外,全文检索还会根据查询条件给文档的相关性打分并排序,将那些与查询条件相关性高的文档排在最前面。 相关性( Relev…

计算机二级题--结构体及链表 章节

之前写的有结构体全部的知识点,这一篇主要针对计算机二级真题的整理。 需要备考计算机二级的小伙伴们先收藏起来吧。整理不易,不过有帮助记得点赞哦 高频考点(容易出错,附有例题) 1.结构体传参,传值的区…

PyQt ERROR:ModuleNotFoundError: No module named ‘numpy‘

ERROR:ModuleNotFoundError: No module named numpy Solution:打开cmd,输入指令下载numpy库 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple numpy//或者尝试这个指令 pip install numpy

C++学习 const相关

🤔 今天回顾C 时候 发现遇到关于const的变量类型(底层const 顶层const 常量指针 指针常量 常量引用…)又有点懵懵的了,然后又仔细复盘了一下 最后整理了一下 也方便记忆 文章目录 引入顶层const和底层const顶层const底层const 总结…

[Windows CMD] 查看网络配置 ipconfig

ipconfig 是一个网络命令工具,用于显示所有适配器(网络接口)的 IPv4 和 IPv6 配置信息。这个命令在 Windows 操作系统中非常常用,也存在于其他一些基于 IP 的网络系统中,如 macOS 和 Linux(在这些系统中通常…

自动曝光Flicker现象分析

1、sensor Flicker现象 相机输出画面会出现频闪,尤其是对着日光灯管场景,画面中有水波纹渐变或者阴影纹路,如下图所示。 所展示的现象为: 1、同一帧的不同行的亮度各不相同,存在亮暗变化的条纹; 2、不同…

睿抗题解集

睿抗 2023国赛RC-u1 睿抗,启动!RC-u2 桌游猜谜RC-u3 兰州拉面派餐系统RC-u4 拆积木RC-u5 栈与数组总结2023国赛 RC-u1 睿抗,启动! #include<bits/stdc++.h> using namespace std; const int N=1e6+10; char a[26],b[26]; string s;int change(int op,int idx){if(op…

Docker安装oracle19c

文章目录 Docker安装oracle19c1. 拉取镜像2. 创建目录并赋权3. 构建容器并启动4. 查看日志5. 登录docker容器里面6. 登录sqlplus 创建PDB用户7. 查看show pdbs7. 切换数据库8. 创建用户9. 授权10. 使用navicat连接11. 参考和感谢 Docker安装oracle19c 1. 拉取镜像 docker pul…

SQLite3(3):Qt中使用SQLite3

目录 一、前言 二、Qt相关类 2.1 QSqlDatabase 2.2 QSqlQuery 2.3 QSqlQueryModel 三、Qt基本应用实现 3.1 mainwindow.h 3.2 mainwindow.cpp 3.3 应用界面 四、总结 一、前言 本文进行在Qt中实现SQLite3的基本功能实现演示。 在Qt中不论我们连接的何种类型的关系型…

尝鲜免费文生视频!【智谱清影】

&#x1f680;&#x1f680;震撼发布&#xff01;你还在为制作短视频头疼吗&#xff1f;耗时太长&#xff1f;技术门槛高&#xff1f;别怕&#xff0c;AI生成视频神器——清影&#xff08;Ying&#xff09;来啦&#xff01;只需30秒&#xff0c;就能get到一段6秒的炫酷视频&…

vue2实现el-tab的内容框右击关闭除了首页的其他所有页面

效果图 <!-- 右键功能 --><div v-show"contextMenuVisible"><ul :style"{left:menuLeft px,top:menuToppx}" class"contextmenu"><li><el-button type"text" click"closeAll" size"mini&qu…