ELM Home Page

初出: Edge Vol.13
Web ver: 2008. 5. 16

キューブ型MP3プレーヤ


Cubic MP3 Player

最近立て続けのMP3プレーヤの製作です。前回の大規模志向とは反対に今回はシンプルにまとめて、ちょっと変わったギミックを組み込んでみました。右の写真を見て分かるように、このMP3プレーヤには普通のオーディオ・プレーヤにあるはずのボタンやダイアルの類は一切ありません。ではどうやって操作するのかというと、スイッチ類の代わりに加速度センサが内蔵されているのです。つまり、送り・戻し・音量などの再生制御は、本体に対して傾きや振動などの動きを与えることにより行い、それを加速度センサで拾って再生コマンドとして解釈・実行します。これにより、シンプルすぎて一見オーディオ・プレーヤには見えないデザインになりました。

ハードウェア

図1.ブロック図
Block
図2.回路図

製作したキューブ型MP3プレーヤの機能ブロック図を図1に、回路図を図2に示します。次に各パートについて説明します。

コントローラ

組み込みコントローラとして、いつものAVRマイコンを使用しました。今回使用したチップはATmega644(Atmel)で、AVRの中ではピン数の割に大きなメモリ(ROM:64Kバイト、RAM:4Kバイト)を内蔵しています。動作クロックは内蔵の8MHzを使用しています。

センサ

5mm角の超小型3軸加速度センサKXM52-1050(Kionix)を使用しました。検出レンジは±2Gですが、今回のような用途には少し感度が高すぎます。特に重要な下方向が重力によるオフセットにより1Gしか余裕がありません。出力が飽和すると加速度を正確に積分できなくなるので、運動の解析に何らかの考慮が必要になります。別のセンサを選ぶなら±5G程度のものが使いやすいでしょう。

記録媒体

メモリ・カードの中で最も普及しているSDメモリ・カードを使用します。これはシリアル・インターフェースなので、4本の信号線だけで制御できます。ファイル・システムにはFATが採用されているので、利用機器はこれに対応しなければなりません。最近はフリーの組み込み用FAT制御モジュールが数多く出回るようになり、手軽にメモリ・カードを利用できるようになっています。

バッテリと電源回路

ポータブル機器なので、リチウム・イオン電池を内蔵してこれを電源とします。電池はRCR123A(3.6V, 650mAh)を2本パラにして使っています。連続再生時間は20時間程度になりました。リチウム・イオン電池は充放電を正確に管理(特にセル電圧)する必要があるので、充電制御には専用ICであるBQ2057C(TI)、過放電防止には電圧検出IC MN1382SLP(松下)を使用して電池を保護しています。

主電源のON/OFFは、メモリ・カード・ソケットの挿入検出スイッチで行っているので、カードの抜き差しで電源をON/OFFすることになります。電池の電圧(3.5〜4.2V)はパワー・アンプ部へは直接供給され、コントローラ部へは3Vに安定化して供給されます。

MP3デコーダとアンプ

今回はMP3デコーダにVS1011e(VLSI Solutions)を使用しました。入手性がよく手軽に使え、そこそこのオーディオ特性が得られるので、自作MP3プレーヤでは定番となっているICです。VS1011eはDACとアンプを内蔵していてヘッドホンを直接駆動できるのですが、スピーカの駆動にはパワー不足です。したがって、後段にパワー・アンプが必要になります。今回は効率の良いD級アンプTPA2012D2(TI)でスピーカを駆動しました。

チャネル・ミキサ

ケースには市販のPCスピーカを流用し、右スピーカの中に全ての機能を組み込んでいます。左スピーカを外して単独で使うときは、左右ミックスして出力するように、左スピーカーの接続に連動してモノラル・スレテオを切り替える回路を追加してあります。

組み立て

ケースの加工

写真2.追加工
Case

ケースには市販のPCスピーカ(エレコム製 MS-77)を流用しています。スピーカは左右分離タイプで、右スピーカ内にアンプが組み込まれていました。これの中身を抜いて代わりに電池と回路基板を組み込むことになります。裏蓋はケースに超音波溶着されているので、一文字ドリルで適当に穴を開けて強く引っ張って剥ぎ取ります。中身は裏蓋で押さえ込まれるようになっていて、内部に固定する部分はありません。このため、四隅にスタッドを接着して、これで新たに組み込む基板を固定するようにしました(写真2a)。ケース上部にはメモリ・カードを挿入するスリット(2.5×25mm)を設けます。ケースの材質がアクリルなので、亀裂や欠けに注意しながら慎重に加工する必要があります(写真2b)。LEDはケース下部に貫通穴を開けて、その中に2色チップLEDを埋め込むとキレイに光が拡散します。

基板の組み立て

