Raspberry PIでsamba立ち上げはとても簡単ですね。え、たったこれだけ?
aitendo 3.5 inch LCD (waveshare)とIrberryDACもしくはSabreBerry+ をRaspberry pi Bで両立させる (インターネットラジオ)
0.イントロ ダクション
aitendo 3.5 inch LCD とIRberryDACもしくはSabreBerry+をRaspberry pi Bで両立させることができました。何故こんなことをやろうと思ったかというと、Volumioとかはよくできたソフトなのですが、使うにはパソコンやスマートフォンが必要で、これが意外とめんどくさい。曲や局を変えたいだけなのにいちいちパソコンやアプリケーションを立ち上げなければならない。パソコンをつけっぱなしにすればよいが、それでは電気代が嵩む、こんなところです。単に私が面倒くさがりなだけですね^_^;
尚、Raspberry pi のタイプごとに使用するimageや設定方法が異なりますのでご注意ください。
動画の音が悪いのは撮影したスマホのせいです(^^;。生ではちゃんとハイレゾの音がでてますw。タッチパネルも全く問題なく動作してますので、Raspberry pi の応用範囲がグッと広がるのではないかと思います。以下、かなりざっとですが、今回辿った手順を備忘録の代わりにメモしておきます。
1.ハードウェアの設定
Raspberry pi Bでは、I2Sの信号線が全てP5ピンヘッダから出ていますし、LCDのPINソケットは背が高いので、LCDを取付けても隙間からうまく配線を引き出すことができます。Raspberry pi 2 や B+の場合、SabreBerry+を使う場合のピン配置は、こちらを参照してください。
基盤にLCDを取付けた状態で、基板面からLCDまでの高さが十分にとれずにLCDが浮いてしまうかもしれません。やり方はいろいろありますが、例えば、基板の裏面側のピンの端子からハンダづけで配線を引き出してもよいでしょう。Raspberry pi 2 や A+ B+の場合はこの方法でしょうか。Raspberry pi Bが新品であればP5のピンヘッダを基板の裏面側に立ててLCDとの干渉を避けるという作戦もあります。少し強引ですが、秋月電子通商で売っている安価なリボンケーブルを使うという手もあります。但しリボンケーブルのコネクタは10ピンなので2ピン余ります。私は100均で買った筐体との関係でリボンケーブルを用いる方法を選択しました。LCDを基板に直付けせず、筐体にスペースがあるのであればこういう選択肢もあります。
電源5VはP5ピンヘッダから取り出してIrberryDAC に供給します(もちろんIrberryDAC の外部電源端子から供給してもOKです)。上の動画ではRaspberry pi Bのはんだ面の5VPINからIrberryDAC用の電源を引き出しています。
LCD側のPINの仕様はこちらを参考にしました。PIN番号:3, 5, 7, 8, 10, 12, 13, 15, 16は未使用です。特にBITCLOCK(PCM_CLK)と当たる12PINが未使用なのでRaspberry pi 2やA+、B+とかでも大丈夫です。上のビデオではRaspberry pi 2を使っています。Adafruitの2.8inch piTFTもピン配置を見る限りいけそうですね。
2.ソフトウェアの設定
2-1.Raspberry PI 2 , B+ ,A+, B共通
まず、こことかここに記載されているリンク先からイメージファイルをダウンロードし、これを書き込んだSDカードを作成します。
続いて、このページの手順に従い、Raspbianの起動時にIRberryDACのモジュールが組み込まれるように設定します。HyfiberryDacのモジュールですが問題ありません。具体的にはこんな感じです。
/etc/modulesを開き、snd_bcm2835の先頭に#を付ける(コメントアウトする)。
/boot/config.txtを開き、dtoverlay=hifiberry-dacを追記する。
※尚、残念ながらこのモジュールを組み込むとXWindowの動作が不安定になりました(DACの動作には問題ありません)。どうもLCDのドライバが怪しいです。あと、ファームウェアのアップデート(rpi-update)を行うと音が鳴らなくなってしまいました。とにかくハマりどころ満載なので、そういうのが好きな方以外は、なんでもかんでも機能させようと、あまり欲張り過ぎないほうが無難です^^; 今後のアップデートを待ちましょうw
※↑ waveshareのWIkiにアップされているイメージを使い、sudo apt-get update したところ解決しました。hifiberry-dacを組み込んだRaspberry Pi2でもXWindowは正常に動作しています(2015.9.18)。
/etc/modulesのsnd_bcm2835の記述をコメントアウトしないようにするとうまくいくようです。HifiberryDacのページではsnd_bcm2835の記述をコメントアウトするように指示していますが、コメントアウトしなくても今のところ問題なく動作しています(2015.9.28)。
続いて、/etc/asound.confを作成して以下を書き込みます。
pcm.!default {
type hw card 0
}
ctl.!default {
type hw card 0
}
続いて、sudo reboot で再起動。
最後にドライバがちゃんと組み込まれていることをaplay -lで確認します。
これでRaspberry pi からIRberryDACにI2S信号が出力されるようになります。
2-2.Raspberry PI B+ ,A+, B
※Raspberry PI Bでamazonに掲載されているこちらのimageを試したところ、XWindowが正常に動作しました。尚、ダウンロードの際に画面にエラーがでますが、気にせず突き進んで下さい)。IRberryDACからもちゃんとハイレゾの音が出ています。モジュールの組み込みは上の方法ではなく、こちらに従って行います。この方法でセットアップした場合、コントロールパネルを使用する際、タッチパネルの操作がおかしくなりますので、次のコマンドでキャリブレーションを行ってください(下記のコマンドは連続する一文です)。キャリブレーションの詳細はこちらに詳しく記載されています。
sudo TSLIB_FBDEVICE=/dev/fb1 TSLIB_TSDEVICE=/dev/input/touchscreen ts_calibrate
今年の3月にRaspberry pi 2を買ってから、旧いBの使い道に迷ってましたが、これでよい利用方法が見つかりました(2015.9.8追記)。Raspberry pi 2は動作は早いですが、ソフトウェアの安定性はまだBのほうが上ですね。
3.Volumeコントロールの設定
IrberryDACに搭載されているPCM5102Aはハードウェアボリュームの機能が無いのでalsamixerが使えません。そこでSOFTVOLを動作させます。
そのためには以下のようにします。
ファイル /etc/mpd.confを開く。
sudo nano /etc/mpd.conf
この行↓の先頭の♯を外して有効にする。
mixer_type "software"
リブートする。
sudo reboot
尚、ボリュームの調節は例えば次のようにします。
mpc volume +50
mpc volume -20
mpcのコマンドを使いこなしたい場合は例えばこちらを参照してください。
尚、後述するコントロールパネルをインストールすれば、タッチ操作でボリューム調節ができるようになりますのでコマンドによる制御はあくまで動作確認用です。
4.自動ログイン設定
こちらの手順に従い、自動ログイン設定をしておきますと、いちいちIDとパスワードを入力しなくて済むので便利です。
5.コントロールパネルのセットアップ
続いて、adafruitのサイトで紹介されているコントロールパネルをセットアップします。英語ですが、読みやすいですし、しっかり書かれていますので、私でも理解できました。具体的にはこのようにします。
6.自動起動設定
6-1.shのスクリプトを作成する。スクリプト名は例えばstartpanel.shとします。
#!/bin/sh
mpc play
wait
cd /home/pi/pi-radio
sudo python radioplayer.py
6-2./etc/rc.localを次のように編集します。exit 0 の直前に記述します。
sudo nano /etc/rc.local
mpc clear
cd /var/lib/mpd/playlists/
mpc load radio.m3u
cd /home/pi/pi-radio
sh startpanel.sh
wait
尚、radio.m3uファイルは前の記事を参考にして下さい。
7. 無線LAN自動接続設定
こちらを参考にして設定します。
/etc/wpa_supplicant/wpa_supplicant.conf
/etc/network/interfaces
を設定します。/etc/wpa_supplicant/wpa_supplicant.confの一例です。
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="########"
psk="########"
proto=WPA
key_mgmt=WPA-PSK
pairwise=TKIP
auth_alg=OPEN
}
ちなみに、eth0は有線LAN、wlan0やwlan1は無線LANを示してます。無線のみで接続する場合、eth0の行はコメントアウトしたほうが安定する場合があります。/etc/network/interfacesの一例です。
auto lo
iface lo inet loopback
auto eth0
allow-hotplug eth0
#iface wlan0 inet manual
iface eth0 inet dhcp
auto wlan0
allow-hotplug wlan0
#iface wlan0 inet manual
iface wlan0 inet dhcp
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
#auto wlan1
#allow-hotplug wlan1
#iface wlan1 inet manual
#wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
以上でセットアップ完了です。うまくできていればリブート後、コントロールパネルが開きます。
8.ネット接続時の問題
Raspberry pi のネット接続機能の立上りのタイミングによってIRberryDACがうまく起動しないことがあります。5.自動起動設定のスクリプトにwaitを入れているのはそのためです。sleepを設定してもよいかもしれません。WiFI接続がうまくいかない時はWiFiドングルの品質が原因であることも多いです。私が試したドングルの中ではこちらが最も安定しました。
9.ソフトウェアキーボードの登録
X-Windowがうまく起動している場合はソフトウェアキーボードをスタートパネルに登録しておくと便利です。具体的にはmatchbox-keyboardというソフトウェアをダウンロード、コンパイル、インストール、これをスタートパネルに登録します。設定はこちらやこちら参照してください。以下のような起動スクリプトを作成します。
sudo nano /usr/bin/toggle-matchbox-keyboard.sh
#!/bin/bash
#This script toggle the virtual keyboard
PID=`pidof matchbox-keyboard`
if [ ! -e $PID ]; then
killall matchbox-keyboard
else
matchbox-keyboard -s 50 extended &
fi
これに忘れずに実行権限を設定します。
sudo chmod +x /usr/bin/toggle-matchbox-keyboard.sh
デスクトップ定義ファイルを設定します。
sudo nano /usr/local/share/applications/toggle-matchbox-keyboard.desktop
[Desktop Entry]
Name=Toggle Matchbox Keyboard
Comment=Toggle Matchbox Keyboard
Exec=toggle-matchbox-keyboard.sh
Type=Application
Icon=matchbox-keyboard.png
Categories=Panel;Utility;MB
X-MB-INPUT-MECHANSIM=True
以上で登録完了です。
10.スタートパネルへのradio-playerアイコン登録
X-Windowがうまく起動している場合、次のようにファイルを編集することで、スタートパネルのアクセサリにradio-playerのアイコンを登録することができます。これでタッチパネル操作でいつでもradio-playerを起動させることができるようになります。この辺を参考にしてみてください。
su pi
sudo nano /usr/local/share/applications/pi-radio.desktop
[Desktop Entry]
Name=Toggle pi-radio
Comment=Toggle pi-radio
Exec=/home/pi/pi-radio/startpanel.sh
Type=Application
Icon=matchbox-keyboard.png
Categories=Panel;Utility;MB
X-MB-INPUT-MECHANSIM=True
尚、アイコンはお好みで変更してください。アイコンの画像は次のフォルダに保存されています。
/usr/share/pixmaps
続いて、忘れずにstartpanel.shに実行権限を設定します。
sudo chmod +x /home/pi/pi-radio/startpanel.sh
11.デスクトップへのアイコン(ショートカット)の登録
デスクトップにradio-playerパネルのアイコンを置きたい場合は 10.で作ったファイルを以下のようにしてコピーするだけです。
sudo cp /usr/local/share/applications/pi-radio.desktop /home/pi/Desktop
デフォルトでインストールされているアイコンのファイルは次のディレクトリに格納されていますので、上記と同じように/home/pi/Desktopにコピーすればデスクトップにアイコンを作成することができます。
/usr/share/applications
例えば
sudo cp /usr/share/applications/lxterminal.desktop /home/pi/Desktop
とするとデスクトップにLXDEターミナルのアイコンが作成されます。
12.今後の展開
タッチパネルLCDとI2Sが両立したことで、色々と応用が効きそうです。先日の時計機能を組み合わせても面白いかもしれません。まずはpythonをしっかり勉強したいと思います。例えば時計のHPからshスクリプトを実行してプレーヤ操作画面を表示させるとか。例えばこのページなどが参考になりそう。
今回はIrberryDACを使いましたが、I2S入力のハイレゾDACであれば他のDACでも同じことができるはずです。例えば、こういうのとかこういうのとか。
ピンの接続図ぐらいは載せておいたほうがよさそうですね。時間のあるときにやります。ピン配置
13.改善予定
・MPCRADIOのパネルで最後の局までめくった際に先頭に戻るようにする。Webベースでパネルを作りなおしても面白いかも。そうすればマウスポインタも動かせる。
・パネルから時計、時計からパネルとダイレクトに表示切り替えができるようにしたい。これもWebベースで実現か。
・時計のWebページに更新ボタンを設ける。
<注意!>以上の工作ではAC電源を扱いますので、感電や火災等のリスクが常に伴います。本稿の内容を再現される方は、ある程度、電子工作について十分な経験と知識がある方を想定しています。本稿を再現されて事故等が発生しても当方は一切、責任を負いませんので、あくまで自己責任にてお願い致します。
Raspberry Pi デスクトップのカスタマイズ
MPDとLCDでRaspberry PIをKIOSK端末化
Adafruitのサイトに掲載されているこれを試してみました。
ふーむ、ツールはPIのSDカードに母艦PCでコピーし、PIで/bootから下記のディレクトリにコピればよいのか。
まずは母艦PCでSDカードの/bootにpi-radioのディレクトリ名でツールを保存しておこう。PI側は以下の手順でセットアップ。
まずはMPDとMPCのインストール
sudo apt-get install mpd mpc
続いてディレクトリを作り、
mkdir /home/pi/pi-radio
/bootに移動し、
cd /boot
pi-radioディレクトリをコピー。
cp -r pi-radio /home/pi/
続いてコピー先のディレクトリに移動し、
cd /home/pi/pi-radio
ここにあるスクリプトradioplayer.pyを実行する。
sudo python radioplayer.py
おお、動いたぞ!
備忘録的にmpdの使い方をメモっておきます。
/var/lib/mpd/playlists/にプレイリストファイル(ファイル名は何でもよい)を作る。ここではファイル名をradio.m3uとする。
sudo nano /var/lib/mpd/playlists/radio.m3u
中身は例えばこんな感じにする。
#Venice Classic Radio Italia
http://109.123.116.202:8010/
#FM - BOSSA NOVA HITS
http://205.164.62.22:10068
#Linn radio Classical
http://89.16.185.174:8004/stream
#Linn radio Jazz
http://89.16.185.174:8000/stream
#Caffe de Paris
http://184.173.142.117:15628/stream
ラジオ局のURLはhttp://www.shoutcast.com/の画面からダウンロードしたファイルの中身を覗いて作ればよい。
あとはmpcのコマンドで動かせばよい。
mpc clear
mpc load /var/lib/mpd/playlists/radio.m3u
mpc play
mpc playlist
インターネットラジオの簡単なテストは下記のようにして簡単にできます(Linn Radio)。
$ mpc add http://89.16.185.174:8003/stream
$ mpc add http://89.16.185.174:8000/stream
$ mpc add http://89.16.185.174:8004/stream
$ mpc play
今回は以下のサイトを参考にさせて頂きました。
Raspberry PI で正確な時計+天気予報
ずいぶん前にArduinoで天気予報が表示される時計を作りましたが、安いLCDが簡単に手に入るようになりましたので、Raspberry PI でもう少し大きなLCDを使った時計を作りたいと思っていました。
そんな矢先、ネットサーフィンしてたら私がやりたいと思っていたことを既に実現されている方がいらっしゃいましたので、早速、私も作ってみました。ブログ主の方、本当にありがとうございます<(_ _)>。こちらの記事です。Arduinoの時もそうでしたがParseの実装は細かい調整が必要なので老眼の私には有り難いです。
[Raspberry pi] LCDディスプレイを取り付けて天気予報付き置き時計にする | o24ブログ
わたしの3.5インチLCDは前回書いたaitendoのものですが、たぶんほとんど同じものではないかと思います。問題なく再現できました。
Raspbianがきちんとセットアップされていれば、まずこちらを実行してchromeとかをインストールし、
sudo apt-get install chromium-browser ttf-mscorefonts-installer unclutter x11-xserver-utils
続いて、
sudo nano /etc/xdg/lxsession/LXDE-pi/autostart
として下記の内容を記述するだけです。※若干、ディレクトリ名が違う場合があります。
@lxpanel --profile LXDE-pi
@pcmanfm --desktop --profile LXDE-pi
@xscreensaver -no-splash
# CHANGED
#@xscreensaver -no-splash
# BEGIN ADDED
# Chromium parameter references:
# http://peter.sh/experiments/chromium-command-line-switches/
@rm -rf ~/.cache/chromium
@sed -i 's/"exited_cleanly": false/"exited_cleanly": true/' ~/.config/chromium/Default/Preferences
@chromium --kiosk --no-first-run --start-maximized --user-data-dir http://util-o24.parseapp.com/weather
# Hide mouse
@unclutter
# Disable screensaver
@xset s off
# Disable screensaver blanking
@xset s noblank
# Disable DPMS (Energy Star) features
@xset -dpms
# END ADDED
尚、上記リスト中の
@rm -rf ~/.cache/chromium
@sed -i 's/"exited_cleanly": false/"exited_cleanly": true/' ~/.config/chromium/Default/Preferences
はChromium表示中に電源ブチした時にキャッシュに何も残らないようにするためのおまじないです。詳しくは例えばこちら。
天気予報の内容ですが、上記リストにある、http://util-o24.parseapp.com/weather の緯度/経度を自分が住んでいる地域に変更する必要があります。緯度/経度はここで調べれば簡単にわかります。
http://util-o24.parseapp.com/weather ですが、私はクラウド上の無料サーバに、自分が済んでいる地域に緯度/軽度を書き換えたものを作成しました。PaasのアプリケーションIDとjavaスクリプトキーは自分のものを使用してください。
また日本語が文字化けしないように、HTMLに下記のおまじないをいれておいたほうがよいかもしれません。
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
上記/etc/xdg/lxsession/LXDE/autostart の上から3行目までのみを残して他を削除すれば、全画面表示が解除されてRasPIはふつうのデスクトップ表示する状態に戻ります。
@lxpanel --profile LXDE-pi
@pcmanfm --desktop --profile LXDE-pi
@xscreensaver -no-splash
前回のブログで作成したインストールimageであれば、Pi2だけでなく、BタイプのPiでも全く問題なく動作します。電源を電池として無線LANで接続すれば、配線が外に出ないようにすることができ、実用的なインテリアとしても活用できます。
また上記HTMLを書き換えれば表示内容やレイアウトを変更してオリジナルのバリエーションを楽しむこともできます。例えばWebページの下記部分のカラーコードを変えるだけで簡単に表示色を変えることができます。
.night {
color:#F5F5DC;
background:black;
}
.noon {
color:#F0F8FF;
background:black;
}
またWebページの適切な場所に下記スクリプトを挿入することで時計画面からデスクトップに手動で戻るようにすることもできます。
<script type="text/javascript">
<!--
function closewin() {
window.opener = self;
window.close();
}
// -->
</script>
<a href="javascript:closewin();">閉じる</a>
Webページにインターネットラジオの操作パネルを表示させるボタンを設けても面白いかもしれません。但し、あまりWebページから自由な操作を可能にすると当然にセキュリティが甘くなりますので要注意です。
こんなに簡単に実用的なガジェットが作れるなんて、ほんとによい時代になりました。
aitendo の Raspberry PI 用の3.5inch LCD のセットアップ
色々、苦労し、たくさん勉強していろいろ書きましたが、結論はとてもシンプルになりました。
なんと下記リンク先からイメージをダウンロードしてSDカードに書き込むだけでOKです。
raspberry pi,raspberry pi B+,raspberry pi 2、全て同じイメージで動きます。本当になんの苦労もいりません。この数日は何だったんだーorz。
http://www.amazon.co.jp/dp/B00U6YCIT6?psc=1#productDetails
イメージはwin32diskimagerよりもこちらの方がオススメです。win32diskimagerは冗長エラーとか起こしやすいのであまり好きではありません。尚、右クリックして管理者権限で実行しないとドライブが表示されないのでそこだけ注意です。
以下の情報はあくまで参考です。折角勉強したので載せておきます。トラブった時の参考になるかもしれません^_^;
Setting up TonTec 3.5 Inch TFT using the fbtft driver | cooljc.me.uk
こちらも参考にさせて頂きました。