Digital picture frames are really nice because they let you enjoy your photos without having to print them out. Plus, adding and removing digital files is a lot easier than opening a traditional frame and swapping the picture inside when you want to display a new photo. Even so, it's still a bit of overhead to remove your SD card, USB stick, or other storage from a digital picture frame, plug it into your computer, and copy new pictures onto it.
An easier option is a digital picture frame that gets its pictures over WiFi, for example from a cloud service. Here's how to make one.
Gather your materials
- Old TFT LCD screen
- HDMI-to-DVI cable (as the TFT screen supports DVI)
- Raspberry Pi 3
- Micro SD card
- Raspberry Pi power supply
- Mouse (optional)
Connect the Raspberry Pi to the display using the cable and attach the power supply.
More on Raspberry Pi
Download and flash Raspbian to the Micro SD card by following these directions. Plug the Micro SD card into the Raspberry Pi, boot it up, and configure your WiFi. My first action after a new Raspbian installation is usually running sudo raspi-config. There I change the hostname (e.g., to picframe) in Network Options and enable SSH to work remotely on the Raspberry Pi in Interfacing Options. Connect to the Raspberry Pi using (for example) ssh pi@picframe.
Build and install the cloud client
If you use Nextcloud, get a client for Raspbian by following these instructions. This is handy for placing new pictures on your picture frame and will give you the client application you may be familiar with on a desktop PC. When connecting the client application to your Nextcloud server, make sure to select only the folder where you'll store the images you want to be displayed on the picture frame.
Set up the slideshow
The easiest way I've found to set up the slideshow is with a lightweight slideshow project built for exactly this purpose. There are some alternatives, like configuring a screensaver, but this application appears to be the simplest to set up.
On your Raspberry Pi, download the binaries from the latest release, unpack them, and move them to an executable folder:
wget https://github.com/NautiluX/slide/releases/download/v0.9.0/slide_pi_stretch_0.9.0.tar.gz tar xf slide_pi_stretch_0.9.0.tar.gz mv slide_0.9.0/slide /usr/local/bin/
Install the dependencies:
sudo apt install libexif12 qt5-default
Run the slideshow by executing the command below (don't forget to modify the path to your images). If you access your Raspberry Pi via SSH, set the DISPLAY variable to start the slideshow on the display attached to the Raspberry Pi.
DISPLAY=:0.0 slide -p /home/pi/nextcloud/picframe
Autostart the slideshow
To autostart the slideshow on Raspbian Stretch, create the following folder and add an autostart file to it:
mkdir -p /home/pi/.config/lxsession/LXDE/ vi /home/pi/.config/lxsession/LXDE/autostart
Insert the following commands to autostart your slideshow. The slide command can be adjusted to your needs:
@xset s noblank @xset s off @xset -dpms @slide -p -t 60 -o 200 -p /home/pi/nextcloud/picframe
Disable screen blanking, which the Raspberry Pi normally does after 10 minutes, by editing the following file:
and adding these two lines to the end:
[SeatDefaults] xserver-command=X -s 0 -dpms
Configure a power-on schedule
You can schedule your picture frame to turn on and off at specific times by using two simple cronjobs. For example, say you want it to turn on automatically at 7 am and turn off at 11 pm. Run crontab -e and insert the following two lines.
0 23 * * * /opt/vc/bin/tvservice -o 0 7 * * * /opt/vc/bin/tvservice -p && sudo systemctl restart display-manager
Note that this won't turn the Raspberry Pi power's on and off; it will just turn off HDMI, which will turn the screen off. The first line will power off HDMI at 11 pm. The second line will bring the display back up and restart the display manager at 7 am.
Add a final touch
By following these simple steps, you can create your own WiFi picture frame. If you want to give it a nicer look, build a wooden frame for the display.