Flame detector alarm ・ 火焰检测
非接触赤外線センサーで炎を検知し、ブザーで警報を鳴らします。
この構成をエディタで開く・編集する →| 部品 | 役割 | ポート | リンク・価格 |
|---|---|---|---|
| M5Stack Core2 | Controller | grove_i2c, grove_analog, grove_uart, mbus | official page — $46.9 |
| Unit PaHub2 | I2C Hub (1→6) | grove_i2c | official page — $7.95 |
| Unit NCIR | Non-contact IR temperature sensor (flame | grove_i2c | official page — $19.95 |
| Unit Buzzer | Buzzer (alarm) | grove_analog | official page — $4.5 |
M5Stack Core2と非接触赤外線温度センサーUnit NCIR、そしてブザーUnit Buzzerを使って、火災を検知して警報を鳴らす装置です。NCIRが炎の熱を感知し、設定した温度を超えるとブザーが鳴ります。
# M5Stack Core2 + PaHub2 + NCIR + Buzzer (fire detection alarm)
# Wiring:
# PaHub2 IN -> Core2 red Port.A (I2C)
# NCIR -> PaHub2 CH0 (I2C channel 0)
# Buzzer -> Core2 black Port.B (GPIO 26 for PWM)
import time
from machine import Pin, PWM, I2C
from m5stack import lcd
# I2C setup for PaHub2 (TCA9548A) and NCIR (MLX90614)
i2c = I2C(0, scl=Pin(22), sda=Pin(21), freq=100000)
TCA_ADDR = 0x70 # PaHub2 I2C address
MLX_ADDR = 0x5A # NCIR I2C address
def select_channel(ch):
"""Select TCA9548A channel (0-5)"""
i2c.writeto(TCA_ADDR, bytes([1 << ch]))
def read_mlx_temp():
"""Read object temperature from MLX90614 in Celsius"""
select_channel(0) # NCIR on channel 0
data = i2c.readfrom_mem(MLX_ADDR, 0x07, 2) # read raw IR data
raw = (data[0] | (data[1] << 8))
temp = (raw * 0.02) - 273.15 # convert to Celsius
return temp
# Buzzer on Port.B (GPIO 26)
buzzer = PWM(Pin(26), freq=4000, duty=0) # 4KHz, 0% duty initially
ALARM_TEMP = 50.0 # alarm threshold in Celsius
while True:
temp = read_mlx_temp()
lcd.clear()
lcd.print('Temp: %.1f C' % temp, 10, 20)
if temp >= ALARM_TEMP:
lcd.print('FIRE ALARM!', 10, 60)
buzzer.duty(512) # 50% duty cycle
else:
buzzer.duty(0) # off
time.sleep(1)
この作り方はAIが構成から生成したものです(未検証)。通電前に配線とコードをご確認ください。
この構成はAIが実在するM5Stack部品から設計し、ポート互換をサーバで検証したものです。編集・共有できます。
エディタで開く →UnitKit は M5Stack® 製品向けの非公式ツール。作りたいものを書くと、部品リストと配線図が出ます。