ホーム > 家族のギャラリー > PIC電子工作 > IGZOデジタルフォトフレーム

Update 2016.1.30
2016.1.24

IGZOデジタルフォトフレーム

IGZOデジタルフォトフレーム

GUGEN2015の秋月賞の副賞で頂いた高精細IGZOパネルに、Rapsberry Piを組み合わせてDropboxと同期するクラウド型デジタルフォトフレームを作ってみました。IoTかな?

綺麗で高精細なIGZOパネルを活かせるアプリとして、フォトフレームしか思いつかなかった(^_^) Raspberry Piを使ったので、周辺に色々繋いでクラウドとも連携させればIoTっぽいことができるかと思います。

フォトフレームに見える防犯システムとか、高齢者見守りとか、家電コントロールとか、、、、

今回、PICは出てきません。


IGZOデジタルフォトフレーム

高精細IGZOパネル

写真を撮り忘れたので、秋月さんのサイトから借用させていただいたIGZOパネルの裏面と制御ボード。

IGZOデジタルフォトフレーム

アクリルパネル

秋月さんから頂いたアクリルパネル。まだ保護紙が貼ってある。L字のものは表裏のアクリル板を挟むときに四隅に入れるもの。IGZOパネルの厚みとほぼ同じ。

IGZOデジタルフォトフレーム

フレーム作り

額縁部分の光漏れ防止は、ASCII.jpさんの記事、7インチWUXGA液晶をキットと100円ショップのフォトフレームで自作してみたを参考にさせて頂いた。

100均の黒画用紙をアクリルパネルサイズに切り取り、内側をIGZOの表示サイズに合わせてくり貫く。写真上にある短冊状のものは、側面からの光漏れ防止と黒画用紙をアクリルパネルに密着させるために、厚紙を張り合わせたもの。

細い黒い線は四隅からの光漏れを防止するため、黒画用紙を細長く切ったもの。

IGZOデジタルフォトフレーム

フレーム作り

厚紙の短冊は4辺にこんな感じで配置し、この中にIGZOパネルを置く。

この後、厚紙の短冊は額縁になる黒画用紙に両面テープで貼り付けた。

IGZOデジタルフォトフレーム

接着式サポート ペテット

制御ボードをアクリルパネルの背面に取り付けるのにこの部品を利用。これも賞品に含まれていた。感謝。

写真を撮り忘れたので秋月のサイトからお借りした写真です。

IGZOデジタルフォトフレーム

IGZOパネル装着

ビスとスペーサを使ってIGZOパネルを挟み込むように組み立て。

スペーサは写真下側の2本が長くなっていて、そのままフレームを立てる際の支えとなる。

IGZOデジタルフォトフレーム

完成

ラズベリーパイに繋いでみたところ。

IGZOデジタルフォトフレーム

完成

上から見た様子。

もっと細くて柔軟性のあるHDMIケーブルがあるとよい感じ。


Raspberry Pi 2

秋月さんでRaspberry Pi 2、ケース、16GB microSDカード、USBタイプの2A ACアダプタ、USBケーブルなどを調達。色々とお世話になりました。

OS Raspbianインストール

NOOBSというインストーラタイプと、OSのイメージディスクからインストールする方法があるが、前者でインストールしたらIGZOパネルに何も表示されなかった。当初簡単そうなNOOBSでインストールしていて、表示されずに大いに悩んだ。

IGZOパネルの設定

/boot/config.txtを取説の通りに設定する。表示は4方向に回転可能なので、ケーブルの引き出し方向に応じてconfig.txt内を書き換えればOK。

無線LAN接続

以下のサイトがとても詳しく解説されていたので参考にさせて頂き、定義ファイルを設定した。しかし、全然繋がらず悩みまくった。無線LANのアクセスポイントを再起動したり、他のサイトの記事も参考にしたがダメだった。

Raspberry Piに無線LANのUSBアダプタをつける

