M5Stackで水漏れ検知

Water leak detector ・ 漏水检测

静電容量式水分センサーで水漏れを検知し、ブザーで警報を鳴らします。

この構成をエディタで開く・編集する →

部品リスト(BOM)

部品役割ポートリンク・価格
M5Stack Core2Controllergrove_i2c, grove_analog, grove_uart, mbusofficial page — $46.9
Unit Earth (Soil Moisture Sensor)Soil moisture sensorgrove_analogofficial page — $3.5
Unit BuzzerBuzzergrove_analogofficial page — $4.5

配線

作り方

M5Stack Core2と土壌水分センサー、ブザーを使って、水漏れを検出してアラームを鳴らす装置です。センサーが水分を検知すると、ブザーが警告音を発します。

  1. 部品を用意する — 用意するもの:M5Stack Core2本体、Unit Earth(土壌水分センサー)、Unit Buzzer(ブザー)、Groveケーブル2本(通常ユニットに付属)、Core2とパソコンをつなぐUSB-Cケーブル。
  2. Groveケーブルでセンサーとブザーをつなぐ — まず、Unit EarthをCore2の黒いPort.B(アナログ/IOポート)にGroveケーブルで接続します。コネクタは一方向にしか入らないので、無理に押し込まないでください。次に、Unit Buzzerも同じく黒いPort.Bに接続します。ただし、Core2のPort.Bは1つしかないため、2つのユニットを同時に接続するには、別途Groveハブ(例:PaHub)が必要です。ここでは、PaHubを使ってPort.Bを分岐させ、両方のユニットを接続することを想定しています。
  3. パソコンにつないでMicroPythonを書き込む — USB-CケーブルでCore2をパソコンにつなぎます。UIFlowやThonnyなどのツールで、Core2にMicroPythonファームウェアが入っていることを確認し、下のコードをデバイスにコピーして実行します。
  4. 水漏れ検出のしきい値を調整する — コードを実行し、画面に出る水分の数値を見ます。センサーが乾いているときと、水に触れたときの値をメモします。希望する感度になるよう、コード内のMOISTURE_THRESHOLDを調整します。
  5. 動作をテストする — センサーを乾いた状態にしておくと、ブザーは鳴りません。センサーを湿らせたり水に触れさせると、しきい値を超えてブザーが鳴るはずです。正しく動作することを確認してください。

サンプルコード(micropython)

# M5Stack Core2 + Unit Earth (soil moisture) + Unit Buzzer
# Wiring: Unit Earth -> Core2 black Port.B (analog pin 36)
#         Unit Buzzer -> Core2 black Port.B (digital pin 26)
# Note: Both units share Port.B via a Grove hub (PaHub).
import time
from machine import Pin, ADC
from m5stack import lcd

# Port.B pins: analog input pin 36, buzzer control pin 26
moist = ADC(Pin(36))
moist.atten(ADC.ATTN_11DB)   # read full 0-3.3V range
buzzer = Pin(26, Pin.OUT)

MOISTURE_THRESHOLD = 2000   # adjust after calibrating (higher = wetter)
ALARM_INTERVAL = 0.5        # seconds between beeps

while True:
    value = moist.read()        # raw moisture reading
    lcd.clear()
    lcd.print('Moisture: %d' % value, 10, 20)
    if value > MOISTURE_THRESHOLD:    # water detected
        lcd.print('ALARM!', 10, 60)
        buzzer.on()
        time.sleep(ALARM_INTERVAL)
        buzzer.off()
        time.sleep(ALARM_INTERVAL)
    else:
        buzzer.off()
        time.sleep(1)

コツ・安全上の注意

この作り方はAIが構成から生成したものです(未検証)。通電前に配線とコードをご確認ください。

この構成はAIが実在するM5Stack部品から設計し、ポート互換をサーバで検証したものです。編集・共有できます。

エディタで開く →

UnitKit は M5Stack® 製品向けの非公式ツール。作りたいものを書くと、部品リストと配線図が出ます。