一起玩转树莓派(21)——火情报警器

简介: 很多公寓和写字楼中都有完善的防火装置,你想知道这些设备是如何对是否产生了火情进行判断的么?当有物体燃烧时,会产生火焰和烟雾,如果我们可以通过传感器对火焰和烟雾进行,实际上就可以做到检测是否有火情发生。

一起玩转树莓派(21)——火情报警器

很多公寓和写字楼中都有完善的防火装置,你想知道这些设备是如何对是否产生了火情进行判断的么?当有物体燃烧时,会产生火焰和烟雾,如果我们可以通过传感器对火焰和烟雾进行,实际上就可以做到检测是否有火情发生。

一. 火焰传感器

物质在燃烧时产生的火焰具有离散光谱的气体辐射和连续光谱的固体辐射,虽然不同的燃烧物其产生的火焰的辐射强度,波长等各有差异,但总体来说其波长范围是有特征的,火焰传感器即是通过这一原理要检测辐射波长,来判断周围是否有火源。本次实验,我们使用的火焰传感器如下图所示:

此传感器模块有4个引脚,除了电源正负极外,还有两个输出引脚,分别会输出数字信号和模拟信号。此模块也带一个可变电阻来条件传感器的灵敏度。

二.烟雾传感器

烟雾传感器是一种气体传感器,当与烟雾接触时,其表面导电率会发生变化,最终输出电压发生变化。本次实验使用的烟雾传感器模块如下图所示:

此传感器模块也有4个引脚,除了电源正负极外,另外两个输出引脚分别为数字信号输出和模拟信号输出。

三. 实验连线

本次实验,我们使用的两个传感器模块都支持数字信号输出和模拟信号输出,为了处理模拟信号,我们又要使用模数转换模块了,两个传感器的模拟信号都通过PCF8591来转换。

连线方式如下:

PCF8591与树莓派:

PCF8591 树莓派
SCL SCL
SDA SDA
GND GND
VCC +5V

火焰传感器连线:

火焰传感器 PCF8591 树莓派
GND   GND
VCC   +5V
DO   GPIO17(BCM编码,对应物理编码11)
AO AIN0  

烟雾传感器连线:

烟雾传感器 PCF8591 树莓派
GND   GND
VCC   +5V
DO   GPIO18(BCM编码,对应物理编码12)
AO AIN1  

四. 编码

本次实验与本系列博客中之前介绍的实验从技术上来说,并没有什么难度,编码如下:

#SMBus (System Management Bus,系统管理总线) 
import smbus   #在程序中导入“smbus”模块
import RPi.GPIO as GPIO 
import time

bus = smbus.SMBus(1)         #创建一个smbus实例

# 通过PCF8591读取模拟信号

# 火焰传感器的模拟数据
def readFire():
    #发送一个控制字节到设备 表示要读取AIN0通道的数据
    bus.write_byte(0x48,0x40)   
    bus.read_byte(0x48)         # 空读一次,消费掉无效数据
    return bus.read_byte(0x48)  # 返回某通道输入的模拟值A/D转换后的数字值

# 烟雾传感器的模拟数据
def readSmoke():
    #发送一个控制字节到设备 表示要读取AIN1通道的数据
    bus.write_byte(0x48,0x41)   
    bus.read_byte(0x48)         # 空读一次,消费掉无效数据
    return bus.read_byte(0x48)  # 返回某通道输入的模拟值A/D转换后的数字值

# 通过GPIO读取数字信号

# 设置使用的引脚编码模式
GPIO.setmode(GPIO.BOARD)
# 数字输出引脚 BCM 17
P1 = 11
# 数字输出引脚 BCM 18
P2 = 12

# 引脚初始化
GPIO.setup(P1, GPIO.IN)
GPIO.setup(P2, GPIO.IN)

while True:
    print('--------分割线----------')
    print('火焰传感器数字信号:', GPIO.input(P1))
    data1 = readFire()
    print('火焰传感器模拟信号:', data1)

    print('烟雾传感器数字信号:', GPIO.input(P2))
    data2 = readSmoke()
    print('烟雾传感器模拟信号:', data2)

    time.sleep(2)