色々試し、疲れ果てた数日後、以下のサイトの手順でコマンドレベルで順次実行したら繋がった。一度繋がったあとは、再起動しても問題なく繋がり、原因がよくわからないが結果よし。

Debian で WPA-PSK(AES) 方式で無線接続 - wpa_supplicant 編

Dropbox API

Linux版でDropboxにアクセスする方法を探し、以下のサイトを参考にさせて頂いてセットアップ。こちらは一発でうまくいった。

Raspberry PiでDropboxにファイルをアップロードしてみた

コマンドラインからファイル一覧を取り出したり、ダウンロード/アップロードができて便利。ただし、自動的に同期する機能はない模様。そこで、同期の仕掛けは自分で作ることにした。

フォトフレームアプリ(Python)

実はPythonを使うのは初めて。ネットで色々探していたら、jpgなどの表示はpygameというライブラリを使えば簡単そうなことがわかった。その後Pythonの書き方をネットで探していたら子供がPythonの入門書を貸してくれた。いつの間にプログラミングなどやっていたのか? 親知らずであった。

デバッグ中にiPhoneからDropboxへ写真をアップしたら、縦向きの写真が横向きで表示されることが判明。どうやらiPhoneで撮った写真の回転方向はEXIFとして格納されており、実体は常に横向きのようだ。EXIFを読んで回転方法を補正するのは面倒そうだったので、jpgをダウンロードしたらexiftranというツールを使って必ず補正回転するようにした。

全体のフローは以下の通り(Python書式風)
  繰り返し
      Dropboxにある写真一覧を取り出す
      ローカルにある写真一覧を取り出して、比較する
      ローカルに足りない写真はダウンロードし、回転方向を補正
      ローカルにある余分なファイルは削除

      ローカルにある写真一覧を取り出す
      一覧分の繰り返し
          写真をロードして表示
          表示時間のウェイト

前述の通り、Pythonは初めて使ったのでこれで正しいのか、最適な方法なのか不明ですが、ソース photoframe.pyです。バグがあるかもしれません、無保証です。著作権は留保しますが、改変などご自由にどうぞ。

デバッグ用にprint文が入っています。コマンドラインから実行すると動作がわかります。

写真のスライドショーの時間間隔は、最初の方でひとまず2秒に定義している。実際はファイルのロード時間もあって4〜5秒程度で切り替わる。

【制限事項】

  • Dropbox上の写真とローカルの写真の比較はファイル名のみで行って同期させているので、同一ファイル名で写真を入れ替えても更新(ダウンロード)しない。
  • 日本語のファイル名は対象外です。iPhoneからDropboxにアップしたら日本語のファイル名になりました。アップ後にファイル名を英数字に変更すれば大丈夫。
  • その他、ソース参照
  • Raspbianデスクトップからの自動起動

    OSが起動し、デスクトップが立ち上がったら自動的にフォトフレームが立ち上がるように、ホームディレクトリ下の.configディレクトリにautostartディレクトリを作り、photoframe.desktopファイルを置く。

    /home/pi/.config/autostart/photoframe.desktop
    [Desktop Entry]
    Type=Application
    Name=photoframe
    Exec=/home/pi/photoframe/photoframe.py
    Terminal=Fales
    


    IGZOデジタルフォトフレーム

    写真表示

    写真のアスペクト比を維持して最大に表示できるようにした。4:3の写真はこんな感じ。

    IGZOデジタルフォトフレーム

    写真表示

    16:9の写真例。

    IGZOデジタルフォトフレーム

    写真表示

    iPhoneで撮った縦構図の写真。実体は横構図だがEXIF情報で縦の構図に変換して表示。

    IGZOデジタルフォトフレーム

    背面の様子


    IGZOデジタルフォトフレーム

    ミニイーゼル

    前述のASCII.jpの記事にあった100均のミニイーゼル(\150)に載せてみた。

    動画

    Raspbian起動からフォトフレームが立ち上がり、Dropboxと同期して写真がスライドショーする様子。そのあとメイキング。


    from Metal Woods(c) 2016