昉·星光系列课程9:昉·星光开发板火焰传感器探测火光

昉·星光系列课程9:昉·星光开发板火焰传感器探测火光

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

一、学习目标

  • 学习昉·星光开发板使用火焰传感器的模拟输出,以探测火光

二、准备工作

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

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

三、火焰传感器使用原理

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

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

火焰传感器的工作原理和光敏传感器类似,在这个火焰传感器顶部,有一个光敏电阻,由于光电效应,光照愈强,阻值就愈低,随着光照强度的升高,电阻值迅速降低。反之,输出低电平信号。随着电阻值的变化,其模拟输出口AO的电压信号也会发生变化,再使用ADC模块即可将电压信号转变位数字信号。
不过,火焰传感器专门用来探测火源或其它波长在760纳米~1100纳米范围内的光源,对于日常的灯光或者自然光照不敏感。
需要特别注意的是,尽管火焰传感器是用来感知火焰,但是它并不防火,通常在-25到85摄氏度下工作。因此使用时请与火焰保持距离,以免烧坏传感器。

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

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

四、火焰传感器使用

通过上述火焰传感器的原理,我们可以得知,要获取其测量的具体火焰火光强度值,需要通过ADS1115来进行模数转换。

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

实物连接如下:

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

然后,编写如下的程序:

# -*- coding: utf-8 -*-
# file: ~/projects/flame/flame_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),然后保存退出

编写完成后,运行 flame_ao.py ,然后使用火焰靠近测试。使用时请与火焰保持距离,以免烧坏传感器。

python3 flame_ao.py

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

测试时,测试环境有台灯光照环境,但无火光时,火焰传感器模拟输出基本为0。
当使用明火靠近时,火焰传感器的模拟输出显著上升到80以上。
当明火熄灭靠近时,火焰传感器的模拟输出依然获得数据。
因此,使用其能够较好的探测火焰的火光。

五、总结

在本次课程中,我们学习了火焰传感器的模拟输出信号的读取,以进行火焰火光的探测。
火焰传感器是安全设备的一部分,可以帮助我们保护房屋,办公室和商店免受火灾的影响。几乎所有的现代房屋,公寓,购物中心,电影院大厅,剧院,办公楼和商店都配备有包含火焰传感器的安全设备。

六、课后作业

  • 了解火焰传感器的模拟输出和ADS1115模数转换器
  • 配合三个LED灯,当检测到火焰时,亮红灯,当检测无明火火光时,亮黄灯,当没有检测到时,亮绿灯
  • 使用不同来源的火焰火火光,以及不同远近的距离来靠近火焰传感器,然后观察输出结果变化情况

七、参考资料

1 Like