M5Stackで加湿器自動制御

Humidifier auto control ・ 加湿器控制

ENV IIIで湿度を測定し、低湿度時にリレーで加湿器をON/OFF制御します。

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

部品リスト(BOM)

部品役割ポートリンク・価格
M5Stack Core2Controllergrove_i2c, grove_analog, grove_uart, mbusofficial page — $46.9
Unit ENV IIITemp / humidity sensorgrove_i2cofficial page — $5.95
Unit RelayRelay (switch humidifier)grove_analogofficial page — $3.5

配線

作り方

M5Stack Core2とENV IIIユニット(温湿度・気圧センサー)とリレーユニットで作る、湿度制御式加湿器です。ENV IIIが部屋の湿度を測り、設定したしきい値より低くなったらリレーが加湿器の電源をON/OFFします。Core2が湿度を監視し、自動で加湿器を制御するので、快適な湿度を保てます。

  1. 部品を用意する — 用意するもの:M5Stack Core2本体、ENV IIIユニット(温湿度・気圧センサー)、リレーユニット、Groveケーブル2本(ENV III用とリレー用、通常ユニットに付属)、Core2とパソコンをつなぐUSB-Cケーブル。
  2. ENV IIIユニットをPort.A(赤)に接続する — ENV IIIユニットはI2C通信を使います。Groveケーブルの一端をENV IIIに、もう一端をCore2の赤いPort.A(I2Cポート)に差し込みます。コネクタは一方向にしか入らないので、無理に押し込まないでください。
  3. リレーユニットをPort.B(黒)に接続する — リレーユニットはデジタル信号でON/OFFを制御します。Groveケーブルの一端をリレーユニットに、もう一端をCore2の黒いPort.B(アナログ/GPIOポート)に差し込みます。
  4. 加湿器をリレーユニットに配線する — リレーユニットのCOM(共通)とNO(ノーマルオープン)端子に加湿器の電源線を接続します。加湿器がAC100Vなどの高電圧を使う場合は、必ず電源を切った状態で作業し、絶縁処理を確実に行ってください。
  5. パソコンにつないでMicroPythonを書き込む — USB-CケーブルでCore2をパソコンにつなぎます。UIFlowやThonnyなどのツールで、Core2にMicroPythonファームウェアが入っていることを確認し、下のコードをデバイスにコピーして実行します。
  6. 湿度のしきい値を調整する — コードを実行し、画面に出る湿度の数値を見ます。希望する湿度(例:50%)になるように、コード内のHUMIDITY_THRESHOLDを調整します。加湿器がONになる湿度を設定してください。
  7. 動作をテストする — 加湿器が接続されていない状態で、コードを実行してリレーが正しくON/OFFするか確認します。画面に湿度とリレーの状態が表示されます。加湿器を接続する前に、リレーの動作音(カチッという音)で確認してください。

サンプルコード(micropython)

# M5Stack Core2 + ENV III + Relay (humidity-controlled humidifier)
# Wiring: ENV III -> Core2 red Port.A (I2C), Relay -> Core2 black Port.B (GPIO)
import time
from machine import Pin, I2C
from m5stack import lcd

# I2C setup for ENV III (SHT30 on addr 0x44)
i2c = I2C(0, scl=Pin(22), sda=Pin(21), freq=100000)

# Relay control pin (Port.B GPIO 36 on Core2)
relay = Pin(36, Pin.OUT)
relay.off()  # start with relay off

HUMIDITY_THRESHOLD = 50.0  # adjust to your desired humidity (%)

def read_humidity():
    # Send measurement command to SHT30
    i2c.writeto(0x44, bytes([0x2C, 0x06]))
    time.sleep_ms(50)
    data = i2c.readfrom(0x44, 6)
    # Convert raw data to humidity (formula from datasheet)
    raw_hum = ((data[3] << 8) | data[4])
    humidity = 100.0 * (raw_hum / 65535.0)
    return humidity

while True:
    try:
        hum = read_humidity()
    except:
        hum = -1
    lcd.clear()
    lcd.print('Humidity: %.1f %%' % hum, 10, 20)
    if hum >= 0 and hum < HUMIDITY_THRESHOLD:
        relay.on()
        lcd.print('Relay ON (humidifier)', 10, 60)
    else:
        relay.off()
        lcd.print('Relay OFF', 10, 60)
    time.sleep(2)  # check every 2 seconds

コツ・安全上の注意

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

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

エディタで開く →

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