MP3プレーヤ

完成して、なおかつ現役なのは第4、5、6、8、9、10、12作。普段使うのは第8、10、12作。
基本的なコンセプトは、スピーカで聴くこと(ヘッドホンには一切関心がない)、 すでに数10Gバイトある手持ちのMP3ファイルを再生することを目的とするので、他フォーマット(FLACやOGGなど)やハイレゾ対応は考えていない。
写真左から第4作、第6作、第8作、第10作、第12作

更新:2014/10/13, 2015/04/12, 2015/04/20, 2015/04/22, 2015/05/06, 2015/08/09, 2015/12/31, 2016/04/29, 2016/09/16, 2017/03/31,2017/08/06,2017/12/17,2018/07/22,2018/10/07


第12作

第12作。ソフトウエアデコーダlibmadとI2S-DACを組み合わせた。マイコンはLPC1768、DACはUDA1334A、オーディオアンプはNJM2073。スピーカを内蔵しない。

更新:2018/10/07


第11作

第11作。VS1063AによるMP3レコーダ。最初はFM受信機能付きで構想したが、悪戦苦闘の末、単純なレコーダとなった。音源によってはしつこいノイズが入るので、出来はいまいち。マイコンはLPC11U25(Strawberry Linuxのlpclcd/NXP Cortex-M0コア)。

更新:2017/12/17


第10作

第10作も無線リモコン方式だが、本体の起動停止をリモコンからできるようにした。無線モジュールはTWE-Lite。デコーダはVS1011E。MP3ファイルの媒体はmicroSDカード。マイコンはLPC11U37(Strawberry LinuxのLPCcappuccino/NXP Cortex-M0コア)。オーディオアンプはNJM4580。パワーアンプとスピーカを内蔵しない。

更新:2017/08/06


第9作

第9作は無線リモコン方式のコントローラを試みた。無線モジュールはTWE-Lite。デコーダはVS1011E。MP3ファイルの媒体はSDカード。マイコンはLPC11U35(CQ出版社/NXP Cortex-M0コア)。パワーアンプとスピーカを内蔵しない。

更新:2017/03/31


第8作

第8作はOLEDディスプレイで日本語表示を目指した。デコーダはVS1011E。MP3ファイルの媒体はSDカード。マイコンはPIC18F46K22。オーディオアンプはNJM2073。スピーカを内蔵。

更新:2016/09/16


第7作

第7作ではUSBケーブルでPCと接続してMP3ファイルを転送することを目指したが、PIC18のUSB機能では転送速度が遅いため中断。

更新:2016/09/16


第6作

第6作は媒体としてUSBメモリを使用。64GByteで運用中。電源はACアダプタ(5V)。デコーダはVS1033。表示器としてLCD(I2C接続 16x2)。マイコンはPIC24FJ64GB002とPIC18F2550。オーディオアンプはTA7368。スピーカを内蔵。

更新:2016/04/28


第5作

第5作はVS1063をラジオモジュールと組み合わせて製作した。録音を主目的とする。タイマー録音機能付き。表示器としてLCD(I2C接続 16x2)。

更新:2015/12/31


第4作

第4作は媒体としてSDカードを使用。32GByteで運用中。電源はエネループプロ 4本。デコーダはVS1033。表示器としてLCD(16x2)。マイコンはPIC18F2580。オーディオアンプはTA7368。スピーカを内蔵。

更新:2015/08/15, 2016/04/29


第3作

デコーダボード

スイッチサイエンスのMP3デコーダボード(品番:SFE-BOB-10608 / 使用チップ:VS1033)によるMP3プレーヤの第三作。
プロセッサはPIC18F2550。オーディオアンプはNJM2073、ただしモノラル再生専用とした(たとえ貧弱なものであってもスピーカで聞きたいのです)。

デコーダボード上のD-GNDとA-GNDを繋いでいたハンダブリッジを分離している(左の写真の黄色い楕円の箇所)。

回路

  • D-GNDとA-GNDとを切り離し、3端子レギュレータの所で1点アースしている。
  • VS1033の出力はMAXとしVRにて音量を絞っている
  • VLSI Solution社のこちらの情報を参考にしてVS1033→NJM2073の回路を決めた。

