Top Page Index About Link Mail Form

EasyMP3(VS1001K) + SDカード + AVR を使った

MP3プレーヤーの製作 試作機編

→2号機編
→3号機編
→4号機編
→MP3プレーヤーキット BK-1
→FM/MP3プレーヤー 汎用基板

自作MP3プレーヤーとポー

動機

 だいぶ前にわたしは ChaNさんのポケットサイズ MP3プレーヤのページを見かけ、大変感銘を受けました。まさか MP3プレーヤーを自作できるとは夢にも思いませんでした。デコーダチップを入手して記憶メディアを操作すればそれほど難しいものではないと実証された ChaNさんの功績は大きいと思います。

 それ故に若松のキットを入手して自分も作ってみようかと思いながらも日々の雑務に追われて忘れかけていたのですが、この前、ふとしたきっかけで EasyMP3を知りました。このちっぽけなモジュールに MP3デコーダと D/Aコンバータ、ヘッドフォン用のアンプが仕込まれ、それがマイコンで制御可能ということから MP3プレーヤーを作ってみようと思い立ちました。

方針

 記憶メディアは配線が少なくて済み、入手も容易な MMC/SDカードを採用しました。コントローラには ChaNさん同様、AVR系を使うことにしました。最初、AT90S4433を使ったのですが、開発中にプログラムエリアを使いつくしてしまったので ATmega8に切り替えました。ピンコンパチなので簡単に切り替えられると思ったのですが、ライタがそのままでは使えないのでファームウェアやホスト側のソフトを切り替える手間がかかりました。それに加えて ATmega8は工場出荷時はクロックは内蔵の 1MHz発振器で動くようにヒューズ設定されているということを購入してから知りました。なぜこんな設定がデフォルトなんだ? ともかく、ヒューズ設定を変更する為に急遽パラレルライタを作って作業継続。

 EasyMP3はサイズが小さいだけでなく、消費電流も小さい(20mA程度)ので、自作でありながら実用的なものを作ることにしました。ケースはできるだけ小さくし、外で取り出してもそれほど恥ずかしくない外見にしようと思いました。アクリルは割れやすいので不可とし、いろいろ比べて結局、入手の容易なタカチの SW-95Bを採用しました。ちなみにこのケースにはライトグレーのタイプもあります。バッテリーはニッケル水素電池を使い、充電機能も内蔵し、できるだけ長時間の駆動を目標としました。更に、SDカードは簡単に抜き差しができるようにし、FATフォーマットを読めるようにすれば市販の USBリーダライタなどで SDカードに MP3ファイルを書きこみ、それを本機に差して聴くことができます。この方針の下、いろいろありながらも固まってきた仕様は以下のとおりです。

MP3プレーヤー(試作機)の仕様
主要LSI MCU:ATmega8(ATMEL)
DSP:VS1001K(VLSI)
DAC:VS1001Kに内蔵
記録メディア MMC/SDカード
容量:8MB, 32MB, 64MB, 128MBで動作を確認
フォーマット:FAT12, FAT16 ロングファイル名でも問題無し
ルートディレクトリの拡張子が MP3のファイルのみを演奏する
MP3以外のファイルの混在も可
FAT32は未対応
操作キー 電源ON/OFF 兼 再生 兼 停止、逆方向スキップ、
順方向スキップ、ボリューム+、ボリューム−
対応データ形式 MPEG 1 & 2 Layer-3, Layer-3の 2.5拡張
VBR対応 全てのサンプルレート、ビットレートに対応
ビットレートは 384kbpsでも問題無いことを確認
データ転送・管理 パソコンの SDカードリーダライタで SDカードのファイルを管理
その SDカードを本体スロットに差し込んで再生する
自身には SDカードに書きこむような機能は無い
サイズ 95mm(W) x 58mm(D) x 18mm(H) (タカチ SW-95Bを使用)
質量:未測定
電源 単4型 Ni-MH電池×3本内蔵
アルカリ電池を使うことも可能
90mA準定電流回路による充電機能あり
消費電力 再生中:128kbps MP3の場合、実測約 45mAなので、3.6x45=162mW
ビットレートが上がると消費電力は少し増える
待機時:0
その他 液晶ディスプレイ、リモコン等は無し
ヘッドフォン端子は一般的なΦ3.5ステレオのタイプ

解説

MP3プレーヤー・表  回路図を見るとわかるとおり、再生ボタンと電源スイッチを兼用していますが、このアイディアと回路は ChaNさんのものをほぼそのまま使わせていただいてます。充電回路は簡易的な定電流回路と MCUのプログラムで行っています。SDカードや EasyMP3は 3.3V動作なので MCUもそれに合わせ、3本のニッケル水素電池の電圧を3端子レギュレータで安定化することで済ませています。SDカードとは ATmega8内蔵 SPIインターフェースでつないでいます。充電中にカードを交換できるようにする為にカードの電源のみを ON/OFFできるようにしてあります。EasyMP3もシリアルインターフェースなのですが、こちらはポートにつないでソフト的にシリアル制御しています。

