motoh's blog

主に趣味の電子工作やプログラミングについて書いていきます

使わなくなったタブレットとラズパイでデジタルフォトフレーム(共有ストレージ対応)を作ってみた

きっと自分だけではないと思いますが…

  • 電子書籍を何冊か読んだ後忘れ去られていたiPad mini (2012年モデル)
  • 外付けHDDを共有ストレージ化することくらいにしか活用できていないRaspberry Pi 3B+

といったもったいない使い方をしているデバイスたちを使って、デジタルフォトフレーム(共有ストレージ対応)を作ってみました。(今回は構想メインで、ソースコード等細かいことは記載しませんが、今後追記するかもしれません...)

きっかけ

以前からRaspberry Piと使い古しの外付けHDDで共有ストレージを構成して、デジカメやスマホで撮った写真を保存していたのですが、どんどん溜まっていくだけで見る機会がほとんどなく、簡単に家族みんなで見れたら楽しいのになと思っていました。また、iPadも10年落ちとなると、新しいアプリは対応していないし、電子書籍スマホで十分読めるし…という状況で、ハード的にはまだまだ動くのに使い道がなくもったいないなと感じていました。

コンセプト

  • 共有ストレージに溜まった写真データを、タブレットにランダムで表示して家族みんなで楽しめる。表示する写真は1分毎に自動更新する。

  • 共有ストレージには家族みんながアクセスでき、スマホなどで撮った写真を簡単に保存できる。

  • フォトフレームはWEBアプリとして実装することで、WEBブラウザが動くデバイスタブレットスマホ、fireTVなど)なら何でもフォトフレーム化できる。

実現方法(かなりざっくりとした解説)

Raspberry Pi

  • SambaでUSB外付けHDDを共有ストレージ化した。
  • WEBサーバはNode.jsで開発した。WEBサーバにリクエストしてきたデバイスに対して、ランダムに選んだ写真を埋め込んだHTMLを返信する。
  • HTMLにはJavaScriptを埋め込み、1分毎に自動的にリクエスト(ページ更新)するようにした。
  • Node.jsのWebサーバを開始するときに、共有ストレージ内の特定フォルダ内の写真データをすべて探索してリストアップするようにした。(この処理はNode.jsで実装できればスマートだが、自分は慣れているPythonで作成してNode.jsから呼ぶようにした。)

iPad mini

  • Webブラウザがあればよいので、アプリ開発は不要。
  • デフォルトだと時間が経つと自動で画面オフしてしまうので、設定を「自動ロックなし」に変更した。
  • キオスクモードで、管理者以外は余計な操作(ブラウザを閉じて他のアプリを起動するなど)をできないようにした。(ここらへんはお好みで)

PC、スマホなど

アプリ開発は不要。Sambaで共有されたHDDには、標準のファイルエクスプローラでアクセスして写真データを保存できる。(スマホの場合はSambaに対応した適当なアプリを探してインストールする必要がある。)

最後に

市販のデジタルフォトフレームで共有ストレージに対応したものはほとんどないと思いますし、何より既に家にある物だけで作れたので自分的にはとても満足しています。ラズパイのWEBサーバを開発するところは、WEBプログラミング初心者の自分にはちょっと難易度が高かったですが、次の本で勉強しながら作りました。

作りながら学ぶWebプログラミング実践入門 ~一冊で理解するHTML、CSS、JavaScript、Node.js~(Amazonリンク)

お好みで、写真と一緒に日時や天気やラズパイで測った温湿度などを表示することもできると思います。このように、アイデア次第でカスタマイズできるのも自作の良いところではないでしょうか。