ブロックチェーン・AI・システム開発の株式会社INDETAIL

【完成編】Raspberry Piで作ろう!手作りスマートミラー

2016.08.09
tacck

20160808_05

札幌大通りのビアガーデンも始まり、いよいよ夏本番となった札幌です。
今年もビアガーデンに通いたいtacckです。

さて、いよいよ今回はRaspberry Piで作るスマートミラーの最終回。
実際に組み立ててスマートミラーとして動作させてみようと思います。

第1回:準備編
第2回:センサー編
第3回:コンテンツ編

ラズパイをスマートミラー専用に

Raspberry Piの電源オン後に、ブラウザをフルスクリーンで自動起動してコンテンツを表示させるようにします。
そのため、コンソールの操作はsshで行えるようにしておきましょう。

また、Firefoxの"ホームページ"をhttp://localhost/へ設定を済ませた状態としておいてください。

ブラウザの自動起動

前回のコンテンツ編では、手動でブラウザを起動してコンテンツを表示しましたが、今回はスマートミラー専用のラズパイとするために、「起動直後にブラウザをフルスクリーンで起動し、コンテンツを表示する。」ということを行います。

Firefoxのコマンドラインオプションではできないようなので、アドオンを使って実現します。
フルスクリーン化できるアドオンはいくつもあるようですが、今回はmfullというものを利用しました。
アドオンのインストール後、下記設定して"OK"ボタンをクリックし、Firefoxが再起動するとフルスクリーンとなります。

  • "Basic"タブの"Always start in full screen"にチェックを入れる。
  • "Appearance1"タブの"Show Toolbars"のチェックを外し、"Auto hide"のチェックを入れる。 
  • "Appearance2"タブの"Show Sidebar"のうち"None"を選択する。

次に、起動直後にFirefoxを起動してコンテンツが表示されるように設定します。
(一緒に、スクリーンがオフとならないような設定と、マウスカーソルを非表示とする設定も行っています。)

電源を挿したら、フルスクリーンでFirefoxが起動されコンテンツが表示されました。

OverlayFS

家電は、電源を簡単にオン・オフできてこそ家電であるといえます。
今回のスマートミラーも、特に電源を簡単にオフにできるようにしないと、使い勝手が悪いものとなってしまいます。

Raspberry Pi(今回使用するOSであるRaspbian)は、SDカードをディスクとして動作するLinuxシステムです。
つまり、一般的なLinuxと同じように、各種情報はSDカードに対して読み書きを行っています。
そのため、特にディスクへの「書き込み」が発生している時に電源が切れてしまうと、ディスクの内容を破壊してしまう可能性があります。

そこで、「OverlayFS」化することで、システムがSDカードに書き込みを行わないようにします。
これは、SDカードの内容は「読み込み専用」とし、書き込み先は「OverlayFS(RAMディスク)」を使う、というものです。
こうするとSDカードへの書き込みは発生しないので、どのような状態でも電源が切ることができ、家電としての利便性を確保することができます。

まずは、ログファイルなど書き込みが発生しやすい箇所を"tmpfs"化します。
手順やスクリプトについては、こちらのサイトを参考とさせていただきました。
この手順通りに作業を行えば良いです。

次に、システム全体にRAMディスクを重ねてマウントし、そこにファイル書き込みできるようにする「OverlayFS」の対応を行います。
これについてはこちらのサイトを参考とさせていただきました。
ただ、何点か追加で対応した点があるので、そちらを補足させていただきます。
/etc/init.d/mount-overlayで指定されている/fsprotectですが、存在していないはずなので、事前に作成しておく必要があります。
また、③の/etc/rc.localについては、下記部分だけ追記します。

ここまでできたら、下記コマンドを実行します。

最後に、今後メンテナンスを行う場合には、OverlayFSの機能をオフにしたいため、こちらのサイトにあるスクリプトを利用させてもらって、切り替えられるようにします。
/usr/local/bin/noprotect/usr/local/bin/protectを作成し、下記コマンドを実行します。

これで、準備ができました。
/usr/local/bin/noprotectを実行して再起動した場合と、/usr/local/bin/protectを実行して再起動した場合について、ディスクのマウント状況を確認します。

これで、準備ができました!
/usr/local/bin/protectを実行して再起動した状態にしておけば、ディスクへの直接の書き込みが行われなくなるので、簡単に電源を切っても安全になります。

外観

では、「スマートミラー」として組み立てていきます。

今回はミラー部分は、「準備編」でも使用したアクリル板のハーフミラーをベースに、モニターのサイズに合わせた形でアクリル板を組み合わせていきます。
ただ、ここでミスが。。
接着剤使用時のマスキングが不十分であったため、接着剤がミラー部分についてしまい一部お見苦しい状態に。。

これを、イーゼルに立てかけ、ラズパイを収めた箱と並べます。

20160808_02
裏側は、このような感じで配線しています。

20160808_03
表側はこのような感じとなりました。

20160808_04
コンテンツを表示すると、このようになります。

まとめ

さぁ、これでマジックミラーとして、作成できました!
パーツさえそろえれば、後は組み上げていくだけでスマートミラーにできることが伝えられたかと思います。
特にコンテンツについては、通常のWebフロントエンドの技術なので、簡単に専用コンテンツを作り上げることができます。

ブログのシリーズとしては今回で一区切りつけますが、個人的には上記のミスのリベンジを行いたいと思います!
(これについては、別の機会にお伝えできればと思います。)

tacck Takuya KIHARA

エンジニア (モバイルアプリ、フロントエンド、バックエンド、インフラ) 得意なことは、領域をまたいで考え、開発すること。 ブログでは、主にAnsible、Docker、Raspberry Piのことを書いています。 好きなフィギュアスケートの技は、スプレッド・イーグルです。

「いいね」ボタンを押すと、最新情報をすぐに確認できます。