余っている液晶TVをラズベリーパイでフォトフレーム化(デジタルサイネージ化)した

入手したのは現時点で最新のRaspberry Pi 3 Model b+です。

ラズベリーパイ初体験で、ラズベリーパイとはどんな物かも知らない状態からのスタートだったのですが、OSを起動してみると普通にパソコンみたいでびびりました。

クロミウムというブラウザがプリインストールされているのですが実用的な速度で動作する為、ラズベリーパイ単体でググってラズベリーパイを目的の設定に変えていけるという、超実用的なデバイスだと感じます。

私は普段LINUXコマンドを打つ事が全く無いので知識がなく、ブラウザから直接コピペ出来るのは非常に助かります。須藤(sudo)って誰やねん?ってレベルです。

これをパソコンとして使えるか?と問われると普段使用しているアプリケーションの有無的に答えは当然「否」なのですが、「リビングのTVにそこそこ優秀なWebブラウズ機能を追加したい」とかNAS化させたいくらいの目的なら十分実用的ですし、そういう目的での購入動機も全然ありだと思います。

クロミウムはGoogle ChromeのベースになったブラウザらしくGoogle各種サービスとの親和性は抜群なのですよね。

Googleに魂を売っている人なら十分にパソコンとして使えるかもしれません。

なんでこんな本題に関係のない事を書いてるのかというと、私が触ってみた感じRaspberry Pi 3 Model b+のパフォーマンスは良好で、もし何かの自作に挫折したとしても腐る事は無い良デバイスだと感じたからです。興味があるならとりあえず買えばいいと思う。

やりたかったこと

タイトルにも書いてますが実家用に、余っている液晶TVに延々スライドショーを流したかったんですよね。

ざくっと実現したかった事は以下です。

  • 指定時刻に起動
  • 起動後自動的にスライドショー開始
  • 指定時刻にシャットダウン

オフラインで自動的に起動終了する堅牢なデジタルサイネージ(電子看板)みたいなのを作りたかったのです。

いやね、電子看板が欲しかったわけじゃないんですよ。
「何もしてないのに壊れた」ってよくある話じゃないですか。それを回避する為にマウス、キーボードすら取っ払ったデジタルサイネージ的端末を作りたかったのです。

課題その1(ラズベリーパイは自動起動出来ない)

指定時刻起動はパソコンでもBIOSが対応してないと無理な機能なのですが、そもそもラズベリーパイにはBIOSなどなく単体では実現不可なのです。

これに関してはタイマー付きコンセントで(1000円くらい)対応しました。

タイマーコンセントで通電を切ってシステムを落とす、というのは流石に乱暴なのでcronで指定時刻にシャットダウンコマンドを実行して、数分間Delay時間を設けてタイマーコンセントで通電を切る、という運用にしたかったのです。
(例えばシステムのシャットダウンは19:00で19:15に通電を切るみたいな)

課題その2(オフライン環境だと時計が狂う問題)

オフライン環境で動かす前提だとラズベリーパイは前回終了時の時刻で起動する、という問題(仕様)があり時計がズレてcronが正しい時刻に動かない事がわかりました。(オンライン環境だと起動直後にネットに繋ぎに行って時刻合わせを行なっているようです)

これを解決する為にRTCモジュールを追加購入しました。これは800円くらい。

参考情報など

ネットで調べると似たような事をやってる人は結構いたのですが、照度センサーと連動させたりクラウドで画像ファイルを同期させたりとか、かなり高度な事を紹介している方が多かったので、まるっと参考に出来るページはありませんでした。(部分部分参考にさせてもらってます)

下記で紹介する設定項目は一般的にはレベルが低すぎて、ブログ記事にするほどではないと思います^^;

ただ、自分には同じことを再現出来る自信がないので備忘録として記しておきます。

実際にやったこと

fehとxscreensaverのインストール

Easy Raspberry Pi Based Screensaver/Slideshow for Exhibitions/Store Front: 10 Steps

このページに書かれている事は私のやりたかった事と全体的には似ていました。以下のコマンドを拝借。

sudo apt-get install feh
sudo apt-get install xscreensaver

上記ページを参考にシェルスクリプトを作っておきます。

sleep 15 #this is probably optonal
feh -Y -x -q -D 5 -B black -F -Z -z -r /home/pi/画像/

UIプログラムを実行する場合はsleepで開始遅延を入れておいた方が無難っぽいです。

/home/pi/startup/startslide.sh
など、自分が分かりやすい場所にファイルを置きます。

Raspberry Pi 3Bのスリープモード解除

Raspberry Pi 3Bのスリープモード解除

「/etc/xdg/lxsession/LXDE/autostart」の場所Raspbianのバージョン?によって微妙に異なる?のかもしれません。

Raspberry Pi 3 Model b+では上記のページの通りでうまく設定できました。

起動時の自動実行

食堂ティータイム: RaspberryPi 起動したらプログラムが動いてほしい

UIプログラムの実行はログイン時に実行させた方がいいと思われるので「/etc/profile」に上記で作成したシェルスクリプトの呼び出しを記述します。

sh /home/pi/startup/startslide.sh

スクリプトにスリープを入れてるので「/etc/rc.local」への定義でも動作するかもですが、、、

自動シャットダウン(Cron)

crontab -e
00 19 * * * sudo shutdown -h now

上記の指定で19時にシャットダウンします。

RTCモジュールのインストール

「Raspberry Pi 3 (ラズパイ3)」 RTC 追加 │ Snow in Novemberのブログ(blog)

私が作りたい環境はオフライン前提でしたので「cronにNTPによるシステム時刻とRTCの時刻の更新を設定」の章以外を全て実行しました。

正直電子工作とか全く出来ない人間ですので、このモジュールを何処にどのように取り付けたらいいのかすら分からなかった(取説なし)のですが、Amazonの写真っぽく取り付ければokでした。(そんなんでいいのか^^;)

コンセントタイマー

ラズベリーパイは通電させた瞬間にシステムが起動するので、起動させたい時間を単純にOn時刻に設定すればよいです。

ただしOffに関しては、正常にシャットダウンが完了してから通電を切るべきです。なので上記cronで指定したシャットダウン時刻よりも数分遅れた時間をOff時間に設定すべきです。

こんな便利アイテムを使っちゃうと、昔からラズベリーパイで色々作ってる人から怒られそうですが^^;

しかしこれを導入すれば大型ディスプレイの待機電源も元から断てるので、私の実現したい事的にはベストマッチなアイテムでした。

まとめ

めちゃくちゃ使えそうなデバイスだったので1台目が届いた翌日には自分用にもう一台買ってました。

今回実現しようとした事は、Windows10が搭載されているスティックPCの方が手間暇かけずに実現出来たと思うのですが、価格、消費電力、安定稼働性などを考えると、ラズベリーパイの使用は適材適所だったかな、と思います。

via PressSync

投稿者:

aroooy

I am a systems engineer freelance. I love digital devices such as smart phones. I make the iOS app by using the spare time.

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください