Postcard frame

A picture frame that receives postcards from your friends

Similar projects worth following
Sending postcards is getting more and more difficult, it's not as easy to find stamps and it's harder to keep track of the addresses while travelling. So why not have a picture frame that can receive pictures from your friends and family anywhere in the world?

It's really just an e-ink digital picture frame, which can cycle through a list of photos. You can generate links to share with friends, that allow them to upload photos which will appear on your frame, as a kind of slow, fancy and black and white snapchat I guess. It's got a web interface where you can change settings, remove photos (if you get a dog photo for example, and you are not a dog fan), block links (if your friend shares their link in a dog lovers chat for example) and so on. Of course, there's always some risk of unsolicited dog photos, depending on who you give upload links to.

It's based on an ESP32 and battery powered, and should be able to get several hundred photo updates out of a single charge (still testing the limits). The draw with the ESP32 in deep sleep is not negligible though so even with once daily updates I think it will only get about 2 weeks out of a charge. It takes a USB-C charger input.

The frame is some milled wood because I'm impatient and careless, and prefer to get a robot to cut wood for me than making a mess of it myself. The custom PCB fits inside, and the e-ink screen (laminated glass e-ink screen from Waveshare) is fixed to the frame with some glue.

The images can be uploaded in most common formats, and the interface takes care of the conversion to a 1 bit binary black white image. It's only an 800x480 resolution binary black white screen, so the images look at best artistic, but for some classy photos they can come out quite nice in black and white (and it doesn't matter if your phone has a crappy camera).

Simplistic cartoons can also come out well, but as long as the details aren't too small.

So it can work quite well to share certain memes as well.

The USB charger is unfortunately still visible, so it can't pass fully for a standard picture frame, but hopefully it's not too noticeable.

The back is screwed on, and can be unscrewed if you ever want to get inside for any reason (maybe ants build a nest inside?), but normally there should be no reason to open it.

The image changing routine is not as subtle as I'd like, but you can also specify the times of day the frame updates, to be sure you never see it change and you are greeted by a new one each morning. Or evening. Or lunch time. The nice thing as well about the e-paper screen is that it looks just as good in full sun.

I'm not so sure where to go with it now, as I've just made a couple of gifts for friends and family. I'm uncomfortable sharing the source code as it currently all runs off my own webpage, and I'm not confident enough in the security to make it all public right now. Happy to share the PCB files though if it's of interest to anyone.

KiCAD files

x-zip-compressed - 11.71 MB - 05/25/2022 at 12:47



Board schematic

Adobe Portable Document Format - 433.43 kB - 05/25/2022 at 12:47


  • 1 × 800x480 e-paper display 7.5inch e-Paper (G) E-Ink Fully Laminated Display, 800×480 from Waveshare
  • 1 × ESP-32 based PCB Design files to be uploaded
  • 1 × A few chunks of wood smushed together into a frame like shape.

  • 2nd version, ESP-32 devboard

    Cameron05/21/2022 at 14:45 0 comments

    It was pretty clear after testing with the RPi that it was going to be a lot of work to get it into a state that worked robustly and was user friendly for non-technical people. So the next version I decided to move to an ESP-32, which used a lot less power, handled shutdowns much better, and could have much simpler code. I also decided to get my own website to serve the images, moving away from the email solution. I still like the email option, but I haven't worked out a good way to implement it yet.

    This just used the esp32 dev board and didn't have a battery, but it was all I needed to work out the code on both the esp32 and the server. Originally I had the images just sitting in a public folder, which anyone could access if they worked out the (easily guessable) URL, but now they are served through a php script which requires a key specific to the "frame" making the request. The server has a database with the details and settings of the different frames (i have multiple running at once), which means some can have different resolutions, colour depths, update times and so on.

    The frame itself was just a picture frame I bought from a supermarket, so looked passable from the front but of course a mess on the inside.

  • 1st version, Raspberry Pi Zero

    Cameron05/21/2022 at 14:35 0 comments

    So the first version of this concept used a Raspberry Pi Zero and received the images by email. I liked how easy it was for anyone to send images by email, without needing to remember a link (although it needed a specific password in the subject line to be displayed). But the email was a googlemail account, which was a mess for me to set up without getting it blocked for accessing it automatically and so on. And I never fully trusted google not to change the service in a way that would break the system.

    Also, the Pi was definitely overkill. It allowed a lot of nice onboard image processing options, but that really wasn't necessary, and the whole startup and graceful shutdown issues made the power supply a lot more complex. I used a nice 16bit greyscale e-paper display though, which looked really good and it had an 1872×1404 resolution, so it was actually quite hard to see that it wasn't a printed image. The contrast is better with the lower resolution displays I'm using now. Also, the high resolution display needed a bit more complicated driver, and was about double the price. I might go back to it in a future version.

    My brother made a nice wooden frame for it, with a water jet cut and bent aluminium backing (still looking for the photos though). It looked quite nice but the inside was held together with blu-tac and tape, and was a mess of wires.

