| 
ラズパイは美味しいか?(その17):デジタルフォトフレーム編
 PCオーディオの行く末にあれこれ迷いながらも、現状三通りもの構成があるのでそれぞれを定常的に聴くのは時間的にも難しく、どうしてもお気に入りの仕掛けが中心となってしまう。ラズパイについて云えば3Bと3B+の2台あるのだが、使うとしてもほぼ片方のみ。いずれラズパイ4も購入するであろうことから今回はオーディオ的なことではなく、休眠している状態のラズパイ3B+をちょこっと有効利用することを考えてみた。
 
 我が家には結構前から「デジタルフォトフレーム」と呼ばれる画像紙芝居機があって、撮り貯めた写真をランダム表示させて見るのにそこそこ重宝している。ただディスプレーサイズが7インチと小さいこと、写真の枚数に制限があることなど多少の不満もあった。家人からもせっかく旅行などで撮ったたくさんの写真をデジタルフォトフレームで見たいとリクエストをもらっていた。17時半~19時半に自動でランダム(シャッフル)に表示する設定で夕食の準備などの間にチラ見しているという使い方である。このため、相当昔のフィルム写真もネガからすべてデジタル化してある。
 
 さて、ディスプレーが大きく容量もあるもの、という前提で探してみたが、案外とニーズに応えてくれそうな新しめの製品がない。意外と廉価なのは良いのだがせいぜい1000枚程度の容量しかなかったり、ランダム表示ができなかったり、、、果ては毎回頭から同じ写真が表示されてしまうというようなものであったり。ネットで検索してみてもこれは、というものにどうしても行き当たらなかった。
 
 改めてラズパイでこんなことくらい簡単にできそうだ、と思い至って考えてみると確かにHDMIでディスプレー出力可能なので写真表示などアプリを探せば朝飯前じゃん? この用途で使うためのマイクロSDカードを作っておけば音楽再生用と切り替えられるし。(ただし、マイクロSDカードは小さいので差替えは実は面倒なのだが)
 
 ラズパイのアプリを検索してみると、デジタルフォトフレーム用途に打ってつけのもの(
feh
というアプリ)もあって早速やや得意げに?作業に入る。ここはシンプルにRaspbian Buster DesktopをOSとして使用する。で、OS環境を作って、写真表示用アプリをインストール。テスト的にランダム表示させてみてもおっけ~、おっけ~。さてさて、時間による自動起動は、自動停止は、、、とその先を考えていく。もちろんキーボードやマウスなど接続したくないし、基本操作介入無しでやりたい。
 
 ところが多少ぐぐってみても、自動電源オンとなるとラズパイ単体だけではどうやら簡単には出来そうにもない。唯一シンプルで何とかなりそうに思えたのは、市販タイマーによる電源オンの仕組み(当節はかなり便利な電源タイマーがある!)を利用すること。これならば、写真表示用アプリがラズパイのパワーオン後自動起動して表示を開始してくれさえすれば問題なさそう。アプリ起動のシェルを作成し、それをスタートアップアプリとして登録して置けば良いはず、とWindows環境的な頭で思考してみたが、はてさて具体的にはどうやるのかな。参考例はあるもののどれを試してみてもどうもうまく行かないのだ。この辺りはLinuxという括りだけで情報を検索しても無理なようだし、またRaspbianであってもBuster以前の方法とは異なっているようで、そのまま真似ても自動起動してくれない。思った以上に試行錯誤、苦労してやっと自動起動させることに成功した(注記1)。
 
 やれやれと思ったところで次の躓きが、、、電源オン、アプリ起動、写真ランダム表示開始までは良いのだが、今度は数分経つと画面が真っ暗に。あ~、これはディスプレーの省エネ設定か? そりゃそうだ、と思い直してRaspbian Busterの設定項目を探すのだが、どこにもそんなものはない。れれ? 普通のデスクトップ操作でディスプレーの省エネ設定を解除できないんだ!?
 
 ま、この辺りはWindowsほど機能満載ではないんだろうなとは思うのだが、こんな単純なことでも正解の設定に辿り着くにはちょっと苦労。アプローチの参考となる情報はあるのだが、その通りにやってもこれもうまく行かないのだ。おそらくはネット上の情報は最新のBusterに基づくものではないと思われ、微妙に内容が違ってしまっているので、その点を修正しなければならない。結局ここはどこにどういう設定を入れれば良いのか、実際のBusterのシステムファイルを確認しながら行わねばならなかった。やれやれだが、そこもクリアーできた(注記2)
 
 これでやっと数万枚の写真を電源オンだけで延々とランダム表示させる機能が完成。なお、画像については最近のものは解像度が高いため、1枚のサイズが大きくてこのままでは大変な量になってしまうので、ディスプレーの(縦の)解像度に合わせて一括でリサイズを実施した(これはWindowsアプリで行った)。これをUSBメモリに収めて写真フォルダーとする。ただ枚数が多いため、起動後表示が始まるまではやや時間が掛かるのは仕方ないか。
 (2020年1月14日追記:時間短縮を図る設定などを加えた(注記4)。
 
 で、停止は? タイマーで時刻によってオフすることはできるのだが、一般的なラズパイではそのやり方は推奨ではない。正常にシャットダウンさせてから電源を切る必要がある。理論的に考えれば、時刻指定の「shutdown -h xx:xx」のコマンドを発行すればよいはず、、、その後タイマーで電源オフか。
 
 だが、目的と用途から考えると、タイマーで17時30分に自動起動して2時間後に停止すれば良いので、ここは一番単純な経過時間後のシャットダウンコマンドで良いのではないか? と考えて実験してみると全くこれで問題ない。これもシェルを作成してラズパイ起動時に発行させるようにした。(注記3)
 
 一応これでラズパイ版デジタルフォトフレームが完成した。基本的にラズパイとディスプレーだけで操作介入不要だが操作する場合はSSHで行えば良いだろう。まぁ無理してラズパイでやるほどのものでもないとは思いつつ、従来の7インチディスプレーのデジタルフォトフレームと比較すれば格段にきれいだし収容写真枚数も飛躍的に増えているので一応の成果としておこう。
 
 (注記1)自動起動のシェルと実行権限付与 「chmod 755 /home/pi/Startup/startphoto.sh」
 「/etc/xdg/lxsession/LXDE-pi/autostart」へこの起動シェルを追記する。下記2行は起動シェルの内容。
 sleep 10
 feh -Y -x -q -D 5 -Z -F -z -r /media/pi/PHOTO/Library
 ・fehが写真表示プログラムでインストール必要。設定オプションは見様見真似で、、、
 ・PHOTOはUSBメモリのボリューム名
 ・Libraryは写真フォルダー
 
 (注記2)ディスプレー省エネモードの解除
 「/etc/xdg/lxsession/LXDE-pi/autostart」へ以下を追記する(OSにより異なる)。
 @xset s noblank
 @xset 0 off
 @xset -dpms
 
 (注記3)120分時間経過後にシャットダウンするシェル「/home/pi/Startup/stopphoto.sh」
 「/etc/xdg/lxsession/LXDE-pi/autostart」へこの停止シェルを追記する。下記2行は停止シェルの内容。
 sleep 7200
 sudo shutdown -h now
 
 (おまけ)適宜止めたい時は、iPADなどからSSHでログインして手動にてシャットダウンする。出来ることなればボタンなどのワンプッシュで止めたいのだが、、、
 
 (注記4)表示開始までの時間短縮の設定を追加、また開始画像も表示するようにシェルを変更した。
 echo Feh Started
 sleep 10
 feh --startup-at /media/pi/PHOTO/Library/Start.JPG -f /home/pi/filelist -Y -x -q -D 5 -Z -F -z -r /media/pi/PHOTO/Library (これは一行)
 echo Feh Ended
 sleep 10
 
 (2020年1月15日追記:更に表示開始時間の短縮を図る)
 ラズパイ3B+のUSB 2.0インターフェースではI/Oがかなり遅いためUSBメモリでの運用は止め、マイクロSDカード上に写真ライブラリを置くこととした。このためsambaをインストールしてメインPCから適宜写真ファイルを追加出来るような環境とした。起動シェルにおけるfehコマンドは下記に修正。これでほぼ納得できるようになった。
 feh --startup-at /home/pi/PHOTO/Library/Start.JPG -f /home/pi/filelist -Y -x -q -D 5 -Z -F -z -r /home/pi/PHOTO/Library (これは一行)
 
 
 4way構成の設定備忘録(2019年12月4日更新)設定値
 
 
                    
                      
                        | 項目 | 帯域 | 備考 |  
                        | Low | Mid | Mid-High | High |  
                        | 使用スピーカー ユニット
 | - | Sony SUP-L11
 | Sony SUP-T11
 | Accuton C51-286
 | Scan Speak D2908
 | - |  
                        | スピーカーの 能率(相対差)
 | dB | 97 (+4) | 110 (+17) | 93 (+0) | 93 (+0) |  |  
                        | DF-65の 出力設定
 | dB | +1.2 | -10.0* | +1.7 | +3.8 |  |  
                        | マスターボリューム アッテネーション
 | dB | -3.0 | -3.0 | -6.0 | -3.0 |  |  
                        | パワーアンプでの GAIN調整
 | dB | -6.0 | -12.0 | -6.0 | -12.0 |  |  
                        | スピーカーの 想定出力レベル
 | dB | 89.2 | 85.0 | 82.7 | 81.8 |  |  
                        | クロスオーバー 周波数
 | Hz | pass ~
 500
 | 500 ~
 1400
 | 1400 ~
 2500
 | 4000 ~
 pass
 | Low Pass ~
 High Pass
 |  
                        | スロープ特性 設定
 | dB/oct | flat-48 | 48-24 | 24-18 | 24-flat | Low Pass High Pass
 |  
                        | DF-55 DELAY 設定
 | cm | -7.0 | -37.0 | +30.0 | +30.0 | 相対位置と 測定ベース
 |  
                        | 極性 | - | Norm | Norm | Norm | Norm | MPD 環境下
 |  
                        | DF-55 DELAY COMP (Delay自動補正)
 | - | ON | 自動補正する |  
                        | DF-55デジタル出力 (Full Level保護)
 | - | OFF | 保護しない |  |