M5StickS3に専用のオーディオ基板と3Dプリント筐体を組み合わせ、WebラジオとmicroSD内のMP3を再生できる小型オーディオプレーヤー「Pocket Audio Deck」を製作しました。
20年前のMP3プレーヤーを、M5StickS3で作りたい
M5StickS3の仕様を初めて見たとき、約20年前によく使っていた専用MP3プレーヤーを思い出しました。
小さな本体にディスプレイ、物理ボタン、Wi-Fi、ESP32-S3、音声デコードに十分なFlashとPSRAMが収まっています。この構成なら、当時のMP3プレーヤーらしい操作感を残しつつ、Webラジオにも対応した現代的なポケットプレーヤーが作れそうだと考えました。
目指したのは、スマートフォンの周辺機器でも、配線が露出した開発ボードでもありません。すぐに起動し、物理ボタンだけで操作でき、必要な情報を一目で確認できる、単体で完結したオーディオプレーヤーです。
試作から専用オーディオ基板へ
最初の試作では、M5StickS3の内蔵オーディオ機能を使ってネットワーク音声を再生しました。ストリーミング処理や画面表示を検証するには十分でしたが、実際に持ち歩くプレーヤーにするには、有線イヤホン出力、microSD、曲送りボタン、音量操作が必要です。
そこで、KiCadを使ってPocket Audio Deck専用基板を設計しました。
主な構成は次のとおりです。
- PCM5102A ステレオI2S DAC
- TPA6132A2 ステレオヘッドホンアンプ
- 3.5mmイヤホンジャック
- microSDカードスロット
- 前の曲/次の曲を操作する2つのスイッチ
- 音量調整とミュートを行う左右・プッシュ操作スイッチ
M5StickS3は、Wi-Fi接続、音声デコード、メタデータ取得、FFT処理、画面表示、ボタン処理、設定保存、モード切り替えを担当します。専用基板は、デジタル音声の変換、イヤホン駆動、microSD、物理操作を担当します。


HAT2サイズに機能をまとめる
専用基板は、M5StickS3のHAT2拡張形状に合わせて設計しました。
限られた基板面積へイヤホン出力、microSD、曲送りスイッチ、音量操作を収めるには、部品配置と配線を慎重に検討する必要がありました。しかし、このサイズにまとめたことで、開発ボードを重ねただけではなく、M5StickS3と一体化した一つのプレーヤーとして仕上げることができました。
設計の出発点は回路構成そのものではなく、イヤホンで気持ちよく音楽を聴けること、メニューを開かず物理操作できること、手に持った状態で自然に操作できることです。音質と日常的な使いやすさを後付けにせず、基板、操作部、筐体を一つの製品として設計しました。

携帯できる3Dプリント筐体
筐体は、昔の専用MP3プレーヤーが持っていたシンプルさを意識しました。M5StickS3と専用基板が別々のパーツに見えないよう、連続した一体型のパッケージに収めています。
側面には音量操作とmicroSDスロットを配置し、前後の曲へ移動するスイッチには、押しやすい3Dプリント製のボタンキャップを設けました。
背面は、イヤホンジャック側とM5StickS3のUSBコネクタ側をM2×6mmのタッピングネジで固定しています。携帯中に簡単に外れない一方、メンテナンス時には分解できる構造です。
さらに、実際に持ち歩けるようストラップホールも一体で設計しました。小さな部分ですが、これによって机上の試作品ではなく、持ち運んで使えるプレーヤーになりました。



Webラジオモード
公開版ファームウェアでは、SomaFMが提供するHTTP MP3ストリームを再生できます。初期設定ではGroove Salad、Drone Zone、Indie Pop Rocks!、Space Station Somaの4局を登録しています。
ストリームからICYメタデータを取得し、現在の曲名を画面に表示します。文字が画面に収まらない場合だけ、自動的に横スクロールします。
画面下部には、デコード済みPCMデータを使ったリアルタイム16バンド・スペクトラムアナライザーを表示します。イヤホンから聞こえる音と動きが自然に合うよう、表示には約180msの履歴を持たせています。
接続中やバッファリング中だけ状態を表示し、再生が始まると放送局名と曲名を中心にした画面へ切り替わります。画面全体を書き直さず、変更された領域だけをSpriteで更新することで、表示のちらつきも抑えました。

日本のradikoにも対応
個人利用向けには、日本のラジオサービス「radiko」を再生できる非公開版も開発し、実機で動作を確認しています。
放送局名と現在の番組情報を表示し、公開版と同じ物理操作、イヤホン出力、スペクトラムアナライザーを利用できます。
radiko固有の認証・ストリーミング処理は公開リポジトリには含めていません。公開版は、地域認証を必要とせず誰でも試せるHTTP MP3ストリームを使用しています。
MP3プレーヤーモード
MP3モードは、約20年前の専用MP3プレーヤーらしい雰囲気を再現することを意識しました。
画面は、実際の音声に反応するスペクトラムアナライザーと、再生位置・経過時間・残り時間を確認できるシークバー表示を切り替えられます。
再生/一時停止、前の曲/次の曲、1曲リピート、全曲リピート、シャッフルに対応しています。イコライザーも物理ボタンから設定でき、好みに合わせて音質を変更できます。
曲名とアーティスト名はMP3ファイルのID3タグから取得します。長い文字列は、画面に収まらない場合だけ自動的にスクロールします。
microSDの挿入と取り外しも自動で検出します。ローカル再生中は不要なRF動作を減らすためWi-Fiを停止し、音量、再生方法、表示方法、イコライザー設定は再起動後も保持されます。


開発ボードではなく、実際に使えるプレーヤーへ
Pocket Audio Deckは、単にM5StickS3でWebラジオを再生するスケッチではありません。
専用オーディオ基板、物理操作、microSD、PCM連動のスペクトラム表示、設定保存、低フリッカーUI、3Dプリント筐体を一つにまとめ、日常的に使えるポケットサイズのオーディオプレーヤーを目指しました。
最後に使ったモード、放送局、音量などを記憶し、再起動後も前回の状態から使い始められます。スマートフォンを取り出さず、イヤホンを接続して物理ボタンだけで操作できる、専用プレーヤーならではの感覚を形にできました。
ソースコードと設計データ
公開版のファームウェア、回路図、3D筐体データはGitHubで公開しています。
GitHub:
https://github.com/norippy-i/PocketAudioDeck-WebRadio
Hackster.io:
https://www.hackster.io/norippy/pocket-audio-deck-web-radio-and-mp3-player-for-m5sticks3-3c0ea3
SomaFM:
https://somafm.com/listen/
