リモコンでインターネットラジオを聴く


前回はリモコンでGPIOを制御する方法を紹介しました。
今回はリモコンを使ってインターネットラジオを聴く方法を紹介します。
raspberryでインターネットラジオを聴く方法はたくさんのページで紹介されています。
大分して、以下の2つの方法が紹介されています。
  1. mplayerを使用する
  2. mpd+mpcを使用する
今回はmpd+mpcを使用します。

raspberryをmpdサーバにする際には外付けUSB-DACを使いますが、このときの注意点は以下のページを参考にさせていただきまし た。
Raspberry PiをMPD(Music Player Daemon)サーバにする

mpdを使ってインターネットラジオを聴く方法は以下のページを参考にさせていただきました。
Raspberry Pi で遊ぶ (6) ―MPD でラジオを聴く―
mpdでネットラジオ(shoutcast) を聞いてみる

【STEP1】必要なパッケージのインストール

まず最初にRaspberry側にmpcクライアントをインストールします。
$ sudo apt-get install mpc

Raspberryをmpdサーバにする場合は、さらにmpdサーバをインストールします。
$ sudo apt-get install mpd

また、mpc側で音量を変える場合、mpdサーバ側の「/etc/mpd.conf」を一部変更する必要があります。
#mixer_type                      "software"
 ↓これをコメントアウトしないとmpcで音量変更ができない。
mixer_type                      "software"

一通り設定が終わったら以下のコマンドでインターネットラジオが聞けることを確認してください。
httpで始まるURLはShoutcastなどのインター ネットラジオのURLならば、何でもかまいません。
$ mpc add http://80.86.106.136:80
$ mpc play

【STEP2】リモコン入手

使用するリモコンは前回と同じ「RW-PCM37BK」です。

【STEP3】lircのインストールとリモコンの学習

lircのインストールとリモコンの学習も前回と同じです。

【STEP4】回路図

回路図も前回と同じです。
ただし、今回はLEDは使わないのでLEDの接続なくてもかまいません。

【STEP5】定義ファイル

以下の定義ファイルを「/home/pi/mpc_lirc」のファイル名で作成してください。
button=XXXXの部分は「/etc/lirc/lircd.conf」に定義したボタン名称、config=XXXXの部分はそのボタン が押されたときに、irexecに渡る文字です。
begin
 button = ButtonA
 prog   = irexec
 config = mpc clear;mpc add 'http://80.86.106.35:9000';mpc play
 config = mpc clear;mpc add 'http://173.193.20.157:7200';mpc play
 config = mpc clear;mpc add 'http://50.117.121.163:80';mpc play
 config = mpc clear;mpc add 'http://80.86.106.136:80';mpc play
end

begin
 button = ButtonB
 prog   = irexec
 config = mpc clear;mpc add 'http://173.193.20.157:7200';mpc play
end

begin
 button = ButtonC
 prog   = irexec
 config = mpc clear;mpc add 'http://50.117.121.163:80';mpc play
end

begin
 button = ButtonD
 prog   = irexec
 config = mpc clear;mpc add 'http://80.86.106.136:80';mpc play
end

begin
 button = POWER
 prog   = irexec
 config = sudo shutdown -h 0
end

begin
 button = Stop
 prog   = irexec
 config = mpc clear;mpc stop
end

begin
 button = Play
 prog   = irexec
 config = mpc toggle
end

begin
 button = VolUp
 prog   = irexec
 config = mpc volume +10
end

begin
 button = VolDown
 prog   = irexec
 config = mpc volume -10
end

定義ファイルを作成後、irexecを起動します。
$ irexec /home/pi/mpc_lirc

irexecをデーモンで起動する場合は以下のようになります。
$ irexec -d /home/pi/mpc_lirc

Raspberry起動時にirexecをデーモンで起動する場合は「/etc/rc.local」に以下を追加してください。
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
  printf "My IP address is %s\n" "$_IP"
fi
irexec -d /home/pi/mpc_lirc
printf "irexec Started"

【STEP5】動作確認

リモコンのAボタンを押すとラジオの再生が始まります。
もう一度リモコンのAボタンを押すと、ラジオのチャンネルが変わります。
リモコンのB、C、Dボタンを押しても、ラジオのチャンネルが変わります。
リモコンのVolUP、VolDownボタンで音量調整、Playボタンで一時停止・再開、Stopボタンで停止、POWERボタンで raspberryをシャットダウンします。

以下の様に「mpc」コマンドの後に「--host IP_ADDRESS」を付けると、別サーバにインストールされているmpdの操作をすることができます。
私はもっぱら以下の方法でディスクトップマシンにインストールされているmpdを操作 しています。
begin
 button = ButtonA
 prog   = irexec
 config = mpc --host 192.168.xxx.yyy clear;mpc --host 192.168.xxx.yyy add 'http://80.86.106.35:9000';mpc --host 192.168.xxx.yyy play
 config = mpc --host 192.168.xxx.yyy clear;mpc --host 192.168.xxx.yyy add 'http://173.193.20.157:7200';mpc --host 192.168.xxx.yyy play
 config = mpc --host 192.168.xxx.yyy clear;mpc --host 192.168.xxx.yyy add 'http://50.117.121.163:80';mpc --host 192.168.xxx.yyy play
 config = mpc --host 192.168.xxx.yyy clear;mpc --host 192.168.xxx.yyy add 'http://80.86.106.136:80';mpc --host 192.168.xxx.yyy play
end

begin
 button = ButtonB
 prog   = irexec
 config = mpc --host 192.168.xxx.yyy clear;mpc --host 192.168.xxx.yyy add 'http://173.193.20.157:7200';mpc --host 192.168.xxx.yyy play
end

begin
 button = ButtonC
 prog   = irexec
 config = mpc --host 192.168.xxx.yyy clear;mpc --host 192.168.xxx.yyy add 'http://50.117.121.163:80';mpc --host 192.168.xxx.yyy play
end

begin
 button = ButtonD
 prog   = irexec
 config = mpc --host 192.168.xxx.yyy clear;mpc --host 192.168.xxx.yyy add 'http://80.86.106.136:80';mpc --host 192.168.xxx.yyy play
end

begin
 button = POWER
 prog   = irexec
 config = sudo shutdown -h 0
end

begin
 button = Stop
 prog   = irexec
 config = mpc --host 192.168.xxx.yyy clear;mpc --host 192.168.xxx.yyy stop
end

begin
 button = Play
 prog   = irexec
 config = mpc --host 192.168.xxx.yyy toggle
end

begin
 button = VolUp
 prog   = irexec
 config = mpc --host 192.168.xxx.yyy volume +10
end

begin
 button = VolDown
 prog   = irexec
 config = mpc --host 192.168.xxx.yyy volume -10
end

リモコンのAボタンにはRockのラジオ局、BボタンにはPopsのラジオ局、CボタンにはTop10のラジオ局などを集めれば、好きな ジャンルのラジオを聴くことができます。