M5Stack Core2 v1.1 用スケッチ(M5core2-mp3-player.ino)。
microSD 直下に置いた 0001_xxx.mp3 などを、1 つの入力(タッチ A/B/C または任意 GPIO)を押すたびに順番に再生します。再生中はトリガ単押しで次曲スキップ、ダブルタップ(既定 400ms 以内)で停止。
ログはシリアル(115200bps)と画面に表示し、画面下部のスライダーで M5.Speaker の音量を変更できます。
- Arduino IDE 2.x(ボード設定:
M5Stack-Core2、esp32 3.x / IDF v5 対応可) - ライブラリ:
M5Unified,ESP8266Audio(AudioFileSourceSD / AudioGeneratorMP3 / AudioOutputI2S)
- microSD のルート直下のみを走査(サブディレクトリ非対応)。
- 先頭 4 桁が数字、5 文字目が非数字の
0001_xxxx.mp3形式をプレイリストに採用。番号は 1〜9999、拡張子は大小文字を問わない.mp3のみ。- DFPlayer mini用のSDカードをそのまま転用可能
- 起動時に番号順でソートし、最後まで再生すると先頭に戻ります。規則外のファイルはスキップされます。
- 起動時に読み込まれたファイルが表示されます
config.hのTRIGGER_CONFIGで入力を選択- 既定: M5社公式Unit「Unit Button」(=GPIO 33) を INPUT_PULLUP で LOW アクティブ。
TriggerType::Touch+TouchButtonId::A/B/Cにすればタッチボタンでも動作。- Idle 時: トリガ 1 回で現在のインデックスの曲を再生開始(初回は最小番号から)。再生終了後は自動で Idle に戻ります。
- 再生中: トリガ単押しで次の曲にスキップし再生継続。ダブルタップ判定 (
DOUBLE_TAP_WINDOW_MS, 既定 400ms) で再生停止。
- 起動時の音量は
USER_SPK_VOLUME(0〜255)。画面下部のスライダーでリアルタイム変更し、USER_MP3_GAINでデコーダ出力ゲインを調整できます。 - ログ領域とスライダーを描画するため、
LoggingとVolumeUIが表示用ミューテックスを共有しています。
- I2S は Core2 内蔵 DAC 経由でモノラル出力(BCLK=12, LRCK=0, DATA=2)。
- microSD は VSPI: SCLK=18, MISO=38, MOSI=23, CS=4。
M5.config().output_power = trueでスピーカ/SD 電源を有効化してからSD.begin()を呼びます。
- microSD ルートに
0001_*.mp3,0002_*.mp3... を配置。 - 必要に応じて
config.hでTRIGGER_CONFIG, 音量/ゲイン、ダブルタップ判定時間や UI 高さを調整。 - Arduino IDE で
M5core2-mp3-player.inoを開き、ボード設定を Core2 にして書き込み。 - 起動後にシリアルまたは画面ログでプレイリスト読込結果と SD 初期化結果を確認。
- 設定した入力を押して再生・スキップ・停止を確認(ボリュームは画面下スライダーで調整)。
本リポジトリは MIT License で提供されます。詳細は LICENSE を参照してください。
本ソフトウェア/ハードウェアは「現状のまま」提供され、一切の保証はありません。
利用は利用者自身の責任において行ってください。
作者は損害等について一切責任を負いません。
このリポジトリを使った方は、GitHub Discussionsやtwitter(@yasushi_tech)に「どんな用途で使ったか」共有いただけると嬉しいです(任意)。