M5Stackで順番カウンター

Queue number counter ・ 排队计数

2つのDigiClockユニットをI2Cハブで制御して番号を表示する順番待ちカウンター。

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

部品リスト(BOM)

部品役割ポートリンク・価格
M5Stack Core2Controllergrove_i2c, grove_analog, grove_uart, mbusofficial page — $46.9
Unit PaHub2I2C hub (1→6)grove_i2cofficial page — $7.95
Unit DigiClockDigit display 1grove_i2cofficial page — $5.95
Unit DigiClockDigit display 2grove_i2cofficial page — $5.95

配線

作り方

M5Stack Core2と2台のDigiClockユニットを使った、整理番号表示装置です。PaHub2 I2Cハブを介してCore2が2台のDigiClockを制御し、番号を表示します。

  1. 部品を用意する — 用意するもの:M5Stack Core2本体、Unit PaHub2(I2Cハブ)、Unit DigiClock 2台、Groveケーブル3本(各ユニットに付属)、Core2とパソコンをつなぐUSB-Cケーブル。
  2. PaHub2をCore2に接続する — Groveケーブル1本で、PaHub2の入力ポート(INと書かれた側)とCore2のPort.A(赤色)を接続します。コネクタは一方向にしか入らないので、無理に押し込まないでください。
  3. DigiClockをPaHub2に接続する — 残り2本のGroveケーブルで、2台のDigiClockをPaHub2の出力ポート(OUT 0~5のいずれか)にそれぞれ接続します。どのポートでも動作しますが、後でコードでチャンネル番号を指定するため、接続したポート番号をメモしておいてください(例:OUT 0とOUT 1)。
  4. パソコンにつないでMicroPythonを書き込む — USB-CケーブルでCore2をパソコンにつなぎます。UIFlowやThonnyなどのツールで、Core2にMicroPythonファームウェアが入っていることを確認し、下のコードをデバイスにコピーして実行します。
  5. 番号表示をテストする — コードを実行すると、2台のDigiClockに番号が表示されます。表示が正しいことを確認し、必要に応じてコード内の表示内容を変更してください。

サンプルコード(micropython)

# M5Stack Core2 + PaHub2 + 2x DigiClock (queue number display)
# Wiring: Core2 Port.A -> PaHub2 IN, PaHub2 OUT0 -> DigiClock1, OUT1 -> DigiClock2
import time
from machine import Pin, I2C
from m5stack import lcd

# I2C setup on Core2 Port.A (default pins: sda=21, scl=22)
i2c = I2C(0, scl=Pin(22), sda=Pin(21), freq=100000)

# TCA9548A I2C address (default 0x70)
TCA_ADDR = 0x70

def select_channel(channel):
    """Select TCA9548A channel (0-5)."""
    i2c.writeto(TCA_ADDR, bytes([1 << channel]))

# DigiClock I2C address (default 0x30)
DIGICLOCK_ADDR = 0x30

def digiclock_write(display_num, segments):
    """Send 4-digit segments to a DigiClock.
    segments: list of 4 bytes, each byte controls 7-segment (a,b,c,d,e,f,g,dp).
    """
    select_channel(display_num)  # 0 for first, 1 for second
    # DigiClock expects: [digit0, digit1, digit2, digit3]
    i2c.writeto(DIGICLOCK_ADDR, bytes(segments))

# Segment patterns for digits 0-9 (a=bit0, b=bit1, ... g=bit6, dp=bit7)
seg_digits = [
    0x3F,  # 0
    0x06,  # 1
    0x5B,  # 2
    0x4F,  # 3
    0x66,  # 4
    0x6D,  # 5
    0x7D,  # 6
    0x07,  # 7
    0x7F,  # 8
    0x6F,  # 9
]

def show_number(display_num, number):
    """Display a 4-digit number (0-9999) on a DigiClock."""
    digits = [0, 0, 0, 0]
    for i in range(3, -1, -1):
        digits[i] = number % 10
        number //= 10
    segments = [seg_digits[d] for d in digits]
    digiclock_write(display_num, segments)

# Main loop: show queue numbers
queue1 = 1
queue2 = 100
while True:
    show_number(0, queue1)
    show_number(1, queue2)
    lcd.clear()
    lcd.print('Queue1: %d' % queue1, 10, 20)
    lcd.print('Queue2: %d' % queue2, 10, 60)
    time.sleep(1)
    queue1 += 1
    queue2 += 1
    if queue1 > 9999:
        queue1 = 0
    if queue2 > 9999:
        queue2 = 0

コツ・安全上の注意

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

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

エディタで開く →

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