M5StackでUnit Roller485 を使う

Using the Unit Roller485 ・ 使用 Unit Roller485

M5StackのUnit Roller485をコントローラーに接続する最小構成。配線とBOMつき。

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

部品リスト(BOM)

部品役割ポートリンク・価格
AtomS3 LiteControllergrove_i2c, gpio, usb_cofficial page — $7.5
Unit Roller485unitrs485, grove_i2cofficial page — $36.95

配線

作り方

AtomS3 LiteとUnit Roller485をGrove I2Cケーブルで接続し、モーターを制御する最小構成のビルドです。Unit Roller485はブラシレスDCモーターを内蔵し、位置・速度・電流を閉ループ制御できます。AtomS3 LiteからI2C経由で指令を送り、モーターを回転させます。

  1. 部品を用意する — 用意するもの:AtomS3 Lite本体、Unit Roller485、Groveケーブル(4ピン、I2C用)、AtomS3 LiteとパソコンをつなぐUSB-Cケーブル。
  2. GroveケーブルでAtomS3 LiteとUnit Roller485をつなぐ — Groveケーブルの一端をAtomS3 Liteの赤いPort.A(I2Cポート)に差し込みます。もう一端をUnit Roller485のGroveポートに差し込みます。コネクタは一方向にしか入らないので、向きを確認して軽く押し込んでください。
  3. 電源を接続する — USB-CケーブルでAtomS3 LiteをパソコンまたはUSB電源に接続します。AtomS3 LiteのLEDが点灯し、Unit Roller485にもGroveケーブル経由で5Vが供給されます。
  4. パソコンに接続してMicroPythonを書き込む — AtomS3 Liteがパソコンに認識されたら、UIFlowまたはThonnyなどのツールでMicroPythonファームウェアが入っていることを確認します。下のコードをコピーしてデバイスに保存し、実行します。
  5. モーターが回転するかテストする — コードを実行すると、モーターが低速で正転し、2秒後に停止します。モーターが回転することを確認してください。回転しない場合は、配線と電源を再確認してください。

サンプルコード(micropython)

# AtomS3 Lite + Unit Roller485 (I2C control)
# Wiring: AtomS3 Lite Port.A (red) -> Unit Roller485 Grove port
import time
from machine import Pin, I2C

# AtomS3 Lite I2C pins: SDA=GPIO1, SCL=GPIO2 (Port.A)
i2c = I2C(0, scl=Pin(2), sda=Pin(1), freq=100000)

# Unit Roller485 I2C address (default 0x30)
ROLLER_ADDR = 0x30

# Register addresses (from datasheet)
REG_MODE = 0x00
REG_SPEED = 0x01
REG_CMD = 0x02

# Commands
CMD_STOP = 0x00
CMD_FORWARD = 0x01
CMD_BACKWARD = 0x02

def set_speed(speed):
    # speed: 0-1000 (0=stop, 1000=max)
    buf = speed.to_bytes(2, 'big')
    i2c.writeto_mem(ROLLER_ADDR, REG_SPEED, buf)

def set_command(cmd):
    i2c.writeto_mem(ROLLER_ADDR, REG_CMD, bytes([cmd]))

def set_mode(mode):
    i2c.writeto_mem(ROLLER_ADDR, REG_MODE, bytes([mode]))

# Initialize: set mode to speed control (0x01)
set_mode(0x01)
time.sleep(0.1)

# Forward at 30% speed
set_speed(300)
set_command(CMD_FORWARD)
print("Motor forward at speed 300")
time.sleep(2)

# Stop
set_command(CMD_STOP)
print("Motor stopped")

コツ・安全上の注意

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

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

エディタで開く →

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