デジタルフォトフレームを簡易モニターとして使う(基礎編)


デジタルフォトフレームをRaspberryの簡易モニターとして利用することができましたので紹介します。
初めにお断りしておきますが、あくまでも簡易モニターでサブモニターではありません。
画面のリフレッシュ間隔は10秒程度なので、例えば1分おきに起動するバッチ処理の結果表示には使えますが
OpenOfficeは動きません。

【STEP1】準備するもの

まずはデジタルフォトフレームが必要です。
フォトフレームはUSBダウンストリームポート(PCとの接続用USBポート)が付いているものが必要です。
但し、後で説明しますが、USBダウンストリームポートが付いていれば、どれでも良いと言うわけではありません。
2014年8月時点で、こちらのフォトフレームで正常動作を確認しています。

次にこちらのページで紹介しているUSB-SWが必要です。

【STEP2】簡単な動作テスト

ここまで読んで、勘の良い方ならこれからの手順が想像できたと思います。
まず、SD-CARDに適当なイメージファイルをコピーします。
イメージファイルの形式はJPEGです。
SD-CARDをフォトフレームに入れて、フォトフレームの電源を入れます。
ほとんどのフォトフレームでは自動的にスライドショウが始まります。

関門その1

ディジタルフォトフレームをUSB-SW経由でRaspberryに接続し、USB-SWをONにします。
フォトフレームの下に写っているのがUSB-SWです。



ほとんどのフォトフレームは以下のようにPCと接続中の画面となり、スライドショウを中止します。




USBケーブルで接続した状態のまま、以下のコマンドでフォトフレーム側の内蔵メモリ/SD-CARDがマウントできて
内蔵メモリ/SD-CARD内のファイル名が表示できることを確認します。
以下の例では/dev/sdb1がフォトフレーム側の内蔵メモリ、/dev/sdc1がフォトフレーム側のSD-CARDです。
内蔵メモリ/SD-CARDどちらがマウントできるかは、機種毎に違いますので、実機で確認してください。
内蔵メモリ/SD-CARDがマウントできれば関門1は突破です。
一部のフォトフレームは、WindowsではUSB接続を認識しても、Raspberryでは認識しないものがありました。
Raspberryで認識できないときはどうにもできません。

$ sudo mkdir /mnt/sdcard
$ ls /dev/sd*
/dev/sda  /dev/sdb  /dev/sdb1  /dev/sdc  /dev/sdc1  /dev/sdd
$ sudo mount -t vfat /dev/sdc1 /mnt/sdcard
$ ls /mnt/sdcard → フォトフレーム側のSD-CARDの中身を見る
image01.jpg  image04.jpg  image07.jpg  image10.jpg  image13.jpg  image16.jpg
image02.jpg  image05.jpg  image08.jpg  image11.jpg  image14.jpg  image17.jpg
image03.jpg  image06.jpg  image09.jpg  image12.jpg  image15.jpg
$ sudo umount -l /dev/sdc1

関門その2

USB-SWをOFFにしたときに、スライドショウが自動的に再開されれば、関門その2も突破です。
一部のフォトフレームではメニュー表示やサムネイル表示のままとなり、
スライドショウが自動的に再開されない残念な仕様でした。
ただし、これはリモコンを併用することで解決できると思います。(いずれ紹介します)

【STEP3】実際に使う

以下にサンプルのスクリプトを示します。
フォトフレーム側の内蔵メモリ/SD-CARDに入っているJPEGファイルを一旦全て削除して、新しいイメージファイルに置き換えるだけです。
なお、USB-SWはGPIO14でON/OFFを行っています。

#!/bin/bash
#
#USB-SWのON
sudo sh -c "echo 14 > /sys/class/gpio/export"
sudo sh -c "echo out > /sys/class/gpio/gpio14/direction"
sudo sh -c "echo 1 > /sys/class/gpio/gpio14/value"
sleep 10

#内蔵メモリ/SD-CARDのマウント
#deviceは各自の環境に合わせて変更してください
device="/dev/sdc1"
sudo mount -t vfat ${device} /mnt/sdcard
sleep 5

#SD Card内のImageファイルをすべて削除
files=`find /mnt/sdcard -name "*.jpg" -print`
if test -n "$files" ; then
    sudo rm /mnt/sdcard/*.jpg
fi

#新しいImageファイルをコピー
#TmpFileは各自の環境に合わせて変更してください
TmpFile="/tmp/*.jpg"
sudo cp ${TmpFile} /mnt/sdcard/
sync
sync
sync
sleep 5

#SD Cardのアンマウント
sudo umount -l ${device}

#USB-SWのOFF
sudo sh -c "echo 0 > /sys/class/gpio/gpio14/value"
sudo sh -c "echo 14 > /sys/class/gpio/unexport"

赤文字の部分を手元の環境に合せて変更した上で、上記のスクリプトを「download.sh」などのファイル名で保存、実行してください。
また、sleep時間も適当に調整してください。

次回は画像だけではなく、テキスト文字をフォトフレームに表示する方法を紹介します。