MP3プレーヤ第8作

VS1011によるMP3プレーヤ。媒体としてSDカードを使用。

更新: 2016/09/10, 2017/03/31, 2017/04/03, 2021/04/25


概要

  • SparkfunのVS10XXボードがリタイヤしたので、VS1011を自力で半田付けした。
  • VS1011まわりの回路と実装はマスカットさんの作例を大いに参考にしました。
  • またVS1011の出力周りの回路はVSLI Solution社のこちらの情報も参考にした。
  • 表示器はグラフィックOLEDを採用した(ストロベリ・リナックスのこれ。縦16x横100の単色。)
  • (2021/04/25加筆) SDメモリのSPI(とくにDO)はプルアップが必要。無しで製作してしまったが、とりあえず動いている。

プログラム(PIC)

  • CCS社のPIC18用コンパイラ(PCH V5.046)+MPLAB X IDE(v3.26)で開発した。ソースの一式、こちら
  • SDカードのFATファイルシステムにFatFs R0.10aを使用している。
  • PICが読み書きするファイルはすべて半角英数字の8.3形式で扱う。
  • フォントファイルをSDカードに置いているが、それをPICのプログラムが使うことはない。

プログラム(PC)

ファイル名をPICが扱える形式に変換し、OLEDに表示するイメージデータを含むデータファイルの生成にPC(windows)上のプログラムを使う。コマンドプロンプトで実行する。
VC++2010で作成したプログラムのソース一式、こちら

表示例 1

全角6文字までの名前は、16x16フォントを使う。

表示例 2

全角8文字までの名前は、12x12フォントを使う。

表示例 3

さらに長い、2バイト文字を含む名前は横スクロールさせて表示する。横方向最大512ドットの長さまで対応。

表示例 4

2バイト文字を含まない、長い名前は小さいフォントで2行にわけて表示する。この場合はスクロールなし。

表示例 5

VLSI Solution社が公開しているプラグインによりスペクトラムアナライザを実現できる。

実装

  • ケースはTAKACHIのPF15-5-15
  • OLEDは20mAぐらい消費するので、曲の初めの20秒程度だけ表示し、その後はOLEDの電源をオフにする動作をディフォルトとした(外部DC入力は用意したが、バッテリ運用にこだわるため)。オプションボタンにより常時表示に切り替えることができる。

インプレッション

  • 電源オンからSDカードが使えるようになるまでになぜか時間が掛かる。プログラムでも最初のファイルアクセス時のみリトライを繰り返すようにしている。原因は不明。(この現象がでるのはTOSHIBAのSDカードのときであることがわかった。SONYやSanDiskのカードでは問題ない。2017/04/03加筆) SPIをプルアップしてないのが原因かも(2021/04/25 加筆)
  • 今回の製作ではデコーダの出力を外部アンプに接続できるようにLINEOUTを付けた。その場合、内部アンプの電源をオフにできるスイッチ回路も付けたのだが、このスイッチをオフにするとなぜかPICの動作が不安定になってしまった。
    結局、内部アンプの電源は常にオンである。
  • 以上2つの問題点はハードをほぼ組み終わってから気がついたので原因調査が十分できなかった。
  • とはいえ、実用性は十分で完成した作品になりました。

ディレクトリ(アルバム)選択方法改良

ディレクトリ選択において今までは一度に1件の名前を表示して、ボタン操作によりディレクトリ階層をたどる方式だったが、これでは目的のディレクトリにたどり着くのが大変です。そこで高さ8ドットのフォントを利用して一度に最大4件の名前を表示できるようにした。
日本語の表示には美咲フォント(8x8ドット)を使いました。「響」の字などかなり潰れます。
(2017/03/31)
MP3プレーヤのページに戻る トップページに戻る