How to Build a Raspberry Pi-Powered Digital Photo Frame

Raspberry Pi-Powered Digital Photo Frame
(Image credit: Tom's Hardware)
11

A digital photo frame is a small screen that can sit on your desk in your office or in your kitchen displaying your favorite pictures, changing at regular intervals. The first commercial digital photo frame was introduced in the 1990s shortly after the digital camera. Digital photo frames made a comeback in popularity during 2020, perhaps because people were staying at home more.  

In this tutorial, we’ll turn our Raspberry Pi into a digital photo frame using MagicMirror and the GooglePhotos module. If you have just upgraded to a Raspberry Pi 5, then this project is a great way to reuse an older Raspberry Pi 4.
Please note, we will skip installation of the 2-way mirror in the original Magic Mirror project. Consider this project, “Magic Mirror, without the mirror.”

Contributor

Caroline Dunn is a freelance writer for Tom's Hardware. Her expertise lies in covering Raspberry Pi projects, creating video tutorials, writing guides, and exploring other entertaining tech DIY initiatives.

  • ad9fd
    Admin said:
    In this project, we’ll build a digital photo frame with our Raspberry Pi with photos updating dynamically from Google photos.

    How to Build a Raspberry Pi-Powered Digital Photo Frame : Read more
    This would undoubtedly be a good learning exercise. However with the 7 inch screen it uses costing £77 but a new 7 inch digital photo frame costing only £27 on ebay the main learning experience is that buying is often a better option than building.
    Reply
  • torbjorn.lindgren
    ad9fd said:
    This would undoubtedly be a good learning exercise. However with the 7 inch screen it uses costing £77 but a new 7 inch digital photo frame costing only £27 on ebay the main learning experience is that buying is often a better option than building.
    Yeah, both of those have ABYSMAL resolution, specifically 800x480!
    1990's called and wanted their crappy screens back! :)
    The original author should be ashamed of suggesting building a photo frame with a 7"/800x480 display, I would consider that resolution a the very best marginal even for a 5" display.
    But.. that just reinforces that from an economics point it makes very little sense given that you can get a 7" photoframe with 1920x1080 resolution (including shipping) for less than the 7"/800x480 display, never mind the other components!
    Reply
  • kellyhirano
    Admin said:
    In this project, we’ll build a digital photo frame with our Raspberry Pi with photos updating dynamically from Google photos.

    How to Build a Raspberry Pi-Powered Digital Photo Frame : Read more

    The instructions miss a pretty key item from the MMM-GooglePhotos docs under "Get token.js" on https://github.com/ChrisAcrobat/MMM-GooglePhotos#get-auth-and-albumid
    Between your steps 3 and 4, you need to enable the Google Photos Library API, otherwise the OAuth creds won't allow access to those APIs and you end up with a 403 in your log (viewable by pm2 log).
    Reply
  • Grifi74
    kellyhirano said:
    The instructions miss a pretty key item from the MMM-GooglePhotos docs under "Get token.js" on https://github.com/ChrisAcrobat/MMM-GooglePhotos#get-auth-and-albumid
    Between your steps 3 and 4, you need to enable the Google Photos Library API, otherwise the OAuth creds won't allow access to those APIs and you end up with a 403 in your log (viewable by pm2 log).
    Thank you for the post. It really helps.
    Reply
  • pontiac_bandit
    Excellent project! I was able to finish this today, but unfortunately my screen is stuck on 'Loading...' after I do the npm run start. Is it because my internet might be slow? I hardly have 20 photos in my sample album. Any ideas?

    Final Edit: I was able to use @kellyhirano 's advise and fix the issue. I now have an RPi powered digital photo frame :)

    Edit2: This is the exact error I am getting
    Stuck on Loading forever - githubmemory
    Edit: Actually, I see the following error in my terminal

    Failed to fetch git data for MMM-GooglePhotos: Error: block timeout reached
    Reply
  • Skorry
    I attempted this today, but when it entered Google Cloud Platform I was presented with many configuration questions that aren't addressed in this article. It could be that GCP has updated things significantly in the past few months. Anyway, I don't where to begin to troubleshoot it. I give up.
    Reply
  • martinkleinaustria
    Worked fine for me since October but now I tried again after a long break and I again hang at the "Loading..." page though the Google API's are all activated.
    From the Log:
    (node:1140) UnhandledPromiseRejectionWarning: Error: invalid grant

    any help appreciated
    Martin
    Reply
  • gpejsa
    I am a bit late to this project, but hope someone reads this to offer some suggestions. I have the hardware together (the screen and the raspberry pi) and have installed all the updates and have the Magic Mirror installed and updated. I have created the OAuth Client ID with TVS and Limited Input Devices and named the client TV Client 1 like in the instructions. I generated the credentials (which appeared to work) and renamed them and placed them in the MagicMirror/modules/MMM-GooglePhotos folder. I then CD'd to the correct folder and issued the node generate_token.js command and got the following error message:

    TypeError: cannot read property '0' of undefined /home/pi/MagicMirror/modules/MMM-GooglePhotos/Gphotos.JS:133

    The above error is repeated with variations. I re-ran the OAuth a few times and even went so far to include the API for googlephotos, but nothing seemed to work. Any suggestions/hints would be gratefully accepted!!

    Geof
    Reply
  • xvmodvx
    To the people saying the difference in price, the mistake was saying you need a touch screen. You can use any screen because you're not interacting with it once it's finished so you can use an old monitor or tv that you otherwise were going to throw away and have a lot bigger screen than the ones you're talking about. Think before talking crap about people. 🙂
    Reply
  • willowpje
    I decided to do this today but I found out the repository for the GooglePhotos module in the article is old and read-only. It's a fork of https://github.com/hermanho/MMM-GooglePhotos. I ran into a bunch of issues with the other repository, but if you use this one and follow the instructions in the readme there, it works perfectly.
    Reply