Select Your Language

免責事項

  • 本サイトの情報の利用、内容、サービスによって、利用者にいかなる損害、被害が生じても、著者は一切の責任を負いません。ユーザーご自身の責任においてご利用いただきますようお願いいたします。

    本サイトで頒布している基板およびキットは、技術者、またはそれに準ずる電気的知識をお持ちの電子工作ファンの方のためのものです。一般のオーディオファンの方のためのものではありません。
    また、頒布基板およびキットは、いかなる条件でも動作を保証するものではございませんので、あらかじめご了承ください。

    電子工作では、火傷、感電、火災などの可能性があります。十分に注意をして作業して下さい。

    営利目的のご使用は認めておりません。 記事の転載や、基板・キットの商用利用の方は、ご連絡ください。学生やサークルの学習目的でまとめてご購入する場合は特別価格でご提供させていただきます。
無料ブログはココログ

スポンサー

« 最もローコストなMPD+AirPlayシステムの構築方法(2) Volumio + RaspberryPi | トップページ | 頒布再開いたします »

2014年1月 4日 (土)

volumioに操作ボタンをつける

年を越した連載記事になってしまいました。

最もローコストなMPD+AirPlayシステムの構築方法(1)
最もローコストなMPD+AirPlayシステムの構築方法(2)  の続きです。

本日は、Raspberry Pi のGPIOを使って、操作ボタンをつけてみようと思います。

GPIOとはGeneral Purpose Input Output の略で、簡単に言うとマイコンの入出力ピンのこと。 入力として使ったり出力として使ったり、シリアル通信やPWMに使うことができるピンもあります。 機能を切り替えて使えるポートのことです。 

Rasp20 

volumioはとても便利で高音質ですが、操作はplay / stop ですら、ネットワーク上から行なわなければなりません。 これはMPD全般に言えることです。 しかし、多くのメーカー製のネットワークプレーヤーでは操作ボタンが付いています。 画面も付いています。

画面までつけるのはちょっと骨の折れる作業ですので、とりあえずは操作ボタンを用意しましょう。

 

Raspberry PiのI/Oはこちらにまとまっています。

そして、そのI/Oを操作するライブラリも各種用意されています。

操作する言語は、C、C++、シェルスクリプトなどなど色々な方法があるのですが、どうもRaspberry PiでのI/O操作はPythonが多いようです。 「パイソン」と呼びます。

Pythonはスクリプト言語ですので、Perl cgi やjavaスクリプトのように、動作させながらちょこちょこと編集していけるので割とお気楽です。 C言語のようにコンパイルする必要がありません。 

とは言っても、私はこの言語を使ったことがありませんでした。 ということで、google検索にて参考にできる優良ソースを探します。 Raspberry Pi はユーザー数がとても多いので情報も沢山あります。 ありすぎて、どれを参考にするか迷うほど。

目をつけたのは、これです

ただし、そのまま使用しようとしても、volumioとの相性なのか自動起動に登録したときに、うまく動作しませんでした。 ということで少し改変させて頂いています。

pythonはスクリプト言語ということでCPU負荷が気になる方も多いと思います。 実際に動作させた状態でスレッドの負荷をみて見ると、0.3% 0.0%を繰り返していて、ほぼ問題のない負荷でした。 メモリ使用量は1.1%と意外と多いです。 pythonが大きなライブラリを持っている為でしょうか。

 

 

■GPIOライブラリの登録

まずは、sshでRaspberry Pi に接続します。

  sudo apt-get update
  sudo apt-get -y install python-rpi.gpio python-daemon

 

python-rpi.gpioがpythonスクリプトからGPIOを使うためのライブラリです。 一緒にpython-daemonもインストールします。 後で使うことになります。

少し時間がかかりますが、無事にインストールが終わったら次へ進みます。

 

 

■操作ボタンのスクリプトを作る

参考にした元ソースを改変したものがこちら。 -> mpd_ctrl2.py 
これをRaspberry Pi に転送します。

  cd /home/volumio
  wget nw-electric.way-nifty.com/blog/files/mpd_ctrl2.py

 

次にパーミッションを変更して実行できるようにします。

  chmod +x /home/volumio/mpd_ctrl2.py 

 

上記スクリプトは「mpc」というMPDのクライアントソフトへ命令を出しています。 mpcはvolumioに標準で入っていて、コマンドラインからMPDを簡単に操作できるようになっています。 便利ですね。 ちょっとだけ例をあげますと、

mpc play     :再生開始

mpc next     :次の曲へ

mpc volume 90 :ボリュームを90%に設定

という具合です。 

 

 

■操作ボタンを作る 

Rasp22  

P1 headerにボタンを接続します。 この写真は、初期テスト中でボタンは2つしか付いていません。 

 

Rasp21  

こちらがハードウェアの回路図です。 プルアップ抵抗は3.3Vへ接続しておきます。 

GPIOのプルアップ・レジスタをイネーブルして内蔵プルアップを使えば 3.3Vへのプルアップ抵抗は必要なくなります。 

その方法は、いたって簡単。 

GPIO.setup(pin, GPIO.IN, pull_up_down=GPIO.PUD_UP)

とするだけです。 詳しくは上記ソースコードをご覧下さい。

 

 

■スクリプトの自動実行 

実行は、

  sudo /home/volumio/mpd_ctrl2.py 

 

とするだけです。

これを、起動時に自動で実行するには、rc.localに登録しておきます。 先日も書きましたが、volumioは /etc/rc.local を起動時に上書きしますので下記のようにします。