View all 2 project logs

Enjoy this project?



ashrond wrote 05/24/2022 at 18:34 point

so... where are the board files?

  Are you sure? yes | no

Cameron wrote 05/25/2022 at 12:49 point

Just uploaded them!

  Are you sure? yes | no

Richard Hogben wrote 05/24/2022 at 15:30 point

The sharable link is a cool twist on the digital picture frame idea.

  Are you sure? yes | no

rewindthefilm wrote 05/24/2022 at 03:28 point

Amazing idea. I'd love to have that hanging in my living room.

We got a newborn child who we want to keep away from bright screens as long as possible and this would be perfect for me to share my day with him when I'm at work.

I'd manage to order the PCB and parts and assemble it myself, but I haven't got a clue how the web backend stuff works. 

  Are you sure? yes | no

Cameron wrote 05/25/2022 at 12:55 point

Thanks! I also am very bad with the web-backend stuff, so unfortunately I'm a bit hesitant to share my code on that. It is relatively straightforward to get the esp32 to display an image from a URL however, so if you are able to find some way to change an internet accessible image you could approach it that way? Maybe an image sharing service with a static URL? If there's interest I could share a minimal version of my ESP code.

  Are you sure? yes | no

Vlad Conut wrote 05/27/2022 at 05:18 point

Yes please 😁 

  Are you sure? yes | no

Gage wrote 05/30/2022 at 06:11 point

I would very much appreciate any chicken scratch. I am so close to having a working model using a lilygo 4.7 with an esp32, but am having issues reading the data. 

I'm successfully making an http connection and it begins reading into a buffer, but I think I'm running out of memory. It'll crash and restart the board

  Are you sure? yes | no

Emory wrote 05/23/2022 at 01:00 point

This is really sweet. I chanced upon this today. I like what you’re doing a lot! Would be very interested to see this develop. I’ve looked for quite sometime online to try to learn how to make something like this. I love the idea of a picture frame that can change photos but I never have liked any of the digital picture frames that are out there on the market. I don’t like the screen and the light and the brightness. I always thought an e-ink picture frame would be perfect. There are a few products out there but are quite expensive and don’t quite have that simplicity of “just an average picture frame than can easily have pictures added that changes photo occasionally”, sort of look. 

I like this because of its simplicity. I’d certainly be interested in learning how to build one of these, experimenting with color e-ink as well. 

One way you could hide the USB port could be to look into doing a magnetic attach wireless charging thing if something like that isn’t prohibitively expensive. 

As far as the transition between photos, if there’s not an easy way to pare down the time it takes to transition or affect the way it looks while transitioning, then perhaps an idea to solve it would be to implement some sort of area motion sensor that would ‘look’ if there were motion nearby at the scheduled time to change a photo and if there was, then to not have the photo change until it detected that there was no longer any nearby motion. Though, I’m not sure how this may affect battery life. 

I think it would be a great idea also to make it so several frames could be linked and would display the same photo at the same time. That way if they were given as gifts, everyone who had them would see the same photo at the same time and there’d be a sort of communal feeling to the experience of passing by your photo frame while knowing that your friends or family might would be viewing the same photo at that same moment as you. 

I have many other ideas. It would be interesting to collaborate should you have an inkling to do such a thing :)

Anyhow, great job and keep it up :)

  Are you sure? yes | no

Cameron wrote 05/25/2022 at 13:04 point

Cool ideas! I very much like the wireless charging idea, something I'll keep in mind for the next revision. I have a colour e-ink screen on my desk I've yet to play with as well, certain images can look very nice on it, just like a watercolour. My ultimate dream would be to add some kind of neural network style transfer processing to the image (right now it's bog standard dithering), to make "any" image come out in a style that best uses the limitations of e-ink.

On my website I'm already working on getting links to upload to multiple frames, so with my family we can share one image with all of us simultaneously. Or with my friend's meme chat, so we all wake up to the same weird cat. Right now my approach to the image change times is that the wakes up, gets the latest/next image, asks the server for it's next sleep time, then goes to sleep. The issue with this approach is that once it's sleeping, you can't change any settings until it next wakes up, so forcing a simultaneous image time is a bit tricky (unless it's planned a day in advance to give all frames the chance to synchronise). I like the idea though and will keep thinking if there's a better solution that can make it more flexible.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates