M5Stackでジェスチャー照明

Gesture-controlled light ・ 手势灯

手をかざすジェスチャーで照明のON/OFFを操作。Gesture Unitで認識し、SSRで照明を制御。

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

部品リスト(BOM)

部品役割ポートリンク・価格
M5Stack Core2Controllergrove_i2c, grove_analog, grove_uart, mbusofficial page — $46.9
Unit GestureGesture sensorgrove_i2cofficial page — $12.95
Unit SSRSolid-state relaygrove_analogofficial page — $6.5

配線

作り方

M5Stack Core2とジェスチャーセンサー(Unit Gesture)とSSR(Unit SSR)で作る、手をかざして照明をオン/オフする装置です。ジェスチャーセンサーが手の動きを検出し、Core2がSSRを制御して照明を切り替えます。

  1. 部品を用意する — 用意するもの:M5Stack Core2本体、Unit Gesture(ジェスチャーセンサー)、Unit SSR(ソリッドステートリレー)、Groveケーブル2本(I2C用とアナログ用)、USB-Cケーブル(Core2とパソコン接続用)、照明器具(AC100V対応、最大2A)。
  2. Groveケーブルでジェスチャーセンサーをつなぐ — Unit GestureはI2C接続です。Groveケーブル(赤色)の一端をUnit Gestureに、もう一端をCore2の赤いPort.A(I2Cポート)に差し込みます。コネクタは一方向にしか入らないので、無理に押し込まないでください。
  3. GroveケーブルでSSRをつなぐ — Unit SSRはアナログ制御です。Groveケーブル(黒色)の一端をUnit SSRに、もう一端をCore2の黒いPort.B(アナログ/IOポート)に差し込みます。
  4. 照明器具をSSRに接続する — Unit SSRの出力端子(負荷側)に照明器具の片方の線を接続します。もう片方の線はAC電源のニュートラルに接続します。SSRの入力端子(制御側)はすでにCore2と接続されています。AC電源は必ず電源を切った状態で作業してください。
  5. パソコンにつないでMicroPythonを書き込む — USB-CケーブルでCore2をパソコンにつなぎます。UIFlowやThonnyなどのツールで、Core2にMicroPythonファームウェアが入っていることを確認し、下のコードをデバイスにコピーして実行します。
  6. 動作をテストする — コードを実行すると、Core2の画面に「Ready」と表示されます。ジェスチャーセンサーの前で手を左から右に振ると照明が点灯し、もう一度振ると消灯します。うまく動作しない場合は、ジェスチャーの速度や距離を調整してみてください。

サンプルコード(micropython)

# M5Stack Core2 + Gesture Sensor (PAJ7620) + SSR
# Wiring: Gesture -> Core2 red Port.A (I2C)
#         SSR -> Core2 black Port.B (analog/GPIO)
import time
from machine import Pin, I2C
from m5stack import lcd

# I2C for gesture sensor (Port.A: sda=21, scl=22)
i2c = I2C(0, scl=Pin(22), sda=Pin(21), freq=100000)

# PAJ7620 I2C address
GESTURE_ADDR = 0x73

# Initialize gesture sensor
def init_gesture():
    i2c.writeto(GESTURE_ADDR, bytes([0x00, 0x00]))  # Bank select
    i2c.writeto(GESTURE_ADDR, bytes([0x00, 0x00]))  # Wake up
    i2c.writeto(GESTURE_ADDR, bytes([0x73, 0x20]))  # Gesture mode
    time.sleep(0.1)

init_gesture()

# SSR control pin (Port.B: pin 36)
ssr = Pin(36, Pin.OUT)
ssr.off()  # start with light off

light_on = False
lcd.print('Ready', 10, 20)

while True:
    # Read gesture register (0x43)
    i2c.writeto(GESTURE_ADDR, bytes([0x43]))
    data = i2c.readfrom(GESTURE_ADDR, 1)
    gesture = data[0]
    
    if gesture == 0x01:  # Right gesture (wave left to right)
        light_on = not light_on
        if light_on:
            ssr.on()
            lcd.print('Light ON', 10, 60)
        else:
            ssr.off()
            lcd.print('Light OFF', 10, 60)
        time.sleep(0.5)  # debounce
    
    time.sleep(0.05)

コツ・安全上の注意

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

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

エディタで開く →

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