写真3.基板の組み立て
Boards

既存のケースを使うため、ケース内部の寸法は既に決まっています。電池も含めて限られたスペースに組み込まなければならないため、写真3のように電源部とロジック部を別の基板に分けて、互いに直角に配置するレイアウトとしました。内部はスピーカの出っ張りがあるので、内部の有効寸法は43×43×30程度とかなりタイトになっています(図3)。

基板の配線にはいつものようにUEW(ウレタン線)を使いました。このプレーヤは操作方法ゆえ常に振動にさらされるので、断線を防ぐためUEWを所々固定しておくと良いでしょう。基板は裏蓋(FR-4生基板)に固定し、さらに裏蓋はスタッドに固定されます。

ソフトウェア

トラック管理

図3.ディレクトリ構造
Fig.4

トラック管理は図3に示すように、ルート・ディレクトリ直下のディレクトリそれぞれをアルバムとして扱います。アルバム数は最大50個とし、各アルバムには99トラックまで格納できるようにしています。各アルバムとアルバム中のトラック(MP3ファイル)は、それぞれ名前でソートされます。

今回組み込んだFatFsモジュールは長いファイル名に対応していませんが、代替の短いファイル名(8.3形式)を使ってアクセスが可能です。長いファイル名の場合でも、名前の頭に番号を振ることで確実に順番を設定できます。ディレクトリ内にプレイリスト(M3Uファイル)が存在するときは、それに従います。この場合、MP3ファイルは8.3形式に収まる名前でなければなりません。

再生制御

電源投入後、ルート・ディレクトリ直下のディレクトリそれぞれの中を検索して、MP3ファイルを含むディレクトリを有効なアルバムとしてアルバム・リストを作成します。ファイル構成が前回から変わっていないときは、前回停止した時に再生中だったトラックからスタートします。メモリ・カードの入れ替えなどが行われて、前回と違う内容になっている場合は、先頭アルバムの先頭トラックからスタートします。アルバムの最終トラックの再生が終了したとき、次のアルバムへ移るかそのアルバムの先頭に戻るかは、リピート・モードの設定(全トラック or アルバム内)によって変わります。

DSPへのMP3データ送信は、FatFsモジュールの拡張関数(f_forward)によって行います。この関数はf_read関数に似ていますが、読み出しバッファの代わりにデータ送信関数を指定します。これにより、読み出しバッファを使用せずファイル・データを直接送出することができます。

電源管理

ソケットのメディア検出スイッチが電源スイッチです。カードが抜かれてから電源が落ちるまでは100ms程度の余裕があるので、カード抜き取りを検出したらこの間に再生を停止し、保存すべき情報や設定等をEEPROMに保存します。

電池電圧は常に監視され、その状態がLEDに表示されます。3.65Vを一定時間継続して下回ったら、ローバッテリ表示となり、3.4Vを下回ったら再生を停止してシャットダウン状態になります。

モーション検出

このMP3プレーヤの唯一のユーザ入力機能で、割り込み処理で駆動されます。センサのXYZ出力を毎秒2000回サンプリングし、Gのベクトルの変化のパターンから本体の姿勢や動きを検出します。そしてそれらの情報からどのようなコマンドが与えられたか判断し、送りや戻しといった普通の制御コマンドとして再生制御へ送ります。現在のところ、6通りのモーションを識別しています。

使いかた

メモリ・カードを挿入すると電源が入り、再生を開始します。電源を切るときは、メモリ・カード抜きます。制御コマンドは次に説明するように本体の運動によって与えられます。文章だけでは分かりにくいので、動作映像も併せて見た方がよく分かると思います。

次のトラック
右下の角を下に軽く当てる。アルバム内最終トラックの場合は、リピート・モードに従う。
次のアルバム
↑を2回連続(400ms以内)。次のアルバムの先頭トラックへ。
前のトラック
左下の角を下に軽く当てる。アルバム内先頭トラックの場合は、リピート・モードに従う。
前のアルバム
↑を2回連続(400ms以内)。前のアルバムの先頭トラックへ。
一時停止
手前に倒してスピーカを下にする。元に戻して再生再開。
音量アップ
右に傾けている間増大する。
音量ダウン
左に傾けている間減少する。
リピート・モード設定
一時停止状態で下に軽く当てる。1回で全曲リピート、2回連続でアルバム内リピートを設定。コマンドが受け付けられると、緑LEDが1回または2回短くフラッシュして応答する。

LEDの意味

動作状態がケース底面に埋め込まれたLEDに表示されます。意味は次の通り。

緑点灯
再生中。
緑点滅
一時停止中。再生中の点滅はロー・バッテリ状態を示す。
赤点灯
充電中。2色LEDなので、緑とかぶるときは黄色に見える。

資料

Sign