M5StackでUnit ToF4M を使う

Using the Unit ToF4M ・ 使用 Unit ToF4M

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

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

部品リスト(BOM)

部品役割ポートリンク・価格
ATOM LiteControllergrove_i2c, i2c, gpioofficial page — $7.5
Unit ToF4Munitgrove_i2cofficial page — $8.95

配線

作り方

M5Stack ATOM LiteとUnit ToF4M(4m測距センサー)で作る、かんたんな距離測定装置です。ToF4Mがレーザーで最大4m先までの距離を測り、ATOM Liteがその値を読み取って表示します。I2C接続なので配線はたった1本。

  1. 部品を用意する — 用意するもの:M5Stack ATOM Lite本体、Unit ToF4M(VL53L1CXV0FY/1搭載)、Groveケーブル(4ピン、ユニットに付属)、ATOM LiteとパソコンをつなぐUSB Type-Cケーブル。
  2. Groveケーブルでつなぐ — Unit ToF4MはI2C通信(赤いPort.A)を使います。Groveケーブルの一端をToF4Mのポートに、もう一端をATOM LiteのGroveポート(赤色)に差し込みます。コネクタは一方向にしか入らないので、無理に押し込まないでください。
  3. パソコンにつないでMicroPythonを書き込む — USB Type-CケーブルでATOM Liteをパソコンにつなぎます。UIFlowやThonnyなどのツールで、ATOM LiteにMicroPythonファームウェアが入っていることを確認し、下のコードをデバイスにコピーして実行します。
  4. 距離を測ってみる — コードを実行すると、ATOM Liteの内蔵LED(RGB)が距離に応じて色を変え、シリアルモニタに距離(mm)が表示されます。手や物体をセンサーの前で動かして、値が変わるのを確認してください。

サンプルコード(micropython)

# M5Stack ATOM Lite + Unit ToF4M (VL53L1X distance sensor)
# Wiring: Unit ToF4M -> ATOM Lite Grove Port (I2C)
import time
from machine import Pin, I2C
from neopixel import NeoPixel

# I2C setup for ATOM Lite (Grove port: SDA=26, SCL=32)
i2c = I2C(0, scl=Pin(32), sda=Pin(26), freq=400000)

# VL53L1X default I2C address is 0x29
TOF_ADDR = 0x29

# Initialize sensor (simplified - assumes sensor is ready)
# For full init, use a library like vl53l1x.py
# Here we just read the distance register (0x00-0x01)

def read_distance():
    # Read 2 bytes from register 0x00 (distance in mm)
    data = i2c.readfrom_mem(TOF_ADDR, 0x00, 2)
    dist = (data[0] << 8) | data[1]
    return dist

# Setup RGB LED (on ATOM Lite, GPIO 27)
neo = NeoPixel(Pin(27), 1)

while True:
    try:
        dist = read_distance()
        print("Distance: %d mm" % dist)
        # Change LED color based on distance
        if dist < 200:
            neo[0] = (255, 0, 0)  # red for close
        elif dist < 1000:
            neo[0] = (0, 255, 0)  # green for medium
        else:
            neo[0] = (0, 0, 255)  # blue for far
        neo.write()
    except Exception as e:
        print("Error:", e)
        neo[0] = (0, 0, 0)
        neo.write()
    time.sleep(0.5)

コツ・安全上の注意

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

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

エディタで開く →

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