/var/www/_OS_SETTINGS/etc/rc.local     に下記の1行を加える。

  /usr/bin/python /home/volumio/mpd_ctrl2.py & /dev/null 2>&1

 

実は、参考にしたスクリプトのままですと、自動実行させると、何故かすぐに落ちてしまう現象があって悩みました。 mpd_ctrl2.py はデーモン化して実行するようにしています。 理由はよく分かりませんが、これでうまくいきました。 

以上で完了です。 

 

Raspberry Pi が起動したら、Play/Pauseボタンを押してみてください。 PlayListに登録された楽曲が再生できるはずです。 楽曲の登録やPlayList編集、その他の設定はWEB-UIから行なって下さい。 

赤外線リモコンに対応させるというのアリでしょうね。  よりいっそうメーカー製のネットワークプレーヤーに近づくような気がします。

 

 

 

 

現在、一番上の写真のように Wave IOというUSB-DDC基板を接続しています。 

このDDCはUSB Audio class 2.0に対応していまして、アシンクロナス転送ができます。 つまり、Wave IO上のクロックがマスタークロックとして動作します。 そしてI2S接続でDACへデータを転送すると、マスタークロックの精度やジッターは、Wave IO基板上のクリスタルに依存するようになります。 スタンドアロン volumio と合わせると、 

 Low-Jitter
 Bit Perfect
 no PC
 no NAS
 no DISC
 no network ( LAN / Wi-Fi )

という環境が割と簡単に実現できます。 

まあ、私自身、まだI2S接続のDACを組み上げていないので、そこまでの環境ではないです。 こういうシステムもあるのだな、と皆様に知っていただきたいというだけです。

 

 

 

にほんブログ村 PC家電ブログ ピュアオーディオへブログ村ランキングに参加してみました 
他の方の記事も興味深いものがあります。


« 最もローコストなMPD+AirPlayシステムの構築方法(2) Volumio + RaspberryPi | トップページ | 頒布再開いたします »

PCオーディオ」カテゴリの記事

Raspberry Pi」カテゴリの記事

コメント

 超えるハードルが何個?いくつもの山もあるので、
先が遠いですが、なかなか面白そうな物ですね。

基本中の基本からしてわかっていないのですが、
キーボードはUSB接続でしょうね。たぶん。
そうでなければ、呪文(コマンドと言うそうな)を打てませんし。

まるはさん

コンポジットビデオ、もしくはHDMI接続して画面をだせば、USBキーボードを接続してコマンドを入力することもできると思います。

私は、sshという通信を使って接続しています。 telnetの暗号化版って感じです。
パソコンが1台あれば、RaspberryPiにはLANを接続してコマンドを打つのでUSBキーボード&画面はいりません。 

RaspberryPiって、教育目的で中学生くらいからを対象にしているらしいのです。 それにしては敷居が高いですよね。 イギリスの中学生は、この程度の事はみな出来るって事なのでしょうか?
日本でも小学校からコンピューターの授業があるとか、我々の時代では考えもしない事になっているのかもしれません。 


ところで、RaspberryPi と MUSES01 オペアンプが同じような価格っていうのも感慨深いものがありますね。  
買うならどっちだ!?   と無意味に問いかけてみます。

>パソコンが1台あれば、RaspberryPiにはLANを接続してコマンドを打つのでUSBキーボード&画面はいりません。

なるほど。肝心なことが欠落していました。
1台に1個のモニターというのが頭にありました。


>RaspberryPiって、教育目的で中学生くらいからを対象にしているらしいのです。
となると私は小学生レベルです。

まるはさん

いやいや、今の小学生、レベル高いっすよ。
会社の人の子供が、4歳で親のスマホでメールが打てるようになって、5歳現在、iPad miniの設定やらゲームやら、親より詳しいって。。。

あれ? 幼稚園か? 5歳って。

ちなみにメニュー画面に出てくるような漢字は、ほぼ読めるらしい。
さすがにUNIXコマンドとかはわからないだろうけど、教えたら出来ちゃいそうで恐い。

たまたま通りかかった古い記事に失礼します。たかじんさんが4歳でメール打てる子について書いていたのでコメントさせて頂きました。
私は小さい頃はベビーカーに乗りながら普通の鉄道雑誌を普通に多分理解して読んでいたそうですw なので駅とかで字とかが読めてたとか言ってたと思います。
親が寝る前に本を読んでくれた時も手を抜いて飛ばしたらここ飛ばしたと指摘していたそうです。
携帯は流石にまだツーカーホン時代だったので大したことが出来るわけではないですが、家にはセガがIBMと共同開発したメガドライブ搭載PCのテラドライブ(OSはIBM DOS)が昔あったっぽい感じなのでそれがもし残っててその小さい頃に触ったしていたら今以上に色々PCでやってたかもしれないですね。
今でもDOSは触れますし、ubuntuもデュアルブートでPCに入れたりwindows10を早速で試したりPCを自作やノートPCの分解したり、スマホを弄ったり(root化やカスタムROM焼等)と色々やってはいますがw

長文失礼しました。

ugambow さん

機会さえ与えてあげれば子供が学んでいく勢いはとめられないですね。

コメントを書く

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: volumioに操作ボタンをつける:

« 最もローコストなMPD+AirPlayシステムの構築方法(2) Volumio + RaspberryPi | トップページ | 頒布再開いたします »

サイト内検索(new)

2023年3月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31