M5StackでModule 4EncoderMotor を使う

Using the Module 4EncoderMotor ・ 使用 Module 4EncoderMotor

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

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

部品リスト(BOM)

部品役割ポートリンク・価格
M5Stack Core2Controllergrove_i2c, grove_analog, grove_uart, mbusofficial page — $46.9
Module 4EncoderMotormodulembus, grove_i2c, terminal_blockofficial page — $14.5

配線

作り方

M5Stack Core2にModule 4EncoderMotorを積み重ねて、4つのエンコーダ付きDCモーターを制御できるようにする組み立てガイドです。I2C通信でモータードライバーを操作し、各モーターの回転数や位置をエンコーダフィードバックで読み取れます。ロボットや多軸制御に最適です。

  1. 部品を用意する — 用意するもの:M5Stack Core2本体、Module 4EncoderMotor、USB-Cケーブル(Core2とパソコン接続用)。モーターや外部電源は別途必要です。
  2. Module 4EncoderMotorをCore2に積み重ねる — Core2の底面にあるM-Busコネクタに、Module 4EncoderMotorの上部のM-Busコネクタを合わせて、しっかりと押し込みます。向きに注意し、ピンが曲がらないように真っすぐ差し込んでください。
  3. 外部電源を接続する(必要な場合) — Module 4EncoderMotorはモーター駆動用に6~12Vの外部電源が必要です。端子台(terminal_block)に電源を接続します。極性を間違えないように注意してください。Core2のUSB-C給電だけではモーターは動きません。
  4. モーターを接続する — Module 4EncoderMotorの端子台に、4つのDCエンコーダモーターをそれぞれ接続します。各チャンネル(M1~M4)にモーターの2本のリード線と、エンコーダ用のA相・B相信号線を接続します。配線はモーターの仕様書を参照してください。
  5. パソコンにつないでMicroPythonを書き込む — USB-CケーブルでCore2をパソコンにつなぎます。UIFlowやThonnyなどのツールで、Core2にMicroPythonファームウェアが入っていることを確認し、下のコードをデバイスにコピーして実行します。
  6. 動作を確認する — コードを実行すると、Core2の画面に各モーターのエンコーダ値が表示されます。モーターを手で回すと値が変化することを確認してください。必要に応じてモーターを実際に回転させるコードを追加します。

サンプルコード(micropython)

# M5Stack Core2 + Module 4EncoderMotor
# Wiring: Module stacked via M-Bus (I2C address 0x24)
# This example reads encoder values from all 4 channels

import time
from machine import Pin, I2C
from m5stack import lcd

# I2C initialization (Core2 Port.A is default I2C)
i2c = I2C(0, scl=Pin(22), sda=Pin(21), freq=100000)

# Module 4EncoderMotor I2C address
MOTOR_ADDR = 0x24

# Register addresses (example, refer to datasheet)
ENC_REG_BASE = 0x10  # 4 consecutive 32-bit registers for encoders

def read_encoder(channel):
    """Read encoder value for channel 0-3"""
    reg = ENC_REG_BASE + channel * 4
    data = i2c.readfrom_mem(MOTOR_ADDR, reg, 4)
    value = int.from_bytes(data, 'little', signed=True)
    return value

lcd.clear()
lcd.print('4EncoderMotor Test', 10, 10)

while True:
    encoders = [read_encoder(i) for i in range(4)]
    lcd.clear()
    lcd.print('Encoders:', 10, 30)
    for i, val in enumerate(encoders):
        lcd.print('M%d: %d' % (i+1, val), 10, 50 + i*20)
    time.sleep(0.5)

コツ・安全上の注意

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

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

エディタで開く →

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