M5StackでUnit ExtEncoder を使う

Using the Unit ExtEncoder ・ 使用 Unit ExtEncoder

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

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

部品リスト(BOM)

部品役割ポートリンク・価格
ATOM LiteControllergrove_i2c, i2c, gpioofficial page — $7.5
Unit ExtEncoderunitgrove_i2c, other:external encoder AB/ABZ signal inputofficial page — $5.95

配線

作り方

ATOM LiteとUnit ExtEncoderをGrove I2Cケーブルで接続し、外部ロータリーエンコーダーの信号を読み取るための最小構成のビルドです。Unit ExtEncoderはSTM32F030を内蔵し、エンコーダーのAB/ABZ信号を処理してI2C経由でATOM Liteに送ります。

  1. 部品を用意する — 必要なもの:ATOM Lite本体、Unit ExtEncoder、Grove I2Cケーブル(4線、赤・黒・黄・白)、ATOM LiteとパソコンをつなぐUSB Type-Cケーブル。
  2. Grove I2Cケーブルを接続する — Grove I2Cケーブルの一端をUnit ExtEncoderのGroveポートに差し込みます。コネクタは一方向にしか入らないので、向きを確認して軽く押し込んでください。
  3. ATOM Liteに接続する — ケーブルのもう一端をATOM LiteのGroveポート(Port A、I2C用)に差し込みます。ATOM LiteのGroveポートは本体側面にあります。赤い線が5V、黒がGND、黄がSCL、白がSDAです。
  4. パソコンに接続してMicroPythonを書き込む — USB Type-CケーブルでATOM Liteをパソコンに接続します。UIFlowまたはThonnyなどのツールで、ATOM LiteにMicroPythonファームウェアが入っていることを確認し、以下のコードをデバイスにコピーして実行します。
  5. エンコーダーを接続して動作確認する — Unit ExtEncoderの外部エンコーダー入力端子にロータリーエンコーダーを接続します(AB相またはABZ相)。コードを実行し、エンコーダーを回したときにシリアルモニタにカウント値が表示されることを確認します。

サンプルコード(micropython)

# M5Stack ATOM Lite + Unit ExtEncoder (I2C)
# Wiring: Unit ExtEncoder -> ATOM Lite Grove Port (I2C)
import time
from machine import Pin, I2C

# ATOM Lite I2C pins: SCL=G22, SDA=G21
i2c = I2C(0, scl=Pin(22), sda=Pin(21), freq=400000)

# Unit ExtEncoder I2C address (default 0x40)
ENCODER_ADDR = 0x40

# Register addresses (from datasheet)
REG_CNT = 0x00  # 32-bit counter (4 bytes)
REG_ONE_PULSE = 0x04  # 1 pulse width (us)

# Initialize encoder: set 1 pulse width to 1000 us (optional)
i2c.writeto_mem(ENCODER_ADDR, REG_ONE_PULSE, b'\xe8\x03')  # 1000 = 0x03E8

def read_counter():
    data = i2c.readfrom_mem(ENCODER_ADDR, REG_CNT, 4)
    value = int.from_bytes(data, 'little')
    # Convert to signed 32-bit
    if value >= 0x80000000:
        value -= 0x100000000
    return value

print("Unit ExtEncoder test. Rotate the encoder.")
while True:
    count = read_counter()
    print("Count:", count)
    time.sleep(0.1)

コツ・安全上の注意

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

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

エディタで開く →

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