Wind speed meter ・ 风速计
超音波距離センサで風速を測定し、Core2に記録します。
この構成をエディタで開く・編集する →| 部品 | 役割 | ポート | リンク・価格 |
|---|---|---|---|
| M5Stack Core2 | Controller with display | grove_i2c, grove_analog, grove_uart, mbus | official page — $46.9 |
| Unit Ultrasonic-IO (UNIT SONIC IO) | Ultrasonic distance sensor | grove_analog | official page — $5.95 |
M5Stack Core2と超音波距離センサーUnit Ultrasonic-IOで風速を測定し、記録する装置です。センサーが物体までの距離を測り、その変化から風速を計算します。Core2の画面に風速を表示し、データを保存できます。
# M5Stack Core2 + Unit Ultrasonic-IO (wind speed measurement)
# Wiring: Unit Ultrasonic-IO -> Core2 black Port.B (analog/GPIO)
import time
from machine import Pin, ADC
from m5stack import lcd
# Port.B pins: analog input pin 36, trigger pin 26 (not used for analog mode)
# The ultrasonic unit outputs analog voltage proportional to distance
sensor = ADC(Pin(36))
sensor.atten(ADC.ATTN_11DB) # 0-3.3V range
# Constants for wind speed calculation (calibrate as needed)
# Distance measurement: voltage to cm (example: 0.1V = 10cm, adjust per sensor)
VOLTS_PER_CM = 0.01 # 1cm = 0.01V (typical)
SAMPLE_INTERVAL = 0.1 # seconds between samples
WINDOW_SIZE = 10 # number of samples for averaging
# Initialize variables
prev_distance = None
samples = []
while True:
raw = sensor.read() # 0-4095
voltage = raw / 4095 * 3.3
distance = voltage / VOLTS_PER_CM # in cm
# Calculate wind speed from distance change
if prev_distance is not None:
delta = distance - prev_distance
speed = abs(delta) / SAMPLE_INTERVAL # cm/s
samples.append(speed)
if len(samples) > WINDOW_SIZE:
samples.pop(0)
avg_speed = sum(samples) / len(samples)
# Display
lcd.clear()
lcd.print('Distance: %.1f cm' % distance, 10, 20)
lcd.print('Wind speed: %.1f cm/s' % avg_speed, 10, 60)
print('Distance: %.1f cm, Wind speed: %.1f cm/s' % (distance, avg_speed))
prev_distance = distance
time.sleep(SAMPLE_INTERVAL)
この作り方はAIが構成から生成したものです(未検証)。通電前に配線とコードをご確認ください。
この構成はAIが実在するM5Stack部品から設計し、ポート互換をサーバで検証したものです。編集・共有できます。
エディタで開く →UnitKit は M5Stack® 製品向けの非公式ツール。作りたいものを書くと、部品リストと配線図が出ます。