M5StackでUnit AudioPlayer を使う

Using the Unit AudioPlayer ・ 使用 Unit AudioPlayer

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

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

部品リスト(BOM)

部品役割ポートリンク・価格
AtomS3Controllergrove_i2c, i2c, spi, gpio, usb_cofficial page — $15.5
Unit AudioPlayerunitgrove_uart, sdcard, audio_jackofficial page — $3.95

配線

作り方

AtomS3とUnit AudioPlayerで作る、かんたんな音楽再生装置です。microSDカードに入れたMP3/WAVファイルを、UART経由で制御して再生します。AtomS3の画面をタッチして再生・停止・次の曲などの操作ができます。

  1. 部品を用意する — 用意するもの:AtomS3本体、Unit AudioPlayer、Groveケーブル(青いコネクタのもの)、microSDカード(FAT32フォーマット済み)、AtomS3とパソコンをつなぐUSB-Cケーブル。
  2. microSDカードに音楽ファイルを入れる — microSDカードをパソコンに挿入し、MP3またはWAV形式の音楽ファイルをコピーします。ファイル名は半角英数字で、短い名前(例:song1.mp3)にしてください。カードをUnit AudioPlayerのスロットに差し込みます。
  3. Groveケーブルでつなぐ — Unit AudioPlayerはUART(青)接続です。Groveケーブルの一端をユニットに、もう一端をAtomS3の青いPort.C(UARTポート)に差し込みます。コネクタは一方向にしか入らないので、無理に押し込まないでください。
  4. パソコンにつないでMicroPythonを書き込む — USB-CケーブルでAtomS3をパソコンにつなぎます。UIFlowやThonnyなどのツールで、AtomS3にMicroPythonファームウェアが入っていることを確認し、下のコードをデバイスにコピーして実行します。
  5. 音楽を再生する — コードを実行すると、AtomS3の画面に「Play: song1.mp3」などと表示され、音楽が再生されます。画面をタッチすると次の曲に進みます。再生中は自動的に次の曲へ移ります。

サンプルコード(micropython)

# M5Stack AtomS3 + Unit AudioPlayer (UART control)
# Wiring: Unit AudioPlayer -> AtomS3 blue Port.C (UART)
import time
import os
from machine import UART, Pin
from m5stack import lcd, btn

# UART on Port.C: TX=1, RX=2 (AtomS3)
uart = UART(1, baudrate=115200, tx=1, rx=2)

# List MP3/WAV files on SD card (assumes files in root)
files = [f for f in os.listdir('/sd') if f.endswith('.mp3') or f.endswith('.wav')]
files.sort()
if not files:
    lcd.print('No audio files found!', 10, 20)
    raise SystemExit

current = 0

def play_file(index):
    global current
    if index >= len(files):
        index = 0
    elif index < 0:
        index = len(files) - 1
    current = index
    fname = files[current]
    lcd.clear()
    lcd.print('Play: ' + fname, 10, 20)
    # Send play command: CMD_PLAY_WITH_NAME (0x07) + filename + newline
    cmd = bytes([0x7E, 0x07, 0x00, 0x00]) + fname.encode() + b'\r\n'
    uart.write(cmd)
    time.sleep(0.1)

# Start playing first file
play_file(0)

# Button (screen tap) to next track
while True:
    if btn.wasPressed():
        play_file(current + 1)
    time.sleep(0.1)

コツ・安全上の注意

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

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

エディタで開く →

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