Gesture control ・ 手势控制
PAJ7620U2ジェスチャーセンサーで手の動きを認識して操作。
この構成をエディタで開く・編集する →| 部品 | 役割 | ポート | リンク・価格 |
|---|---|---|---|
| M5Stack Core2 | Controller | grove_i2c, grove_analog, grove_uart, mbus | official page — $46.9 |
| Unit Gesture | Gesture sensor | grove_i2c | official page — $12.95 |
M5Stack Core2とGesture Unit(PAJ7620U2)で作る、ジェスチャーで機器を操作する装置です。手の動き(上下左右・回転など)をセンサーが認識し、Core2がその情報を元に機器を制御します。
# M5Stack Core2 + Gesture Unit (PAJ7620U2)
# Wiring: Gesture Unit -> Core2 red Port.A (I2C)
import time
from machine import Pin, I2C
from m5stack import lcd
# I2C setup for Port.A (Core2: sda=21, scl=22)
i2c = I2C(0, scl=Pin(22), sda=Pin(21), freq=100000)
# PAJ7620U2 I2C address
GESTURE_ADDR = 0x73
# Register addresses
BANK_SEL = 0xEF
SUSPEND = 0x03
GESTURE_STATE = 0x42
GESTURE_RESULT = 0x43
# Gesture codes (from datasheet)
GESTURES = {
0x01: "Right",
0x02: "Left",
0x03: "Up",
0x04: "Down",
0x05: "Forward",
0x06: "Backward",
0x07: "Clockwise",
0x08: "Counterclockwise",
0x09: "Wave"
}
def write_reg(reg, val):
i2c.writeto_mem(GESTURE_ADDR, reg, bytes([val]))
def read_reg(reg):
return i2c.readfrom_mem(GESTURE_ADDR, reg, 1)[0]
def init_gesture():
# Wake up sensor
write_reg(BANK_SEL, 0x00)
write_reg(SUSPEND, 0x00)
time.sleep_ms(100)
# Select bank 0
write_reg(BANK_SEL, 0x00)
# Enable gesture mode
write_reg(0x00, 0x00) # Gesture mode
time.sleep_ms(100)
def get_gesture():
if read_reg(GESTURE_STATE) == 1:
return read_reg(GESTURE_RESULT)
return 0
# Initialize
lcd.clear()
lcd.print("Gesture Demo", 10, 20)
init_gesture()
while True:
gesture = get_gesture()
if gesture in GESTURES:
name = GESTURES[gesture]
lcd.clear()
lcd.print("Gesture: " + name, 10, 20)
print("Gesture:", name)
time.sleep(0.1)
この作り方はAIが構成から生成したものです(未検証)。通電前に配線とコードをご確認ください。
この構成はAIが実在するM5Stack部品から設計し、ポート互換をサーバで検証したものです。編集・共有できます。
エディタで開く →UnitKit は M5Stack® 製品向けの非公式ツール。作りたいものを書くと、部品リストと配線図が出ます。