投稿者
題名
*内容 入力補助画像・ファイル<IMG> youtubeの<IFRAME>タグが利用可能です。(詳細)
URL
sage

  • [19]
  • IrBerryDac + 液晶ディスプレイ

  • 投稿者:yosyos
  • 投稿日:2015年 1月12日(月)01時43分21秒
 
たかじんさんから、プレゼント付の仕様公開の要請があったので、
まずは概要をアップします。

市販のネットワークプレイヤーのように、アルバムジャケットを
どうしても表示したかったので作りました。
SPI液晶ディスプレイで、アルバムジャケット画像、アルバム名等
の表示をしています。

■ハードウェア
 Aitendo 2.2インチ液晶モジュール(240x320/SPI)[M-TM022-SPI]
 ⇒3.3VのSPI接続の液晶であれば何でも使えると思います。
  3インチ以上のSPI液晶であれば、画面レイアウトはもう少し楽
  になると思います。
  液晶ディスプレイと積まれているコントローラーICによって、
  初期化プロセスが違いますので、適宜変更する必要があります。

■接続(上記液晶モジュールの場合)
 ・SDO(MISO)→ GPIO 9(MISO)
 ・LED → RPIとは別に3.3Vを作っています。
 ・SCK → GPIO 11(SCLK)
 ・SDI(MOSI)→ GPIO 10(MOSI)
 ・D/C → GPIO 24
 ・RESET → GPIO 25
 ・CS → GPIO 8(E0)
 ・GND → Ground
 ・VCC → RPIとは別に3.3Vを作っています。
 ※SPI0(ゼロ)を使っています。

■導入したツール(主なもの)
 ・AdafruitのILI9340CのPythonドライバー
  →上記液晶はAdafruitのコンパチ(パクリ?)製品のようです。
 ・PIL(Python Imaging Library)→画像処理担当です
 ・daemon →デーモン化するために使っています
 ・os →ジャケット画像の有無を検査します
 ・codecs →mp3のタグ情報をS-JISからUTF-8に変換します
 ・telnetlib →telnet接続してmpdから情報を得ます

■プログラムの流れ
 1.液晶の初期化

 2.mpdにtelnetし "stats"コマンドの結果を取得

 3.上記結果を分析
  ・サンプリング周波数の取得
  ・ビット構成の取得

 4.mpdにtelnetし "currentsong"コマンドの結果を取得

 5.上記結果を分析
  ・ファイル名からファイル形式を取得(mp3/m4a/flac)
  ・画像ファイル(Folder.jpg)の有無をチェック
  ・アーティスト名、アルバム名、曲名を取得

 6.取得結果を液晶ディスプレイに表示

 2~6を数秒置きに繰り返し、前と状態が変わっている場合のみ
 液晶を更新するようにしています。


■準備するもの
 ジャケット画像を音楽ファイルを格納しているディレクトリーの
 中に、Folder.jpg または folder.jpg として置きます。

■もろもろ
当初 FBTFTというフレームバッファー用のドライバーを使おうと
思っていました。これを使うとブートメッセージも出てかっこ良
かったのですが、リアルタイム表示になるためCPU負荷が大きく
必要な時だけSPIで画像を表示することにしました。
ただ、これでも384kHzでリサンプリングするような設定にすると
ジャケット画像を処理している時に音が飛びます。
全部をCで作り直したいと思っていますが、スキルと時間が...

年末に、Raspberry PI B+を買って準備をしていたかいがありました。
ありがとうございます。


スレッド一覧

  1. 製作例 ご自由に投稿(70)
スレッド一覧(全1)  他のスレッドを探す  掲示板に戻る

*掲示板をお持ちでない方へ、まずは掲示板を作成しましょう。無料掲示板作成