ToF precise distance sensor ・ ToF测距
Core2 コントローラーと ToF センサー (VL53L0X) を使ったシンプルな距離測定器。
この構成をエディタで開く・編集する →| 部品 | 役割 | ポート | リンク・価格 |
|---|---|---|---|
| M5Stack Core2 | Controller | grove_i2c, grove_analog, grove_uart, mbus | official page — $46.9 |
| Unit ToF | ToF distance sensor | grove_i2c | official page — $8.5 |
M5Stack Core2とToFユニット(VL53L0X)を使った、高精度な距離測定装置です。レーザーで対象物までの距離を測り、Core2の画面に表示します。I2C接続で簡単に配線でき、測定範囲は約30mm~1000mmです。
# M5Stack Core2 + ToF Unit (VL53L0X) distance measurement
# Wiring: ToF Unit -> Core2 red Port.A (I2C)
import time
from machine import Pin, I2C
from m5stack import lcd
from m5stack_ui import M5Screen
# Initialize I2C on Port.A (pins 21=SDA, 22=SCL)
i2c = I2C(0, scl=Pin(22), sda=Pin(21), freq=400000)
# VL53L0X I2C address is 0x29
# Use the vl53l0x library (install via UIFlow or copy to device)
# For simplicity, we use a minimal driver here
class VL53L0X:
def __init__(self, i2c, addr=0x29):
self.i2c = i2c
self.addr = addr
# Initialize sensor (simplified)
self.i2c.writeto_mem(self.addr, 0x80, b'\x01')
self.i2c.writeto_mem(self.addr, 0xFF, b'\x01')
self.i2c.writeto_mem(self.addr, 0x00, b'\x00')
self.i2c.writeto_mem(self.addr, 0x91, b'\x3c')
self.i2c.writeto_mem(self.addr, 0x00, b'\x01')
self.i2c.writeto_mem(self.addr, 0xFF, b'\x00')
self.i2c.writeto_mem(self.addr, 0x80, b'\x00')
def read_distance(self):
# Start measurement
self.i2c.writeto_mem(self.addr, 0x00, b'\x01')
time.sleep_ms(100)
# Read 2 bytes from register 0x1E
data = self.i2c.readfrom_mem(self.addr, 0x1E, 2)
distance = (data[0] << 8) | data[1]
return distance
tof = VL53L0X(i2c)
lcd.clear()
lcd.font(lcd.FONT_DejaVu24)
while True:
dist = tof.read_distance()
lcd.clear()
lcd.print('Distance: %d mm' % dist, 10, 20)
time.sleep(0.5)
この作り方はAIが構成から生成したものです(未検証)。通電前に配線とコードをご確認ください。
この構成はAIが実在するM5Stack部品から設計し、ポート互換をサーバで検証したものです。編集・共有できます。
エディタで開く →UnitKit は M5Stack® 製品向けの非公式ツール。作りたいものを書くと、部品リストと配線図が出ます。