昉·星光系列课程10:昉·星光开发板烟雾传感器探测酒精泄露

昉·星光系列课程10:昉·星光开发板烟雾传感器探测酒精泄露

本次课程为昉·星光开发板IoT开发系列课程的第十讲,将带领同学们在昉·星光开发板上,使用烟雾传感器探测酒精泄露。
本次课程,在昉·星光开发板V1和V2上,操作步骤相同。

一、学习目标

  • 学习昉·星光开发板使用烟雾传感器的模拟输出,探测酒精泄露

二、准备工作

在开始本次课程的实际操作之前,同学们需要做好一些准备工作,课程中涉及到的硬件如下:

  • 开发板:昉·星光开发板
  • 烟雾传感器: 带AO输出的烟雾传感器
  • 模数转换模块:ADS1115
  • 杜邦线:若干

三、烟雾传感器使用原理

本次课程中,使用的烟雾传感器模块具体如下:

类似火焰传感器,在这个烟雾传感器上,也提供了数字输出接口DO和模拟输出接口AO。
因为昉·星光开发板自身没有ADC模块,因此本次课程,专门使用了一块ADC模块,用于帮助开发板读取烟雾传感器的AO模拟输出信息,从而获取探测到的数据。

烟雾传感器不只是可以探测我们日常生活中遇到的燃烧烟雾,其还能探测液化气、丁烷、丙烷、甲烷、酒精、氢气等多种可燃气体,对液化气、丁烷、甲烷、烟雾等有较好的灵敏度。

本次课程使用的ADC模块为ADS1115,具体如下:

ADS1115是一个16位精度的ADC信号转换模块,使用IIC接口与开发板通讯,能同时测量4组电压信号进行转换,可以工作在2V至5.5V,可以配合多种开发板、单片机使用,在汽车、电视、传感器等非常多的应用场合都能使用。

四、烟雾传感器使用

通过上述烟雾传感器的原理,我们可以得知,要获取其测量的具体探测结果,需要通过ADS1115来进行模数转换。

首先,将烟雾传感器模块的AO接口与和ADS1115的A0接口相连,使得ADS1115能够获取烟雾传感器输出的模拟电压信号。
然后,参考下图,将ADS115连接到昉·星光开发板:

实物连接如下:

注意:
应根据实际使用的传感器,确定供电电压。本次课程中使用的烟雾传感器模块和ADS1115模块,均使用5V供电电压。

然后,编写如下的程序:

# -*- coding: utf-8 -*-
# file: ~/projects/smoke/smoke_ao.py

import ADS1115
import time
import numpy

# 初始化ADS1115模块
ads = ADS1115.ADS1115()

while True:
    # 读取ADS1115模块通道0的数据,也就是A0
    volt = ads.readADCSingleEnded(0)

    # 转换
    per = numpy.interp(volt, [0, 5000], [0, 100])

    # 输出信息
    print("%d mV of A0, val is %f" % (volt, per))

    # 延时
    time.sleep(0.1)

上述程序的逻辑,通过ADS1115,检测烟雾传感器模块的AO输出,然后转换到对应的数值。

要运行以上的程序,还需要安装相应的第三方支持库numpy和ADS1115。但ADS1115扩展库默认使用的是i2c-1,但是我们的开发板使用的是i2c-0,所以需要在安装扩展库以后,需要进行一下处理才能使用,具体如下:

# 安装扩展库
pip install smbus
pip install numpy
pip install ADS1115

# 修改ADS1115库文件
vi ~/.local/lib/python3.10/site-packages/ADS1115/__init__.py
# 将该文件中的 smbus2.SMBus(1) 修改为 smbus2.SMBus(0),然后保存退出

编写完成后,运行 smoke_ao.py ,然后使用酒精棉球靠近测试,或者在周边环境喷射雾状酒精。

python3 smoke_ao.py

本课程实际测试的情况如下:

测试时,没有检测到时,烟雾传感器模拟输出基本为30左右。
当使用酒精棉球靠近时,烟雾传感器的模拟输出上升到30~49之间。
当使用酒精喷雾时,烟雾传感器的模拟输出显著上升到了70以上。

五、总结

在本次课程中,我们学习了烟雾传感器的模拟输出信号的读取,以进行酒精泄露的探测。
如原理部分所说,烟雾传感器对液化气、丁烷、甲烷、烟雾等有较好的灵敏度,所以其也是日常安全设备的一部分,可以帮助我们保护房屋,办公室和商店免受火灾的影响。几乎所有的现代房屋,公寓,购物中心,电影院大厅,剧院,办公楼和商店都配备有包含烟雾传感器的安全设备。

六、课后作业

  • 了解烟雾传感器的模拟输出和ADS1115模数转换器
  • 配合三个LED灯,当检测到烟雾较强时时,亮红灯,当检测烟雾时,亮黄灯,当没有检测到时,亮绿灯
  • 使用不同来源的可燃气体,以及不同远近的距离来靠近烟雾传感器,然后观察输出结果变化情况;检测的过程中,请务必注意安全,并对可能的意外做好防范措施。

七、参考资料

3 Likes