M5StackでRGBムードライト

RGB mood light ・ RGB氛围灯

Core2でRGB LEDユニットを制御し、色が変わるムードライトを作ります。

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

部品リスト(BOM)

部品役割ポートリンク・価格
M5Stack Core2Controllergrove_i2c, grove_analog, grove_uart, mbusofficial page — $46.9
Unit RGB (SK6812)RGB LED unitgrove_i2cofficial page — $3.95

配線

作り方

M5Stack Core2とUnit RGB(SK6812)で作る、色がゆっくり変化するムードライトです。Core2がI2C経由でRGB LEDを制御し、虹色のグラデーションを表示します。

  1. 部品を用意する — 用意するもの:M5Stack Core2本体、Unit RGB(SK6812)、Groveケーブル(赤色、I2C用)、Core2とパソコンをつなぐUSB-Cケーブル。
  2. Groveケーブルでつなぐ — Unit RGBはI2C接続(赤色ポート)です。Groveケーブルの一端をUnit RGBに、もう一端をCore2の赤いPort.A(I2Cポート)に差し込みます。コネクタは一方向にしか入らないので、無理に押し込まないでください。
  3. パソコンにつないでMicroPythonを書き込む — USB-CケーブルでCore2をパソコンにつなぎます。UIFlowやThonnyなどのツールで、Core2にMicroPythonファームウェアが入っていることを確認し、下のコードをデバイスにコピーして実行します。
  4. 色が変わるのを確認する — コードを実行すると、3つのLEDが虹色にゆっくり変化します。Core2の画面に現在の色相(Hue)の値が表示されます。

サンプルコード(micropython)

# M5Stack Core2 + Unit RGB (SK6812) - Color-changing mood light
# Wiring: Unit RGB -> 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=400000)

# Unit RGB I2C address is 0x38 (7-bit)
RGB_ADDR = 0x38

def set_rgb(r, g, b):
    """Set all three LEDs to same color (r,g,b: 0-255)"""
    # Command: 0x00 for auto increment, then 9 bytes (3 LEDs * 3 colors)
    buf = bytearray([0x00, r, g, b, r, g, b, r, g, b])
    i2c.writeto(RGB_ADDR, buf)

def hsv_to_rgb(h, s, v):
    """Convert HSV to RGB, h: 0-360, s,v: 0-255"""
    if s == 0:
        return (v, v, v)
    h = h / 60.0
    i = int(h)
    f = h - i
    p = v * (255 - s) // 255
    q = v * (255 - s * f) // 255
    t = v * (255 - s * (1 - f)) // 255
    if i == 0:
        return (v, t, p)
    elif i == 1:
        return (q, v, p)
    elif i == 2:
        return (p, v, t)
    elif i == 3:
        return (p, q, v)
    elif i == 4:
        return (t, p, v)
    else:
        return (v, p, q)

hue = 0
while True:
    r, g, b = hsv_to_rgb(hue, 255, 255)
    set_rgb(r, g, b)
    lcd.clear()
    lcd.print('Hue: %d' % hue, 10, 20)
    hue = (hue + 1) % 360
    time.sleep_ms(50)

コツ・安全上の注意

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

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

エディタで開く →

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