专注技术,懂的热爱,愿意分享,做个朋友
目录
相关文章
|
Python
使用Python实现股票资金模拟盘交易
使用Python实现股票资金模拟盘交易案例
766 2
Vxworks 6.6系列下载地址
Vxworks 6.6系列下载地址: <br> ---------------------------------- <br><a target="_blank" href="ftp://ftp.windriver.speedera.net/ftp.windriver/internal/eval/vxworks-6.6/CDR-R133467.1-1-00.zip">ftp://ftp.
7344 0
react-Native init初始化项目报错”TypeError: cli.init is not a function“
react-Native init初始化项目报错”TypeError: cli.init is not a function“
1271 1
|
Java 程序员 图形学
程序员教你用代码制作飞翔的小鸟--Java小游戏,正好拿去和给女神一起玩
《飞扬的小鸟》Java实现摘要:使用IntelliJ IDEA和JDK 16开发,包含小鸟类`Bird`,处理小鸟的位置、速度和碰撞检测。代码示例展示小鸟图像的加载、绘制与旋转。同时有`Music`类用于循环播放背景音乐。游戏运行时检查小鸟是否撞到地面、柱子或星星,并实现翅膀煽动效果。简单易懂,可直接复制使用。
432 0
|
消息中间件 存储 JSON
RocketMQ 消费进度持久化
本文介绍了RocketMQ中消费进度的持久化机制,包括普通消息和延迟消息的消费偏移量是如何存储的。普通消息的消费进度存储于`consumerOffset.json`文件,格式为`{Topic}@{ConsumerGroup}`,而延迟消息则存储于`delayOffset.json`文件,以`{delayLevel:offset}`的形式记录。文章详细分析了相关文件内容及代码实现,并指出Broker分别以5秒和10秒的间隔进行持久化操作。
307 6
|
8月前
|
存储 安全 算法
EV代码签名证书获取步骤及其常见问题解答
EV代码签名证书是软件安全分发的重要工具,可验证开发者身份、确保代码完整性并消除“未知发布者”警告。获取步骤包括选择可信CA机构(如Sectigo、GlobalSign或Digicert)、提交企业信息、通过CA验证以及接收UKey。该证书支持多种文件格式,仅限企业申请,有效期1-3年,价格因机构而异。使用它可提升用户信任,满足WHQL认证需求。
|
域名解析 缓存 网络协议
【域名解析DNS专栏】深入理解DNS根服务器与顶级域服务器
【5月更文挑战第24天】DNS的根服务器和顶级域服务器在域名解析中起关键作用。根服务器是核心,负责提供顶级域服务器引用,维护顶级域列表;顶级域服务器管理如.com的域名,处理二级域名解析和管理。这两者影响解析速度、可靠性和安全性。了解它们有助于优化DNS配置和提升网站访问体验。
1428 1
【域名解析DNS专栏】深入理解DNS根服务器与顶级域服务器
|
Linux 编译器 C语言
FFmpeg开发笔记(二)搭建Windows系统的开发环境
在Windows上学习FFmpeg通常较困难,但通过安装预编译的FFmpeg开发包可以简化流程。首先需要安装MSYS2来模拟Linux环境。下载并执行MSYS2安装包,然后修改msys2_shell.cmd以继承Windows的Path变量。使用pacman安装必要的编译工具。接着,下载预编译的FFmpeg Windows包,解压并配置系统Path。最后,在MSYS2环境中运行`ffmpeg -version`确认安装成功。欲深入学习FFmpeg开发,推荐阅读《FFmpeg开发实战:从零基础到短视频上线》。
457 4
FFmpeg开发笔记(二)搭建Windows系统的开发环境
|
存储 Python
终于,手把手教会 HR 实现 Python + Excel 「邮件自动化」发工资条了
终于,手把手教会 HR 实现 Python + Excel 「邮件自动化」发工资条了
327 0
|
小程序
【微信小程序】-- 分包(四十四)
【微信小程序】-- 分包(四十四)