完成

  • TAKACHIのSY-110Bに収めた。
  • フォルダ単位のランダム再生専用とした。白ボタン(SW1)を押すことによりフォルダをランダム選択して再生開始。再び白ボタンを押すと同一フォルダの次のMP3ファイルへ進みます。 また白ボタンを長押しすることでフォルダをランダム選択しなおします。
  • SDカードのルートにフォルダリストファイル(DIRコマンドの出力)を置いておき、そこからランダムにフォルダを選択するような仕様です。
  • 乱数は普通にコンパイラ付属のrand関数を使っている。SeedはPICのEEPROMに保存しておき、再生開始のたびに新しいSeedを生成します。
  • VS1033の機能(Treble Control)によって高音を押さえることが出来るようにしてみた。 黒ボタン(SW2)はそれのトグル切替用。
  • FatFsでFAT32対応している。
  • XC8の試用版によるソース一式はこちら

インプレッション

  • 第一作以来気になっていたデコード時のノイズが聞こえなくなり、ようやくまともなMP3プレーヤになりました。
  • ランダム再生専用にしたことで長いこと聞いてなかったアルバムを久々に(たとえば25年ぶりぐらい)聞くことができたりします。「こんなCD持っていたのか...」みたいな(しかしどのCDなのかを知る手段はない)。
  • 消費電流は100mAぐらいあり、Panasonic EVOLTA使用の場合、10数時間もちます。

PCHに移植

CCS社のCコンパイラ(PCH)に移植した。
  • MPLAB X IDE v1.95 と組み合わせて利用しています。左の画像はMPLAB X IDEからコンパイル実行中に出るバナー。
  • 分割コンパイルの方法が分からない。とりあえず Cファイルそのものをincludeする方法で対処した(FatFsも)。
  • 試用版XC8ではFatFsをREADONLYで使うしか無かったが、製品版のコンパイラを使えば書き込み機能を使うことが出来ます。
  • 再生したフォルダの履歴をファイルに64回分保存しておき、その間は同じフォルダを再生しないようにした。
  • ソース一式はこちら

本作もリタイア

デコーダボードを第6作に供出。

更新:2015/04/20, 2015/04/22, 2015/05/06, 2016/04/28


第2作

一応の仕上げ

第1作の基盤をイヤホンまたは外部アンプに接続して使えるように一応まとめた。この製作では以下の点を目標にした。

出力まわりの回路

出力周辺の回路は左の通りだが、電源が共通のアンプだと依然としてノイズが入ってきます。(電源が別の外部アンプならば問題ありません。)

ただノイズレベルは再生の音量に関係なく一定のようで、VS1033の再生音量は最大にしておき外部のVRで音量を絞るとノイズはほとんど気にならない程度になります。

ここまで 2015/04/16

本作もリタイア

第3作が完成して以後、これは実験機となった。
  • SDカード→VS1033のデータ転送にFatFsのf_forward関数を使ってみる。
  • VLSI solution社のサイトでVS1033dのパッチが公開されているので、それを組み込んでみる。

デコーダボードを第4作に供出。(2015/08/09)

更新:2015/04/16, 2015/05/15


第1作

スイッチサイエンスのMP3デコーダボード(品番:SFE-BOB-10608 / 使用チップ:VS1033)によるMP3プレーヤ。
プロセッサはPIC18F2550。プログラムは電子マスカットさんが公開されているものを改造して使用した。改造点は使用チップの変更(VS1001→VS1033, PIC18F252→PIC18F2550)対応の他、LCD表示機能、4GBのSDカード対応を行った。

中止

オーディオアンプ(LM386)とスピーカも同一ケースに収めてまとめようとしたが、結果が思わしくありません。
再生中、"ビィィィ"というノイズが入ってきます。静かな曲だとこれがかなり気になるのです。
VS1033の出力をイヤホンで直接聞くときはこのノイズは聞こえません。また外部アンプ+スピーカに接続した場合も問題なし。 一つのMP3ファイルの再生が終わり、次のMP3ファイルの再生が始まるまでの間は問題のノイズは聞こえないので、VS1033ボードのデコード処理に よって発生することは間違いなさそうです。
いろいろ対策を試してみましたが、どれもうまくいかないので本機の製作は中止することにしました。
デコーダボードを第2作に供出。

更新:2014/10/13, 2015/04/12


トップページに戻る