M5Stackで水分補給リマインダー

Hydration reminder ・ 喝水提醒

定期的にブザーを鳴らし、ボタンを押すと止まるリマインダー。

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

部品リスト(BOM)

部品役割ポートリンク・価格
M5Stack Core2Controllergrove_i2c, grove_analog, grove_uart, mbusofficial page — $46.9
Unit BuzzerBuzzergrove_analogofficial page — $4.5
Unit ButtonButtongrove_analogofficial page — $2.25

配線

作り方

M5Stack Core2とブザー・ボタンユニットで作る、かんたんな水分補給リマインダーです。定期的にブザーが鳴り、ボタンを押すと止まります。デスクで作業中に水分補給を促してくれます。

  1. 部品を用意する — 用意するもの:M5Stack Core2本体、Unit Buzzer(ブザーユニット)、Unit Button(ボタンユニット)、Groveケーブル2本(各ユニットに付属)、Core2とパソコンをつなぐUSB-Cケーブル。
  2. ブザーユニットをつなぐ — ブザーユニットはアナログ(黒)接続です。Groveケーブルの一端をブザーユニットに、もう一端をCore2の黒いPort.B(アナログ/IOポート)に差し込みます。コネクタは一方向にしか入らないので、無理に押し込まないでください。
  3. ボタンユニットをつなぐ — ボタンユニットもアナログ(黒)接続です。もう1本のGroveケーブルの一端をボタンユニットに、もう一端をCore2のもう一つの黒いPort.B(アナログ/IOポート)に差し込みます。Core2のPort.Bは2つありますが、どちらでも構いません。
  4. パソコンにつないでMicroPythonを書き込む — USB-CケーブルでCore2をパソコンにつなぎます。UIFlowやThonnyなどのツールで、Core2にMicroPythonファームウェアが入っていることを確認し、下のコードをデバイスにコピーして実行します。
  5. 動作をテストする — コードを実行すると、Core2の画面に「Hydration Reminder」と表示され、10秒ごとにブザーが短く鳴ります。ボタンを押すとブザーが止まり、カウントがリセットされます。ボタンを押さないとブザーが鳴り続けるので、水分補給を促します。

サンプルコード(micropython)

# M5Stack Core2 + Buzzer Unit + Button Unit (Hydration Reminder)
# Wiring: Buzzer Unit -> Core2 black Port.B (GPIO 26)
#         Button Unit -> Core2 black Port.B (GPIO 36)
import time
from machine import Pin, PWM
from m5stack import lcd

# Pin assignments
buzzer_pin = PWM(Pin(26), freq=4000, duty=512)  # 4kHz, 50% duty
button_pin = Pin(36, Pin.IN, Pin.PULL_UP)       # button active low

# Reminder interval in seconds
INTERVAL = 10
last_reminder = time.time()
buzzer_on = False

lcd.clear()
lcd.print('Hydration Reminder', 10, 20)

while True:
    # Check button state
    if button_pin.value() == 0:  # button pressed (active low)
        buzzer_pin.duty(0)       # turn off buzzer
        buzzer_on = False
        last_reminder = time.time()  # reset timer
        time.sleep(0.2)  # debounce

    # Check if it's time to beep
    if time.time() - last_reminder >= INTERVAL and not buzzer_on:
        buzzer_pin.duty(512)  # turn on buzzer
        buzzer_on = True
        lcd.print('Drink water!', 10, 60)

    time.sleep(0.1)

コツ・安全上の注意

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

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

エディタで開く →

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