ラズベリーパイで遊ぶ(21)-火災警報器

ラズベリーパイで遊ぶ(21)-火災警報器

多くのアパートやオフィスビルには完全な防火装置がありますが、これらの装置が火災が発生したかどうかをどのように判断できるか知りたいですか?物体が燃えると炎や煙が発生しますが、センサーで炎や煙を検知できれば、実際に火災の有無を検知することができます。

1.火炎センサー

物質の燃焼によって生成される火炎は、離散スペクトルガス放射と連続スペクトル固体放射を持っています。異なる燃焼材料によって生成される火炎の放射強度と波長は異なりますが、一般に、波長範囲は特徴的です。、火炎センサーこの原理で放射の波長を検出し、周囲に火源があるかどうかを判断することです。この実験では、使用した火炎センサーを次の図に示します。

このセンサーモジュールには4つのピンがあります。電源の正極と負極に加えて、それぞれデジタル信号とアナログ信号を出力する2つの出力ピンがあります。このモジュールには、センサーの感度を調整するための可変抵抗器もあります。

2.煙センサー

煙探知器は、煙に触れると表面の導電率が変化し、最終的な出力電圧が変化するガスセンサーです。この実験で使用した煙センサーモジュールを次の図に示します。

このセンサーモジュールにも4つのピンがあります。電源の正極と負極に加えて、他の2つの出力ピンはそれぞれデジタル信号出力とアナログ信号出力です。

3.実験的な接続

この実験では、使用する2つのセンサーモジュールがデジタル信号出力とアナログ信号出力の両方をサポートしています。アナログ信号を処理するには、アナログからデジタルへの変換モジュールを再度使用する必要があります。2つのセンサーのアナログ信号は次のとおりです。 PCF8591によって変換されます。

接続方法は以下のとおりです。

PCF8591およびRaspberryPi:

PCF8591 ラズベリーパイ
SCL SCL
SDA SDA
GND GND
VCC + 5V

火炎センサーの接続:

火炎センサー PCF8591 ラズベリーパイ
GND   GND
VCC   + 5V
行う   GPIO17(BCMコード、物理コード11に対応)
AIN0  

煙センサーの配線:

煙センサー PCF8591 ラズベリーパイ
GND   GND
VCC   + 5V
行う   GPIO18(BCMコード、物理コード12に対応)
AIN1  

4.コーディング

この実験とこの一連のブログで紹介された実験は、技術的に難しいことではありません。コーディングは次のとおりです。

#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)

テクノロジーに焦点を合わせ、愛を理解し、喜んで共有し、友達になりましょう

QQ:316045346

{{o.name}}
{{m.name}}

おすすめ

転載: my.oschina.net/u/2340880/blog/5316107