EasyMP3基板  EasyMP3は標準では 5V回路と接続する為に内部に3端子レギュレータと 74LVC245Aを搭載していますが、今回は外も 3.3Vなので両方実装していません。それに加えてケース内部が狭いことがわかっていますから、コンデンサは全て寝かせ、更に一部のコンデンサはチップ部品にしています。

 部品の入手で一番困ったのが SDカード用コネクタです。コンパクトフラッシュやスマートメディアはあちこちでコネクタが売られていますが、SDカードは全く見かけません。MMCならサンハヤトの CK-16を使う方法もあるのですが、あくまでも SDカードを使いたかったので市販の SDカードリーダライタをバラすことにしました。Yahoo!オークションで 1500円前後で大量に出品されているものを落札し、それを分解してコネクタだけ取り出して使いました。

MP3プレーヤー・裏  ケースにできるだけ小さいものを使ったので写真を見ればわかるとおり、すし詰め状態です。ヘッドフォンコネクタや ACアダプタのコネクタが出っぱってしまってちょっとみっともないように思います。電池ボックスを使うことができなかったのでリン青銅の板を入手して自作しています。このあたりも ChaNさんの記事を参考にしました。

 回路が簡単な分、ソフトにしわ寄せがきますが、C言語で開発できたのでそれほど苦にはなりませんでした。開発用には AVR-GCCを使っています。

SDカードスロット部  操作スイッチはポートの関係もあり、5個で済ませています。赤いボタンは電源と再生/停止ボタンを兼ねています。停止状態でこれを押すと電源が入り、そのまま再生します。もう一度押すと再生停止し、電源が切れます。更にもう一回押すと再び電源が入り、前回再生停止した部分から続きを再生します。ある意味、ポーズボタンも兼ねているわけです。再生を中断した部分を記憶するのに MCU内蔵の EEPROMを使っています。頻繁に ON/OFFするのにその度に EEPROMに書き込むのは寿命の点からは不安な部分ですが、メーカーは最低 100,000回は保証しています。一日 100回 ON/OFFしたとしても約3年持ちます。一日 100回というのは試作中ならともかく、完成してからは多すぎる見積もりだと思います。実際は多くても 20回程度といったところでしょうか。事実上問題無いと思います。

 青いボタンはカセットの巻き戻しにあたります。チョンと押すと再生中の曲の頭出しになり、少し長めに(250ms以上)押すと前の曲になり、1秒以上長押しすると最初の曲に戻ります。黄色いボタンは次の曲に飛びます。黒いボタンは音量調節です。

 再生中に赤いボタンを1秒以上長押しすると、バッテリーが 4.0V以上なら高い音で3回、3.8V以上なら2回…といった風にビープ音でおおまかな電圧がわかるようにしています。また、電圧がかなり低くなると曲の間に1回低い音で警告音を鳴らします。さらに低くなると警告音の後、自動的にシャットダウンします。

基板 CPU側 基板 スイッチ側  消費電流は実測で 45〜60mA程度となりました。128kpbsでは 45mA程度で、ビットレートが高くなると SDカードや MCUの稼働率が増えるのでそれにつれて消費電流も増えます。バッテリーに 800mAHのものを使ったので、単純計算では18時間近く連続稼働できることになります。実際に試した所、13、4時間程度動作しました。(正確には測っていない)

反省

 あまり深く考えずに操作ボタンと LEDを一番広い面に取りつけましたが、実際に使ってみたらポケットに入れるとボタンが勝手に押されてしまうことがありました。ヘッドフォンコネクタといっしょに短辺横の部分に押し込めればシャツのポケットに入れたまま操作ができてとてもよろしいかと思います。また、これはしかたのないことではありますが、EasyMP3は電源投入時の「ボツッ」というポップノイズが大きいように思います。スペースも無い本機のような場合は対策が難しいですが、据え置きタイプに作る場合はなにか回路を追加した方がいいかもしれません。

 また、充電回路も組み込んだのですが、大きなトランジスタを使えなかったので結局約90mAの定電流回路による充電となりました。単4とはいえ充電に 10時間以上かかるようになってしまい、これではあまり実用的ではないですね。稼働時間が 10数時間ありますから、2、3日の旅行程度なら予備バッテリーを持っていった方がいいと思います。その方が軽いですし。

 とはいえ、かなり実用的なものができたと思います。曲名などの表示装置がありませんが、自分の CDからリッピングした MP3を聴くわけなので特に支障はありません。あったら便利かなというくらい。まあ、漢字も表示できるような小さな液晶モジュールはアマチュアが入手できませんし、手に入れられたとしても漢字フォントデータやら文字コード変換やらで扱うデータが膨大に増えて手に負えなくなりそうです。

 以上の反省点を踏まえて2号機を製作しました。

 →回路図
 →ファームウェアソース

Special Thanks