M5StackでUnit RollerCAN を使う

Using the Unit RollerCAN ・ 使用 Unit RollerCAN

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

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

部品リスト(BOM)

部品役割ポートリンク・価格
M5Stack Core2Controllergrove_i2c, grove_analog, grove_uart, mbusofficial page — $46.9
Unit RollerCANunitgrove_i2c, can, other:SWD/SWO debugofficial page — $43.9

配線

作り方

M5Stack Core2とUnit RollerCANで作る、ブラシレスDCモーターの制御キットです。I2C通信でCore2からRollerCANのモーターを回したり、位置や速度を制御できます。FOC(磁界ベクトル制御)と磁気エンコーダーにより、滑らかで正確なモーション制御が可能です。

  1. 部品を用意する — 用意するもの:M5Stack Core2本体、Unit RollerCAN、Groveケーブル(I2C用、赤色コネクタ)、Core2とパソコンをつなぐUSB-Cケーブル。
  2. Groveケーブルでつなぐ — Unit RollerCANはI2C接続です。Groveケーブルの一端をRollerCANのGroveポート(赤色)に、もう一端をCore2の赤いPort.A(I2Cポート)に差し込みます。コネクタは一方向にしか入らないので、無理に押し込まないでください。
  3. 電源を確認する — Unit RollerCANはGroveポートから5V電源を供給します。Core2をUSB-Cでパソコンまたは5V電源に接続すると、Core2のバッテリーまたはUSB経由でRollerCANに給電されます。モーターを動かすには、RollerCANに別途CAN/XT30端子から6-16Vの外部電源が必要な場合があります。詳しくはUnit RollerCANのマニュアルを確認してください。
  4. パソコンにつないでMicroPythonを書き込む — USB-CケーブルでCore2をパソコンにつなぎます。UIFlowやThonnyなどのツールで、Core2にMicroPythonファームウェアが入っていることを確認し、下のコードをデバイスにコピーして実行します。
  5. モーターをテストする — コードを実行すると、Core2の画面にRollerCANのステータスが表示され、モーターがゆっくり回転します。モーターが回転することを確認し、必要に応じてコード内の速度や方向を変更してください。

サンプルコード(micropython)

# M5Stack Core2 + Unit RollerCAN (I2C motor control)
# Wiring: Unit RollerCAN -> Core2 red Port.A (I2C)
import time
from machine import Pin, I2C
from m5stack import lcd

# I2C setup on Port.A (Core2: scl=22, sda=21)
i2c = I2C(0, scl=Pin(22), sda=Pin(21), freq=400000)

# RollerCAN I2C address (default 0x30)
ROLLERCAN_ADDR = 0x30

# Simple register write function
def write_reg(reg, data):
    i2c.writeto_mem(ROLLERCAN_ADDR, reg, bytes([data]))

# Initialize RollerCAN (example: set mode to speed control)
write_reg(0x00, 0x01)  # Mode register: 1 = speed control

# Set target speed (example: 100 RPM, low byte first)
speed_rpm = 100
write_reg(0x01, speed_rpm & 0xFF)        # Low byte
write_reg(0x02, (speed_rpm >> 8) & 0xFF) # High byte

# Enable motor
write_reg(0x03, 0x01)  # Enable register: 1 = enable

lcd.clear()
lcd.print('RollerCAN running', 10, 20)
lcd.print('Speed: %d RPM' % speed_rpm, 10, 50)

# Keep running
while True:
    time.sleep(1)

コツ・安全上の注意

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

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

エディタで開く →

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