Raspberry Pi powered e-paper display takes months to show a movie

We loved the filmic flair of Tom Whitwell‘s super slow e-paper display, which takes months to play a film in full.

Living art

His creation plays films at about two minutes of screen time per 24 hours, taking a little under three months for a 110-minute film. Psycho played in a corner of his dining room for two months. The infamous shower scene lasted a day and a half.

Tom enjoys the opportunity for close study of iconic filmmaking, but you might like this project for the living artwork angle. How cool would this be playing your favourite film onto a plain wall somewhere you can see it throughout the day?

The Raspberry Pi wearing its e-Paper HAT

Four simple steps

Luckily, this is a relatively simple project – no hardcore coding, no soldering required – with just four steps to follow if you’d like to recreate it:

  1. Get the Raspberry Pi working in headless mode without a monitor, so you can upload files and run code
  2. Connect to an e-paper display via an e-paper HAT (see above image; Tom is using this one) and install the driver code on the Raspberry Pi
  3. Use Tom’s code to extract frames from a movie file, resize and dither those frames, display them on the screen, and keep track of progress through the film
  4. Find some kind of frame to keep it all together (Tom went with a trusty IKEA number)
Living artwork: the Psycho shower scene playing alongside still artwork in Tom’s home

Affordably arty

The entire build cost £120 in total. Tom chose a 2GB Raspberry Pi 4 and a NOOBS 64gb SD Card, which he bought from Pimoroni, one of our approved resellers. NOOBS included almost all the libraries he needed for this project, which made life a lot easier.

His original post is a dream of a comprehensive walkthrough, including all the aforementioned code.

2001: A Space Odyssey would take months to play on Tom’s creation

Head to the comments section with your vote for the creepiest film to watch in ultra slow motion. I came over all peculiar imaging Jaws playing on my living room wall for months. Big bloody mouth opening slooooowly (pales), big bloody teeth clamping down slooooowly (heart palpitations). Yeah, not going to try that. Sorry Tom.

39 comments

Ashley Whittaker

I would *love* this playing living art on the big blank wall in my lounge. We usually project films onto it but that old thing overheats all the time. The bulb is slowly dying too so we have constellations twinkling over the top of whatever we play. It’s cute though.

Avatar

Thanks for posting Ashley, but yes, this is definitely NOT my idea – it was 100% inspired by Bryan Boyer

Ashley Whittaker

PS – with so many people at Raspberry Pi towers saying what a good idea this is, I’m reminded that Tom was inspired by Brian Boyer, who made something similar back in 2018: https://medium.com/s/story/very-slow-movie-player-499f76c48b62

Avatar

This is such a great idea. Can anyone thing of a reason why the Zero WH wouldn’t work for this project? Does it need that much processing?

Oliver Quinlan

+1 ! I wondered this. The 4 seems hi spec for this, it’s not like it needs to do anything quickly!

Avatar

Haven’t tried it with a Zero WH, will have a go

Oliver Quinlan

Thanks Tom, let us know how it goes!

Avatar

I built this with a Pi zero and haven’t encountered any problems with it!

Avatar

Oh, that’s great to hear – using this code? Mine comes later today, I think!

Avatar

Yep, I pretty followed your Medium post word for word. Got it working with a Pi 3 Model B first. Then decided to swap it to a Zero to make a thinner 3d printed frame for it. I don’t even think I had to change anything, just swapped the SD card.

It’s been on my wall for a week and have had no issues with it. I have it updating every 5 minutes and I have it skip some frames every time. It’s currently 8 minutes into the movie Up and it looks great!

Avatar

Hi Tyler, can I ask how you got this working? I’m trying on a Zero WH with a Waveshare 7.5 inch E-Ink Display. SPI on, bcm2835 libraries installed, python, pip, pil, numpy RPi.GPIO and spidev all installed. The setup.py file is completed and ffmpeg-python is installed. However as soon as I try and run the provided 7in5 test .py file, helloworld.py or slowmovie.py my device crashes, losing VNC and SSH connections. Would you have any feedback for the Pi Zero solution?

Avatar

Nice project.
How about a normal speed mini movie player: https://www.raspberrypi.org/blog/raspberry-pi-retro-player/

Oliver Quinlan

This is so cool! Really keen to make one of these just for 2001 alone.

Avatar

I use ePaper in my professional life and this is an interesting take on a use for ePaper. I am curious as to what this would do to the life of the display, since ePaper has a basic lifespan defined by the number of updates it receives coupled with its age. A two hour movie at 24 frames a second is 172,800 screen changes. I wonder how many movies you can actually get before the ePaper starts showing signs of wear.

Avatar

Anyone else think that the movie for this device has to be Memento?

Avatar

How about Baywatch series? ;-)

Avatar

Super cool! I’m looking at e-ink screens, and they are all pretty small. Anyone have advice on how to expand on this idea by splitting the movie across 4 e-ink screens (i.e., multiple monitors)?

Avatar

Poderia ter sido feito com um simples microcontrolador de 8bits.

Avatar

“28 Days Later”

Avatar

“9 1/2 Weeks”

Avatar

Star Wars

Avatar

“In Time”

Avatar

Can you have a playlist of files run in sequence/loop? I’m definitely building one of these. Have around 600 movies on my Plex server, thinking I can compress a few down onto the SD card.

Avatar

How about the entire MCU films in chronological order? That would take forever.

Avatar

I think this is a really interestig project, both for the use of the lovely e-paper technology and for the technique, but is there a reason not to just use an offline Pi or other computer to render all the frames of a film to individual images at an appropriate resolution and then put them on an SD card or USB storage, and just do a slideshow at whatever speed you want?

Avatar

I was thinking the same. I suppose giving the script access to an mp4 and letting it makes images as it goes along makes it easier to get working, but it gives less control. Making all the images in advance would not be difficult, would allow you to use something other than PIL (ImageMagick has more than one dithering method) and check results. And you could use a much lower capacity SD card in the Pi. If I make one of these, and I am seriously considering doing so, that’s the approach I’ll take. Also a Pi Zero. A Pi 4 is way over powered for this, especially if you make the images in advanced.

Avatar

Haha so what is that, like 1 frame per 24 seconds? This could be like holy water to use against the ultra-high FPS gang…

Avatar

Maybe not the best device to play a movie but I could see this idea being useful for some other applications.

Avatar

I think you have completely missed the point of the project.

Avatar

Nice Project. Can you make a video about it? I would Like to see how it shows

Avatar

And then play that video on the device…

Avatar

Definitely doing this with a 0W I have in a drawer and put Young Frankenstein on it.

Avatar

Take your coke and popcorn and then watch the video :-)
*lol*
Bernhard

Avatar

Try “Logistics” on this creation. It’ll last longer than the life of Earth!

Avatar

Have around 600 movies on my Plex server, thinking I can compress a few down onto the SD card.
IT Zone

Avatar

Definitely doing this with a 0W I have in a drawer and put Young Frankenstein on it.
Nice Project. Can you make a video about it? I would Like to see how it shows

Avatar

Neat! I would like to hook up an e-ink display to use as a reader maybe. I never considered it for the pi.

Avatar

I built this using the equipment Tom listed. When I played the test video and my own video (29 and some change frames/sec) I get a flash (blank white screen) between frame changes, regardless of my d- and i- values. Is that normal? I believe I followed the directions but maybe I missed something. I’d love to have a more smooth transition between frames. Any ideas? Thanks!

Avatar

Make “127 hours “ run in 127 hours?

Leave a Comment

Comments are closed