MP3プレーヤ第12作

ソフトウエアデコーダ(libmad)+I2S接続DACによるMP3プレーヤ。

更新: 2018/07/22, 2018/07/29, 2018/08/21, 2018/09/30, 2018/10/06, 2018/12/01, 2020/11/19, 2020/12/30, 2021/05/01


概要

  • ソフトウエアデコーダによるMP3プレーヤの試作を作品として完成させます。
  • マイコンボードは 「mbed LPC1768
  • DACはI2S接続のUDA1334Aボード(Adafruit)。スイッチサイエンスで購入。
  • ソフトウエアデコーダはlibmad
  • マイコンボードはmbed対応だが、ソフトウエア開発環境はLPCExpresso(CQ出版のこの本に付属のバージョン)を使った(2020/12改定からはLPCXpresso v8.2.2)。

回路1

  • マイコンボード、DACともに既製品なので回路図はシンプルになります。
  • オーディオアンプはNJM2073。DACボードのイヤホンジャック使用時のため、データシートにあるミュート回路を付加した。
    (2018/08/21)このミュート回路ではたしかにミュートできますが、電源オンオフ時のポップノイズを防ぐことはできませんでした。はんだ付け作業の途中でしたが、回路を変更しました。→回路2
  • 液晶は秋月のTG12864B-02WWBVですが、マイコンボードのIOが足りないのでMICROCHIPのIOexpander(MCP23017)でLCDのすべてのコントロールを行います。
    この方式はメニューから再生対象フォルダ/MP3ファイルを選択する操作の間は表示の切り替わりにストレスを感じることはない。ところが再生の最中に表示を切り替えようとすると(たとえばバックライトを消す程度のことでも)そこで音が一瞬途切れてしまいます。
    バックライトの点灯ぐらいの制御はLPC1768から直接できるようにすればよかった(最終的にGPIOが2つ余ったので)。
  • (2021/05/01加筆) SDカードを制御するSPIはプルアップが必要です。

ケースの加工

  • ケースはタカチのYM-150にしましたが、今回初めてタカチのケース加工サービスを使ってみることにした。
  • すべての穴の位置を最初から確定することは困難なので主要な部分だけ依頼して、あとは部品とボード実装に合わせて自分で穴を追加することにします。
  • タカチへ依頼する窓口は「共立エレショップ」を利用します。

ケース加工発注の流れ

(以下の文中、2度目の注文とはMP3プレーヤ第13作での発注のこと。2018/12/15)
(2020年11月に3度目の加工注文をしたが、下記の流れとは少し違っていた。MP3プレーヤ第16作参照。2020/11/29)
  • 共立エレショップのサイトから最初の申し込みをします。
  • 共立のページには「自動返信メールが届きます」とありますが、実際は手動送信メールのようです。土曜日に申し込んだのにメールが来たのは月曜だった。
    (2度目の注文では自動返信メールが来ました。返信メールで図面データを送信します。2018/12/01加筆)
  • そのメールに図面の電子データを添付して返信します。送った図面データはこれです。
  • 2日後に見積金額を知らせるメールが共立から来ました。その額は税込9,765円。思ったほど高くないです。
    (2度目の注文でも同じYM-150だが、穴の数が違うためか見積金額は11,170円。2018/12/01加筆)
  • ふたたび共立のサイトで正式に注文します。その際、見積メールにある回答番号を入力する。
  • 先払いで注文したので振込先を知らせるメールが届きます。いつもの共立の振込先です。
  • ATMから振り込みます。振込手数料を加えたら1万円を超えた。
  • 振り込んでから8日後、タカチから加工されたケースが届きました。
    (2度目の注文でも8日後だった。おまけでタカチの製本された総合カタログも付いてきました。2018/12/15加筆)
  • LCDとタクトスイッチを仮付けしてみた。意図したとおりの位置とサイズで穴があけられているようです。
  • 後日、共立から納品書だけが送られてきました。

回路2

NJM2073の出力コンデンサ(470μF)につながる抵抗(100Ω)はポップノイズ対策兼ホワイトノイズ軽減のためのもの。初期状態ではグランドに接続しておき、電源オン時少し時間を置いてからスピーカーに接続します。
参考サイト:SAITAMA-HA2にミュート回路(ヘッドホン保護用)を追加するDクラスパワーアンプ...page.1/4

液晶の表示テスト

IOexpander(MCP23017)の周辺回路を液晶に直付けしました。こうすることでメイン基板との結線数を少なくできます。
秋月のサンプルデータをMCP23017を通じて表示させています。バックライトの配線がまだなので画面が暗いです。

メイン基板と電源基板

今回初めて使う部品(IRLML6402)のテストのため電源回路を先行して小基盤で実験した。その実験基板をそのまま本製作に使うことに。

ケース組み込み

完成

  • マイコンとDACボードを4月に購入して以来、ほぼ6か月かけてようやく完成にたどり着いた。
  • 現時点での最新ソースはこちら(2020/12/30 これは旧ソースとなった)。
  • 今まで製作したMP3プレーヤと同様、音源のSDカードはWindowsで事前処理している。そのソースはこちら。VC++2010で開発しました。
    この事前処理をしておくことでマイコンプログラムが楽になります。マイコンプログラムはロングファイルネームを扱ってないですし、フォントファイルを読むこともありません。

液晶の表示を簡単に紹介

電源オン時の初期画面。表示文字はすべて12ドットフォントを使っている。

フォルダ選択

「フォルダ」を選択すると、フォルダのツリー構造をたどっていき再生したいアルバムを探すモードになります。 まずは「ジャンル」。

さらにたどっていくと「ミュージシャン」の選択になります。

ミュージシャンを選択すると「アルバム」を選択できます。この表示ではアルバム名の判別がむつかしいですが、
(2020/12の改定では1行2項目の表示方式を廃止)

ボタン操作によって1画面あたり5項目の表示になってアルバム名の判別がしやすくなります。
(2020/12の改定では1行1項目の表示方式に固定)

曲選択

アルバムの選択状態でPLAYボタンを押せば、そのアルバムの再生が始まります。 が、さらにアルバムの中の曲を選択することもできます。(左の写真はMiles Davisではないですが。)

仕様およびプログラム改定(2020/12)

LPC1768を採用したMP3プレーヤ第16作の成果を本製作に反映する一方、本製作独自の仕様も見直すことにした。
  • FAT32のロングファイルネームに対応
  • インデックスメニュー(頭文字からディレクトリを選択する機能)の廃止。
  • 前の曲に戻って再生する機能の廃止。この機能は第4作以降のほとんどの製作に組み込んできたが、ほぼ使ったことがない。
  • ランダム再生は今まで通りディレクトリ単位のランダムを基本とするが、特定のディレクトリについてはその下の曲単位のランダム再生をサポート(たとえばFM放送の録音を置いてあるディレクトリなど。一つのMP3ファイルが1時間以上になる。週1の番組なら年度ごとにディレクトリを分割していますが、それでも1ディレクトリ下に数10時間分のMP3ファイルがあることになります)。
改修したプログラムは
  • マイクロSDカードの事前処理プログラム。MP3ファイルを追加した後などにWindowsのコマンドプロンプトで実行する。VC++2019で開発(ソース一式はこちら)。このプログラムが出力するマスタデータファイルのファイルフォーマットは第16作とほぼ共通なので、ソースコードも共通化した。
  • LPC1768のファームウエア。LPCXpresso v8.2.2で開発。ソース一式はこちら
MP3プレーヤのページに戻る トップページに戻る