自宅でラジオの電波状況が悪い。
それでインターネットラジオを物色した。 見つけたのがこれだ!
ところがradikoに対応してないようだ!
PLANEX MZK-WDPR-R01
それでRaspberry Piが遊んでいるので、それを使って作ることにした。
|
1.ラジオ構築のベースは私のPaspberry Pi
これには下記が設定済だ!
・Raspberry Pi model B+
・Raspbian OSインストール
・日本語環境設定
・ディスプレー設定
・サウンドの出力先設定
・ネットワーク設定
・Bluetooth設定
・無線LAN設定
・X起動設定
・自動ログイン設定
nanoを閉じる:ctrl+x
保存:y
再起動:sudo reboot
・Raspberry Pi model B+
・Raspbian OSインストール
・日本語環境設定
・ディスプレー設定
・サウンドの出力先設定
・ネットワーク設定
・Bluetooth設定
・無線LAN設定
・X起動設定
・自動ログイン設定
2.次にラジオに必要なmplayerとrtmpdumpをインストール
・mplayer:SHOUTcast, simulradio.jp, radiko, らじる★らじるの再生に使用
・rtmpdump:radiko.jp、らじる★らじるの受信に使用
・他に:swftools,libxml2-utils
4.更に、ここhttps://gist.github.com/ihsoy-s/5292735からダウンロード(右端Raw→歯車→別名保存)して/home/pi/radioに置く
・play_radiko.sh:radiko.jp受信用のスクリプト
・play_nhk-radio.sh:らじる★らじる受信用のスクリプト
nanoを終了する ........ Ctrl + x
ファイルを保存する .... y(yes/no)
[enter]
7.最後にRaspberry Piにはスイッチがないので電源ON(バッテリーのスイッチ)でラジオが鳴るようにする
ここでもテキストエデターnanoを使って/etc/rc.localファイルを開き
'exit 0'の直前に'/home/pi/radio/play_nhk-radio.sh r1'を追加する
nanoを終了する ........ Ctrl + x
ファイルを保存する .... y(yes/no)
[enter]
ジャンク箱を探したら貰ったデスクトップ用のスピーカーがあった。
電源供給が必要、6Vだ!
これもジャンク箱、あった。
接続したら鳴った!と思ったら切れた!
スピーカーのACコネクタに触ると鳴る!切れる!
接触不良と思いシリコーンスプレーを吹き付けたら治った。
【使用方法】
1.放送選局:放送局毎のSDカードを選択してRaspberryPiに挿入
2.ラジオON:RaspberryPiとスピーカーのACアダプターをコンセントに接続、RaspberryPiが起動して1分後に鳴りだす
3.音声調整:スピーカーのボリューム
4.音声ON・OFF:スピーカーのスイッチ
5.選局は一旦RaspberryPi電源OFF後、SDカードを交換して再起動
6.ラジオOFF:RaspberryPiとスピーカーのACアダプターをコンセントから外す
・mplayer:SHOUTcast, simulradio.jp, radiko, らじる★らじるの再生に使用
・rtmpdump:radiko.jp、らじる★らじるの受信に使用
・他に:swftools,libxml2-utils
$ sudo apt-get update $ sudo apt-get install mplayer $ sudo apt-get install rtmpdump swftools libxml2-utils |
3.受信用スクリプト保存場所設定
ここでは/home/piに作るとして、piフォルダを開き、何もないところで右クリック→新規作成→radioと入力
ここでは/home/piに作るとして、piフォルダを開き、何もないところで右クリック→新規作成→radioと入力
4.更に、ここhttps://gist.github.com/ihsoy-s/5292735からダウンロード(右端Raw→歯車→別名保存)して/home/pi/radioに置く
・play_radiko.sh:radiko.jp受信用のスクリプト
・play_nhk-radio.sh:らじる★らじる受信用のスクリプト
5./home/pi/radio/play_nhk-radio.shはテキストエデターnanoを使ってを開き
$ sudo nano /home/pi/radio/play_nhk-radio.sh |
outdirを指定する
# parameter setting # pid=$$ date=`date '+%Y-%m-%d-%H:%M'` playerurl=http://radiko.jp/player/swf/player_3.0.0.01.swf # outdir="${XDG_CACHE_HOME}/radio/" outdir="/home/pi/radio/" playerfile="${outdir}/player.swf" keyfile="${outdir}/authkey.png" auth1_fms_file="${outdir}/auth1_fms_${pid}" auth2_fms_file="${outdir}/auth2_fms_${pid}" channel_file="${outdir}/${channel}.xml" mkdir -p ${outdir} |
nanoを終了する ........ Ctrl + x
ファイルを保存する .... y(yes/no)
[enter]
6.これで準備完了、下記をターミナルに入力して聞いてみる
/home/pi/radio/play_nhk-radio.sh r1 | NHK ラジオ第一 |
/home/pi/radio/play_nhk-radio.sh r2 | NHK ラジオ第二 |
/home/pi/radio/play_nhk-radio.sh fm | NHK FM |
/home/pi/radio/play_radiko.sh TBS | TBS |
/home/pi/radio/play_radiko.sh QRR | 文化放送 |
/home/pi/radio/play_radiko.sh LFR | ニッポン放送 |
/home/pi/radio/play_radiko.sh JORF | ラジオ日本 |
/home/pi/radio/play_radiko.sh INT | Inter FM |
/home/pi/radio/play_radiko.sh FMT | Tokyo FM |
/home/pi/radio/play_radiko.sh FMJ | J-WAVE |
/home/pi/radio/play_radiko.sh BAYFM78 | Bayfm |
/home/pi/radio/play_radiko.sh NACK5 | FM NACK5 |
/home/pi/radio/play_radiko.sh YFM | Fm yokohama |
7.最後にRaspberry Piにはスイッチがないので電源ON(バッテリーのスイッチ)でラジオが鳴るようにする
ここでもテキストエデターnanoを使って/etc/rc.localファイルを開き
$ sudo nano /etc/rc.local |
'exit 0'の直前に'/home/pi/radio/play_nhk-radio.sh r1'を追加する
# Print the IP address IP=$(hostname -I) || true if [ "$_IP" ]; then printf "My IP address is %s\n" "$_IP" fi play_nhk-radio.sh r1 exit 0 |
nanoを終了する ........ Ctrl + x
ファイルを保存する .... y(yes/no)
[enter]
8.ラジオを切るのも電源OFFだ!
9.これでNHK第一を聞くためのSDカードが完成、他の放送を聞くときはこれを修正するか、数枚の放送毎のSDカードを作る
やっぱりスピーカーが欲しい!
イヤフォンで聞いていたが、ラジオを繋がっていて動けない!
Bluetoothイヤフォンにしたら何処にでも行けるようになった。
ところが一日中なのでBluetoothイヤフォンのバッテリーがなくなくのだ!
ジャンク箱を探したら貰ったデスクトップ用のスピーカーがあった。
電源供給が必要、6Vだ!
これもジャンク箱、あった。
接続したら鳴った!と思ったら切れた!
スピーカーのACコネクタに触ると鳴る!切れる!
接触不良と思いシリコーンスプレーを吹き付けたら治った。
【使用方法】
1.放送選局:放送局毎のSDカードを選択してRaspberryPiに挿入
MicroSD | 放送局 |
Transcend32GBclase10 | Xwindow |
Transcend8GBclase4 | NHK第一 |
Transcend8GBclase4 | TBS |
無印8GBclase2 | FMヨコハマ |
2.ラジオON:RaspberryPiとスピーカーのACアダプターをコンセントに接続、RaspberryPiが起動して1分後に鳴りだす
3.音声調整:スピーカーのボリューム
4.音声ON・OFF:スピーカーのスイッチ
5.選局は一旦RaspberryPi電源OFF後、SDカードを交換して再起動
6.ラジオOFF:RaspberryPiとスピーカーのACアダプターをコンセントから外す
スマホをリモコンにする
SDカードの抜き差しで選局というのはやっぱり使い難い!
それでapacheとphpを利用してスマホリモコンをつくることにした。
それでapacheとphpを利用してスマホリモコンをつくることにした。
1.先ず、play_nhk-radio.shとplay_radiko.shをルートデレクトリーに置くことにした
/home/pi/rajio/から/usr/bin/へコピーする
2.バーミッションを忘れずに
これもスマホの「http://192.168.x.x/」から鳴るはずだが鳴らない!
/var/log/apache2/error.logをみたら
/home/pi/radio//auth1_fms_xxxx: Parmission denied
どうやら/home/pi/radio/に書き込めないと言っているようなのでバーミッションを「すべて」にしたら鳴った!
下記を入力する
<meta charset="UTF-8" />を入れないと日本語が文字化けする/home/pi/rajio/から/usr/bin/へコピーする
$sudo cp /home/pi/rajio/play_nhk-radio.sh /usr/bin/play_nhk-radio.sh $sudo cp /home/pi/rajio/play_radiko.sh /usr/bin/play_radiko.sh |
2.バーミッションを忘れずに
$sudo chmod 755 /usr/bin/play_nhk-radio.sh $sudo chmod 755 /usr/bin/play_radiko.sh |
3.ここから本題、apacheとphpをダウンロード&インストール
4.apatch2のデフォルトのユーザー名である「www-data」を「audio」グループに追加する
5.IPアドレスを調べる
表示された値の中にinet「192.168.x.x」がIPアドレスなので試しにスマホのブラウザに「http://192.168.x.x/」を入力して「It works!・・・・・」が表示されればOK
これはRaspberry PiにインストールしたApacheのドキュメントルートである「 /var/www/index.html 」のファイルが表示されている
$sudo apt-get install apache2 php5 $sudo reboot |
4.apatch2のデフォルトのユーザー名である「www-data」を「audio」グループに追加する
$sudo usermod -G www-data,audio www-data |
5.IPアドレスを調べる
ip a |
表示された値の中にinet「192.168.x.x」がIPアドレスなので試しにスマホのブラウザに「http://192.168.x.x/」を入力して「It works!・・・・・」が表示されればOK
これはRaspberry PiにインストールしたApacheのドキュメントルートである「 /var/www/index.html 」のファイルが表示されている
6./var/www/index.htmlを修正して試しに/home/pi/blueblocks/test.mp3ファイルが鳴らすindex.phpをつくる
index.phpをnanoで開き
下記を入力する
これがスマホの「http://192.168.x.x/」から鳴ればOK
$sudo nano /var/www/index.php |
下記を入力する
<?php exec("mplayer /home/pi/blueblocks/test.mp3"); ?> |
これがスマホの「http://192.168.x.x/」から鳴ればOK
7.次にTBS放送を鳴らすindex.phpをつくってみる
index.phpをnanoで開き
下記を入力する
$sudo nano /var/www/index.php |
下記を入力する
<?php exec("play_radiko.sh TBS"); ?> |
これもスマホの「http://192.168.x.x/」から鳴るはずだが鳴らない!
/var/log/apache2/error.logをみたら
/home/pi/radio//auth1_fms_xxxx: Parmission denied
どうやら/home/pi/radio/に書き込めないと言っているようなのでバーミッションを「すべて」にしたら鳴った!
8.テストOKなので選局のためのindex.phpをつくる
nanoが日本語非対応なのでleafpadを使う
$sudo leafpad /var/www/index.php |
下記を入力する
<?php if(isset($_GET['id'])){
$id=$_GET['id'];
exec("killall mplayer");
if($id=="stop")exec("killall mplayer");
if($id=="1")exec("play_nhk-radio.sh r1");
if($id=="2")exec("play_nhk-radio.sh r2");
if($id=="3")exec("play_nhk-radio.sh fm");
if($id=="4")exec("play_radiko.sh TBS");
if($id=="5")exec("play_radiko.sh QRR");
if($id=="6")exec("play_radiko.sh LFR");
if($id=="7")exec("play_radiko.sh JORF");
if($id=="8")exec("play_radiko.sh INT");
if($id=="9")exec("play_radiko.sh FMT");
if($id=="10")exec("play_radiko.sh FMJ");
if($id=="11")exec("play_radiko.sh BAYFM78");
if($id=="12")exec("play_radiko.sh NACK5");
if($id=="13")exec("play_radiko.sh YFM");
?>
<html>
<head>
<title>Raspberry Pi Radio</title>
<meta name="viewport" content="width=device-width">
<meta charset="UTF-8" />
</head>
<body bgcolor="white" link="white" alink="yellow" vlink="white">
<center>
<table style="color:white" border="8" cellspacing="1" cellpadding="5">
<tr bgcolor="red">
<th> Raspberry Pi Radio </th> </tr> <tr bgcolor="black"> <th> <a href="index.php?id=1">NHK第一</a> </th> </tr> <tr bgcolor="black"> <th> <a href="index.php?id=2">NHK第二</a> </th> </tr> <tr bgcolor="black"> <th> <a href="index.php?id=3">NHK FM</a> </th> </tr> <tr bgcolor="black"> <th> <a href="index.php?id=4">TBSラジオ</a> </th> </tr> <tr bgcolor="black"> <th> <a href="index.php?id=5">文化放送</a> </th> </tr> <tr bgcolor="black"> <th> <a href="index.php?id=6">ニッポン放送</a> </th> </tr> <tr bgcolor="black"> <th> <a href="index.php?id=7">ラジオ日本</a> </th> </tr> <tr bgcolor="black"> <th> <a href="index.php?id=8">InterFM897</a> </th> </tr> <tr bgcolor="black"> <th> <a href="index.php?id=9">TOKTO FM</a> </th> </tr> <tr bgcolor="black"> <th> <a href="index.php?id=10">J-WAVE</a> </th> </tr> <tr bgcolor="black"> <th> <a href="index.php?id=11">bayfm78</a> </th> </tr> <tr bgcolor="black"> <th> <a href="index.php?id=12">NACK5</a> </th> </tr> <tr bgcolor="black"> <th> <a href="index.php?id=13">FMヨコハマ</a> </th> </tr> <tr bgcolor="blue"> <th> <a href="index.php?id="stop">STOP</a> </th> </tr>
</table>
</center>
</body>
</html>
|
IPアドレスの固定化
Raspberry Piラジオをスマホリモコンで使っているが時々呼び出しのhttp://192.168.x.xが変動する。
そのために、その都度IPアドレスを確認する必要があるのだ!$ ip a |
そこでIPアドレスを固定することにした。
現在のIPアドレスは192.168.x.x、このxを固定化する。
自宅のルーターはNEC Aterm WR8160N STモデル、http://192.168.0.1でこれの管理画面を表示する。
--------------
ユーザー;admin
パスワード;xxxxx
--------------
表示されたトップ画面の詳細設定→LAN側設定で下記を確認する、
・IPアドレス:192.168.x.1
・ネットマスク:255.255.255.0
・アドレス割当パターン:自動指定
・割当先頭アドレス:(指定なし)
・割当数:32
自宅のルーターはNEC Aterm WR8160N STモデル、http://192.168.0.1でこれの管理画面を表示する。
--------------
ユーザー;admin
パスワード;xxxxx
--------------
表示されたトップ画面の詳細設定→LAN側設定で下記を確認する、
・IPアドレス:192.168.x.1
・ネットマスク:255.255.255.0
・アドレス割当パターン:自動指定
・割当先頭アドレス:(指定なし)
・割当数:32
上記はIPアドレスが次のように割当てられているということなので
・192.168.x.0:ネットワークアドレス
・192.168.x.1:ルーターのIPアドレス
・192.168.x.2~192.168.x.33:DHCPにより割当てられたIPアドレス32個
・192.168.x.34~192.168.x.254:固定IPアドレスとして利用可能アドレス
・192.168.x.255:ブロードキャストアドレス
・192.168.x.0:ネットワークアドレス
・192.168.x.1:ルーターのIPアドレス
・192.168.x.2~192.168.x.33:DHCPにより割当てられたIPアドレス32個
・192.168.x.34~192.168.x.254:固定IPアドレスとして利用可能アドレス
・192.168.x.255:ブロードキャストアドレス
固定するIPアドレスは192.168.x.34~192.168.x.254の中から192.168.x.100にした。
ここで注意Raspbianのバージョンによって設定方法が違うのでバージョン確認をする。
結果はWheezy、この場合/etc/network/interfacesを開く
(Raspbian Jessieの場合は/etc/dhcpcd.conf)
このファイルの赤字部分を修正する。
結果はWheezy、この場合/etc/network/interfacesを開く
(Raspbian Jessieの場合は/etc/dhcpcd.conf)
$ sudo nano /etc/network/interfaces |
このファイルの赤字部分を修正する。
auto lo iface lo inet loopback # iface eth0 inet dhcp iface eth0 inet static address 192.168.x.100 netmask 255.255.255.0 gateway 192.168.x.1 allow-hotplug wlan0 # iface wlan0 inet manual iface wlan0 inet static address 192.168.x.100 netmask 255.255.255.0 gateway 192.168.x.1 # wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf iface default inet dhcp |
nanoを閉じる:ctrl+x
保存:y
再起動:sudo reboot
ボリュームをつける
いま、いろんなスピーカーを試しているが、ボリュームなしのスピーカーもあるのだ!
そんな訳でボリュームを追加することのした。
下記に赤字の部分を追加(削除もあるが省略)
そんな訳でボリュームを追加することのした。
$sudo leafpad /var/www/index.php |
下記に赤字の部分を追加(削除もあるが省略)
<?php if(isset($_GET['id'])){ $id=$_GET['id'];
if($id=="1"){exec("killall mplayer");exec("play_nhk-radio.sh r1");}
if($id=="2"){exec("killall mplayer");exec("play_nhk-radio.sh r2");}
if($id=="3"){exec("killall mplayer");exec("play_nhk-radio.sh fm");}
if($id=="4"){exec("killall mplayer");exec("play_radiko.sh TBS");}
if($id=="5"){exec("killall mplayer");exec("play_radiko.sh QRR");}
if($id=="6"){exec("killall mplayer");exec("play_radiko.sh LFR");}
if($id=="7"){exec("killall mplayer");exec("play_radiko.sh JORF");}
if($id=="8"){exec("killall mplayer");exec("play_radiko.sh INT");}
if($id=="9"){exec("killall mplayer");exec("play_radiko.sh FMT");}
if($id=="10"){exec("killall mplayer");exec("play_radiko.sh FMJ");}
if($id=="11"){exec("killall mplayer");exec("play_radiko.sh BAYFM78");}
if($id=="12"){exec("killall mplayer");exec("play_radiko.sh NACK5");}
if($id=="13"){exec("killall mplayer");exec("play_radiko.sh YFM");}
if($id=="v1")exec("amixer set PCM 10%");
if($id=="v2")exec("amixer set PCM 20%");
if($id=="v3")exec("amixer set PCM 30%");
if($id=="v4")exec("amixer set PCM 40%");
if($id=="v5")exec("amixer set PCM 50%");
if($id=="v6")exec("amixer set PCM 60%");
if($id=="v7")exec("amixer set PCM 70%");
if($id=="v8")exec("amixer set PCM 80%");
if($id=="v9")exec("amixer set PCM 90%");
if($id=="v10")exec("amixer set PCM 100%");
if($id=="stop")exec("killall mplayer");}
}
?>
<html>
<head>
<title>Raspberry Pi Radio</title>
<meta name="viewport" content="width=device-width">
<meta charset="UTF-8" />
</head>
<body bgcolor="white" link="white" alink="yellow" vlink="white">
<center>
<table style="color:white" border="8" cellspacing="1" cellpadding="5">
<tr bgcolor="red">
<th> Raspberry Pi Radio </th> </tr> <tr bgcolor="black"> <th> <a href="index.php?id=1">NHK第一</a> </th> </tr> <tr bgcolor="black"> <th> <a href="index.php?id=2">NHK第二</a> </th> </tr> <tr bgcolor="black"> <th> <a href="index.php?id=3">NHK FM</a> </th> </tr> <tr bgcolor="black"> <th> <a href="index.php?id=4">TBSラジオ</a> </th> </tr> <tr bgcolor="black"> <th> <a href="index.php?id=5">文化放送</a> </th> </tr> <tr bgcolor="black"> <th> <a href="index.php?id=6">ニッポン放送</a> </th> </tr> <tr bgcolor="black"> <th> <a href="index.php?id=7">ラジオ日本</a> </th> </tr> <tr bgcolor="black"> <th> <a href="index.php?id=8">InterFM897</a> </th> </tr> <tr bgcolor="black"> <th> <a href="index.php?id=9">TOKTO FM</a> </th> </tr> <tr bgcolor="black"> <th> <a href="index.php?id=10">J-WAVE</a> </th> </tr> <tr bgcolor="black"> <th> <a href="index.php?id=11">bayfm78</a> </th> </tr> <tr bgcolor="black"> <th> <a href="index.php?id=12">NACK5</a> </th> </tr> <tr bgcolor="black"> <th> <a href="index.php?id=13">FMヨコハマ</a> </th> </tr> <tr bgcolor="blue"> <th>
Vol.
<a href="index.php?id="v1">1</a>
<
<a href="index.php?id="v2">2</a>
<
<a href="index.php?id="v3">3</a>
<
<a href="index.php?id="v4">4</a>
<
<a href="index.php?id="v5">5</a>
<
<a href="index.php?id="v6">6</a>
<
<a href="index.php?id="v7">7</a>
<
<a href="index.php?id="v8">8</a>
<
<a href="index.php?id="v9">9</a>
<
<a href="index.php?id="v10">10</a>
</th> </tr>
<tr bgcolor="blue">
<th> <a href="index.php?id="stop">STOP</a> </th> </tr>
</table>
</center>
</body>
</html>
|
阿部君
返信削除かこむ会発行次回 7/1 です
差し支え無かったら、こんな話しのネタを
提供願います
2016.05.04
ラズパイでインターネットラジオを作る記事を探していて、貴Webページに辿り着きました。上記の記事を参考に(というか、そのまま)やってみました。NHK第一で試験をしていますが、うまく聴けるときと、聴けないときがあるのです。
返信削除何か、ノウハウ的なものがあれば教えていただきたく思います。
ちなみに9.のoutdirは指定してもしなくても状況は変わりませんでした。
よろしくお願いします。
私もNHKは接続がうまくいかなかったりよく切れますね!
返信削除民放の方は大丈夫ですけど・・・