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

基礎編


デジタルフォトフレームを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

マウントできた時はdmesgに以下のログが記録されます。
以下のログはSONYのディジタルフォトフレーム(DPF-D72N)の内蔵メモリ(/dev/sda1)をマウントした時の出力です。
[89838.698795] usb 1-1: new high-speed USB device number 24 using ehci-platform
[89838.857328] usb 1-1: New USB device found, idVendor=054c, idProduct=03cb, bcdDevice= 1.00
[89838.857337] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[89838.857343] usb 1-1: Product: DPF-D72N
[89838.857347] usb 1-1: Manufacturer: Sony
[89838.857352] usb 1-1: SerialNumber: MP000000657E
[89838.858369] usb-storage 1-1:1.0: USB Mass Storage device detected
[89838.858733] scsi host0: usb-storage 1-1:1.0
[89840.816801] scsi 0:0:0:0: Direct-Access     Sony     DPF-D72N         0.00 PQ: 0 ANSI: 2
[89840.817349] sd 0:0:0:0: Attached scsi generic sg0 type 0
[89840.822268] sd 0:0:0:0: [sda] 1886204 512-byte logical blocks: (966 MB/921 MiB)
[89840.825851] sd 0:0:0:0: [sda] Write Protect is off
[89840.825869] sd 0:0:0:0: [sda] Mode Sense: 03 00 00 00
[89840.829295] sd 0:0:0:0: [sda] No Caching mode page found
[89840.829307] sd 0:0:0:0: [sda] Assuming drive cache: write through
[89840.894241]  sda: sda1
[89840.906236] sd 0:0:0:0: [sda] Attached SCSI removable disk

関門その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時間も適当に調整してください。

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