Build a better Digital Photo Frame
TL;DR
Building a Digital Photo Frame is important proof of concept in demonstrating how open-source technologies can be utilized to build a product that can not only compete with but also exceed what’s available in the market.
Our Aims:
Digital photo frames are a solved problem. You can buy as many as you want at all price ranges, from less than a $100 to over $600. Beyond the obvious as a learning exercise, why do we do this. There are multiple problems with existing photo frames.
These are:
The vast, vast majority of digital photo frames have LCD panels. This means that to show an image they need to be powered, making them in my opinion vastly inferior to an existing photo frame. Worse still LCD panels have viewing angles which means you have to stand in one spot to see the image perfectly.
Commercial photo frames often use old buggy and old versions of software and run on top of old and buggy hardware. This means that the experience of using the photo frame is terrible. They are slow buggy and entirely useless. Uploading photos and getting it setup is an entirely difficult process.
Commercial photo frames never update their software and often run modified versions of existing commercial software. Furthermore, they often connect to Wi-Fi and the internet. This results in insecure devices connecting to the internet and increases the chances of security breaches at home, from theft of personal photos on device through to ransomware and involvement of your network on cyberattacks.
Finally commercial hardware is locked down and built by factories with three or four factors of separation from the end user. This means that if anything breaks down, there is no way to get it fixed. The device is never getting repaired and even if the retailer replaces it, the device will end up in landfill as another piece of e-waste.
My aim is quite simple. I want to address the issues that we have seen above. That is simply it. Point 1 was unsolvable even a few years ago. We have a solution now and it is E-Ink. Yes, the same technology that runs the Kindle and known for being black and white is our solution.
Modern E-Ink can display up to 7 colours which is more than enough to cover the colour space when we apply various intelligent algorithms. Further to this, E-Ink is like paper, it stays in the set state when the power is turned off and it doesn’t emit light, rather it reflects it. This combined together means that we don’t have an angles problem and we don’t have a power problem.
Challenges two to four can be resolved far more quickly by using opensource or well supported technologies. In our case we are using the Raspberry Pi 0w for this proof of concept. This device is well supported and was first released in 2017. More than 6 years later it is still being sold and with the operating system based on Linux, it will continue to receive updates and continually be supported. This means that our device could have individual parts upgraded thereby preventing e-waste.
Build Guide
There are two parts to this build guide. The physical product and the software component. Both are important to ensure the success of the product. The Physical component affects the look and feel of the device, and we need to make sure that any design looks as good or better than what is available. The software component determines how smooth the operation of using it is. For the purposes of this version, we are going to have a simple rotating display with uploads of photos via ssh. In future we will implement a web server for the Raspberry Pi that can be used to connect to Wi-Fi as well as upload images.
Physical Build Guide
Building the device is the last part of the process. However, it has the most considerations as it is the first thing that people see and feel. There are many approaches we could have taken, and I chose a traditional look. There are multiple approaches we could have taken; we could have gone completely the opposite way and created a post-modern piece, or we could have built something that showed off the technological aspects.
As mentioned, we chose the traditional route. There is a reason photo frames have been unchanged for centuries. There is a frame, a glass front and so on. In fact I just bought a relatively cheap frame from a local retailer. With a few modifications I was able to fit the E-Ink screen into a traditional frame. The Raspberry Pi 0w is a tiny and slim device which can be attached to the back quite easily. Even as a prototype the device looks quite good.
Parts List
Parts | AUD ($) | USD ($) |
6-inch Photo Frame | 6 | 4 |
5.65-inch ACeP 7-Color E-Paper E-Ink Display Module | 92 | 62.99 |
Raspberry Pi Zero W | 24.50 | 15 |
Total (parts) | 122.50 | 81.99 |
Software Build Guide
The software build guide is straightforward as well, we have utilized the Waveshare libraries which allow us to minimize the software that needs to be written. What we have done is a script that updates the screen with the picture from a folder that the converter programs update with new photos. We also update a file to keep track of the photo that is being displayed.
from waveshare_epd import epd5in65f
from PIL import Image
from os import listdir
try:
imagefiles = [f for f in listdir("photos")]
print(imagefiles)
with open("currimage.txt","r") as f:
line = f.readline()
displayImage = ""
if line:
index = imagefiles.index(line)
if index == len(imagefiles)-1:
index = 0
else:
index = index + 1
displayImage = imagefiles[index]
else:
displayImage = imagefiles[0]
with open("currimage.txt","w") as f:
f.write(displayImage)
#Clear and set the WaveShare Display
epd = epd5in65f.EPD()
epd.init()
epd.Clear()
Himage = Image.open("photos/"+displayImage)
epd.display(epd.getbuffer(Himage))
epd5in65f.epdconfig.module_exit()
We then set up a bash script to be run very hour via a cron job.
#!/bin/bash
#Change to the right directory update this to point
cd /home/pi/PhotoFrame
#Run Script
python photoframe.py
# m h dom mon dow command
0 * * * * /home/pi/PhotoFrame/photoframe.sh
Download all code and follow installation guidelines from GitHub
Future Work
This is a prototype to prove that this is possible, however there are various improvements that can be made.
Currently the only way to upload photos is via ssh. This is fine for a single one-off solution, however if this were to be turned into a product, we would need to have another method to upload photos.
There is no way to change wifi connections or set up in hotspot mode. This will need to be available for people to set up their device.
Finally, this is a prototype, a proper product would need to have all the parts integrated in a single circuit board. This would make the product thinner, and we would not see any exposed cables as we do with the prototype.
The last major change would be moving away from the fully fledged computer in the Pi to a microcontroller like the Pico. This would reduce the overall cost of the product.
Conclusion
Consumer electronics are rarely profitable, especially in commoditized spaces like digital photo frames. Even from a cost analysis, this device would cost around $200 per unit to build. This puts it already out of reach of most people. To be profitable we would have to sell it for $400 - $500 which is at the high end of the digital photo frame market. Changes in the design and volume discounts would bring the price down.
While this may put a dampener on the idea of sales, it achieves our other aims. To encourage people to build their own products, and beyond that it has highlighted that we can build a better product that what is available on the market. This ultimately achieved what we set out to do.
Have ideas on what I should build next? Put it into the comments.
Subscribe to my newsletter
Read articles from Vishnu directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
Vishnu
Vishnu
A science and tech enthusiast with opinions on a variety of topics.