MP3プレーヤ第9作

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

更新: 2017/03/28, 2017/04/01, 2017/04/08, 2017/06/25


概要

TWE-liteの実験環境

製作に先立って無線モジュールの実験を左図のような環境で行った。
  • 2個のTWE-liteの内、一方には純正の書込器(TWELITE R)を接続。
  • もう一方のTWE-liteには手持ちのUSBシリアル変換器とプッシュボタン2個を接続。このUSBシリアル変換器はインターフェース誌の記事のものをそのまま使用。TWE-lite用に改造したところは全くない。
  • 両者をWindows7 PCのUSBに接続。
  • PCでは、デバッグ情報の表示にTera Term、開発したソフトのインストールのために純正書込ソフト"TWE-liteプログラマ"、ソフトの開発にTWESDK、などを実行。

本体(HOST)の構成

  • 全体をコントロールするマイコンにはNPXのLPC11U35を使用。これはCQ出版社のmbed×デバッガ!一枚二役ARMマイコン基盤に付属のマイコンボードを使用。ただしソフトの開発にmbedを使わないで、NXP社のネイティブ環境LPCXpressoを使った。
  • LPC11U35はコントローラのOLEDに表示するイメージデータをI2CでTWE-Liteに転送。TWE-Liteは無線でイメージデータをコントローラに送信。
  • コントローラのボタン操作はTWE-Liteを通じて、LPC11U35のGPIO入力ピンにそのまま伝えられる。
  • TWE-liteにプッシュボタンをつないで、本体でも操作をできるようにした。TWE-liteにつないだのはLPC11U35のIOが足りないため(ただし、これが後述のようなトラブルを生んだ。)
  • 出力にNJM4580のオーディオアンプを追加した。これはステレオのAUXに接続したとき、CDやFMで聴くときとボリュームレベルを合わせるため。

本体(HOST)の回路

紆余曲折を経て最終的な回路は左図のようになった。実験しながらの製作なので、最終的に無意味な部分や機能していない部分がある。
  • VS1011まわりの回路と実装はマスカットさんの作例を大いに参考にしました。
  • またVS1011の出力周りの回路はVSLI Solution社のこちらの情報も参考にした。
  • NJM4580の回路はこちらの情報を参考にした。
  • TWE-Liteまわりの回路については特に参考にした製作例はない。そのためかトラブルに悩まされることとなった。
    • 「コードレスアイロン」(国内の大手電機メーカー製)が、アイロンをスタンドに置いた瞬間に強いノイズを発してそれをTWE-Liteが拾ってしまうことがわかった。当初はTWE-Liteがリセットしてしまうほどだった。
    • 左図にようにTWE-liteの電源直近にパスコンを置くことでリセットすることは無くなった。
    • それでもアイロンの発するノイズによってプッシュボタンを押したかのような動作を勝手にしてしまいます。
    • というわけで結局、プッシュボタンが接続されているTWE-Liteの入力ピンはすべて無効にしてしまった。こうすることでノイズを拾うことは無くなった。
    • TWE-Lite内蔵のプルアップ機能を当てにしないで、プルアップ抵抗を外付けしたらよいのかもしれない。しかし、この現象に気がついたのはケースに組み込んだあとだった。プッシュボタンを前面パネルに残したまま完成としました。
    • もう一つ。アイロンとは無関係に前面パネルのプッシュボタンを操作していると、TWE-LiteのI2Cがフリーズ(?)してしまうようで、LPC11U35からのイメージデータ転送ができなくなります。これも困った現象でした。

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

これも紆余曲折を経てこうなった。
  • TWE-Liteのマイコン機能を利用して操作ボタンの入力、OLEDへの出力を行っている
  • OLEDは100x16の単色。ストロベリーリナックス(注文番号:#27342)にて購入。
  • ここでもTWE-Liteの入力ピンにプッシュボタンをつないでいるが、本体(HOST)とは違ってほとんどノイズを拾いません。バッテリ運用だからか?
  • OLEDへの電源供給を遮断できるようにしたつもりだったがうまく機能しない。再生中はコントローラの電源自体を切っておけば良いので、このトラブルの深追いはしなかった。

TWE-liteのプログラム

  • ベンダーがソースを公開しているリモコン通信アプリ(App_IO)のバージョン1.2.6を改造して自分のプログラムとした。
  • 本体とコントローラのソースは共通化し、それぞれの独自のコードは#if defined(mp3_09_HOST) または #if defined(mp3_09_CTRL)で囲んでいる。
  • このようなコードを公開して良いか不明なので、公開していません。
    以下加筆2017/06/25
    SDKの利用規程に「お客様がソースコードを改変して、これを公開することは可能ですが、公開時に東京コスモス電機にご一報ください」とあります。どうしようか、ちょっと煩わしいですね。

LPC11U35のプログラム

LPCXpresso v6.1.0_164で開発。これは「mbed×デバッガ!一枚二役ARMマイコン基盤」に付属のもの。ソースはこちら。CMSISv2p00_LPC11Uxx、LPC11Uxx_Driver_Libと組み合わせてコンパイルします。
SDカードのFATファイルシステムにFatFs R0.10aを使用している。

コントローラ

ケースはタカチのPF15-3-10。このケースは電池ボックスを外付けするとちょっと格好悪い。
タクトスイッチも1個150円ぐらいするものですが、硬くて少々使いにくいです。通販で買ったので仕方ないですが。

コントローラの機能は、ディレクトリ/MP3ファイルの選択、再生開始・停止、音量の調整、再生中の曲名表示、です。

コントローラの画面1

一画面に4項目(ディレクトリまたは曲名)を表示してそこから選択します。1項目あたりの表示は単純に切り詰めているため、異なる項目の表示が同じになってしまうことがあります。短縮名を定義できるような仕掛けは組み込んでない。
また4項目の内のどれが選択された状態かの管理を本体(HOST)がしているので、ページ内での選択の変更ですら本体(HOST)との通信が発生する。

コントローラの画面2

日本語の表示には美咲フォント(8x8ドット)を使いました。

コントローラの画面3

再生中は大きいフォントで曲名を表示します。

コントローラの内部

本体(HOST)

ケースはタカチのPF20-6-13。上記のように前面パネルのボタンは機能していない。本体にもOLEDを付ければ良かったかもしれない。

インプレッション

  • TWE-Liteのプログラミングは予想以上にたいへんだった。プログラム構造が階層化されていないですし。
    上記のようなトラブルもあったりしたので、TWE-Liteは純粋に他のマイコンの周辺装置として扱うのがよいのかもしれない。(SWや表示装置を繋がない)
  • TWE-Liteの通信は強いノイズがなければ安定していて、コントローラの表示が化けるようなことはありません。
MP3プレーヤのページに戻る トップページに戻る