MP3プレーヤ第10作

VS1011によるMP3プレーヤ。無線によるリモコン操作。

更新: 2017/08/06, 2017/08/11, 2018/01/21, 2018/04/01, 2018/10/21, 2018/12/09, 2019/04/14


概要

  • 無線によるリモコン制御のMP3プレーヤ。
  • 無線部分には無線マイコンモジュール TWELITE DIP(モノワイヤレス製)を使用。
  • 無線モジュールはベンダー提供の標準アプリをそのまま使うのでは無く、自己開発のソフトで動かします。
  • 本体側の無線モジュールはSLEEP状態とWAKE状態を交互に繰り返してコントローラからの起動要求を待ちます。

本体(HOST)の構成

  • 全体をコントロールするマイコンにはStrawberryLinuxのLPCcappuccino(NPX/LPC11U37搭載)を使用。開発環境はCQ出版社のmbed×デバッガ!一枚二役ARMマイコン基盤に付属していてMP3_09に使ったもの(NXP社のネイティブ環境LPCXpresso)をそのまま使った。
  • LPC11U37はコントローラのLCDに表示するイメージデータをI2CでTWE-Liteに転送。TWE-Liteは無線でイメージデータをコントローラに送信。
  • コントローラのボタン操作はTWE-Liteを通じて、LPC11U37のGPIO入力ピンにそのまま伝えられる。
  • MP3_09との大きなちがい。TWE-Liteはバッテリによって常時起動状態にある。4秒程度のSLEEP状態と短時間のWAKE状態、これを繰り返します。WAKE状態にあるときにコントローラからのアクセスを検出すると、TWE-LiteはLPCcappuccinoを起動する。LPCcappuccinoはTWE-Liteの電源をACアダプタに切り替える。TWE-LiteはLPCcappuccinoの起動を検出すると自身で再起動して完全な稼働状態になる。

本体(HOST)の回路

  • VS1011の出力周りの回路はVSLI Solution社のこちらの情報も参考にした。
  • NJM4580の回路もあるサイトのものを参考にしたが、そのサイトは今は無くなっています。
  • TWE-Liteまわりの回路については特に参考にした製作例はない。
  • I2Cに10KΩのプルアップ抵抗が付いているが、LPCcappuccino自体がそれを持っているので不要でした。

コントローラ(CTRL)の回路

  • TWE-Liteのマイコン機能を利用して操作ボタンの入力、LCDへの出力を行っている
  • LCDはAQM1248A-RN(48x128ドット)。

TWE-liteのプログラム

  • ベンダーがソースを公開しているリモコン通信アプリ(App_IO)のバージョン1.2.6を改造して自分のプログラムとした。
  • ソースを公開したいところですが、SDKの利用規程に「お客様がソースコードを改変して、これを公開することは可能ですが、公開時に東京コスモス電機にご一報ください」とあります。どうしようか、ちょっと煩わしいです。

LPC11U37のプログラム

LPCXpresso v6.1.0_164で開発。これは「mbed×デバッガ!一枚二役ARMマイコン基盤」に付属のもの。ソースはこちら。CMSISv2p00_LPC11Uxx、LPC11Uxx_Driver_Libと組み合わせてコンパイルします。
SDカードのFATファイルシステムにFatFs R0.10aを使用している。
ソースはこちら (2018/10/21改修。曲の途中で停止したとき、そこから再開できないことがあるのを修正)

コントローラ

ケースを使うと小型に実装するのが難しいので、ユニバーサルボードむき出しとしました。
コントローラの機能は、ディレクトリ/MP3ファイルの選択、再生開始・停止、音量の調整、再生中の曲名表示、です。

ディレクトリ(アルバム)選択のユーザインターフェースが自作MP3プレーヤの生命線と考えられるので、別ページにまとめました。

本体(HOST)

ケースはタカチのGB225-40G。埋め込み式電池ボックスをはじめて使ってみた。タカチのLD-2Gです。

Cappuccinoについて

Strawberry Linuxの自信作のようです。Arduinoを意識したネーミングですが、Arduinoの経験が無いので比較ができません。
難点を挙げるならば
  • SPI1の位置。Cool Connectという規格らしいが、ボードのどちらかのサイドに出してほしかった。
  • microSDソケットの位置。ボードの端ぎりぎりに実装されているので、ケースに収めるとメモリカードの出し入れがやりにくいです。ソケットを少しボードの外に突き出すような形で実装できなかったのだろうか?

結果

  • 本体側のTWE-liteによる待機は今のところ安定している。本格稼働から7日過ぎた今もコントローラを起動すると本体も起動します。
  • 問題は本体のバックアップバッテリがどの程度もつか。半年ぐらいもってくれるとうれしいが。
    最初の電池交換を2018/01/18に行った。5ヶ月もったことになる。(2018/01/21追記)
    コントローラからの起動は今も快調に動作しています。(2019/04/14追記)
  • 起動時にポップノイズが2,3発発生する。起動プロセスが複雑なためかもしれない。ケース内スペースに余裕があるのでミュート回路を付けるかも。

コントローラ リメイク

  • 最初に作成したコントローラは画面が小さくて見にくいので、再作成した。表示機にはTG12864Eを使用。
  • このLCDはIOが多いので、TWE-LiteではIOピンが微妙にたりません。キーマトリックスにするなど工夫すれば何とかなりそうではありますが、手持ちのIOエキスパンダ(microchip/MCP23017)を使ってみた。
  • LCDが動作しているとTWE-Liteの通信が不安定になるようで、これも手持ちの2SK4019をLCDのローサイドSWとしました。
    コントローラの起動直後とボタン押下時に本体(HOST)からの応答があるまでLCDをオフにしています。画面がちらつきますが気になるほどではありません。
  • TWE-Liteのソースを公開しなければ意味がないですが、例のSDKの利用規程「お客様がソースコードを改変して、これを公開することは可能ですが、公開時に東京コスモス電機にご一報ください」が気になり公開してません。ごめんなさい。

  • タカチのPF-13-4-9に収めた。(ジャズトランペット奏者 Miles Davisのアルバム選択を表示している)
MP3プレーヤのページに戻る トップページに戻る