Thursday, January 28, 2021

A Stack Based Digital Photo Frame - Part 1

The Idea

I wanted to put some old monitors I had lying around to use. As I contemplated how I could turn them into a sort of digital whiteboard / pinboard, a solution begin to emerge. I could snap pics with my phone, click a button and bam! the photos would appear on the monitor.

So yeah, I just revinented the digital photo frame. While the idea wasn't unique, that didn't make it any less worthy of building. In the spirit of digital recycling, I decided to power my frame with an old Raspberry Pi I had lying around.

To dress things up further, my plan is to setup the frame to be stack based. New images will be pushed on the stack, and I'll support a 'pop' command that will reveal older images. Depending on how this works, I may add other stack operations like swap and roll.

The Plan

Step one of my plan was relatively simple: I'd install fresh software on the Pi and confirm that I can programatically display images on the monitor. Once that's accounted for, I'll figure out how to beam images to the Pi from my phone.

On paper, step one should be easy. And yet, as I thought about, all I could see were hurdles.

Here's how I anticipated it all going down: I'd try to download the latest version of the Pi OS, only to get stuck figuring out which version of the Pi I owed. And when I did finally download the right OS, there was no way I was going to be able to burn it to a Micro SD card from my Chromebook. Surely, I'd have to switch to a Mac or Windows box and download special software to do this. And when I did finally try to boot up the Pi, I was sure it would glitch out on the an ancient monitor. Like I said, all I could see were ways this could fail.

The Execution

So you can imagine how elated I was when every prediction of mine was wrong.

The good people at Raspberry Pi make it so that their OS is compatible with all versions of their hardware. From a fancy new Pi to the ancient one I have, the OS Just Works.

On to top of that, they provide instructions for installing from a Chromebook which worked flawlessly. I had no idea that Chrome OS would give me a way to burn images to an SD card, but they do.

I slid the micro sd card containing the OS image into the Pi, connected the Pi via HDMI cable to a clunky adapter on the back of the monitor and then plugged in the power cable. A few moments later, the Pi booted up and I found myself at GUI setup screen. I provided my Wifi settings, told the Pi I wanted to run in console mode and rebooted. I then found myself at a bash prompt.

I couldn't believe how smoothly this all had gone. I installed fbi using the command:

  sudo apt install -y fbi

And then finally, put the setup to the test by grabbing a JPEG off of one of my servers and attempted to display it:

wget -O us.jpg http://code.benjisimon.com/us.jpg
fbi -a us.jpg

To my complete shock and amazement, the image rendered on the screen. I had the foundation for the photo frame done without a single hiccup. (And with that statement, I've successfully cursed part 2 of this project).

Up next, I need to figure out how I'm going to deliver images from my Android Phone to the Pi. Still, I couldn't be more amazed at the work the Raspberry Pi foundation has done. Outstanding.

No comments:

Post a Comment