Slow Movie Player 7C

Yet another "Slow Movie Player" implementation with 7-color E-Paper module and ESP32.

Similar projects worth following

A few years later from my previous EPD project SHIHEN, while looking on impressive "Slow Movie" and forks ([1], [2]), I was wondering it would be fun if I could have something bigger and more eye-catching than SHIHEN. 

Recently I found a multi-color E-Paper module available and immediately made an impulse buy. At that time, in Endless Endless Eight I had just started learning how powerful ESP32 ULP co-processor is, especially for battery-powered devices. That is where I came up with an idea to make a yet another variant of slow movie player by combining the two components.

The 7-color EPD module has notoriously long refresh time (>= 30 sec), however by delegating BUSY signal handlings to the ULP co-processor, the ESP32 module itself can be stay in Deep Sleep at most of the time.

Given the ESP32 module in the Deep Sleep mode only draws a dozen uA (Actually 12 uA measured = 6 uA for the module + 6 uA for peripherals.), theoretically the device can survive over a year under a 2000 mAh rated battery and 2 hours of wake interval.


  • 7-color E-Paper
  • microSD (MMC_SD) as the main storage
  • Power management by the ESP32 ULP coprocessor
  • Battery operated (12 uA @ Deep Sleep. Runs 1.2 years on a 2000 mAh battery.)

⇨ See for code, schematics, OpenSCAD files and stl files, etc.

  • 1 × ESP-WROOM-32
  • 1 × Waveshare ACeP 7-Color E-Paper Display Module 600x448 5.65inch
  • 1 × SMD microSD slot
  • 1 × microSD > 1GB
  • 1 × AO3401 N-ch MOSFET

View all 9 components

  • Minor updates: Zero-power battery voltage monitoring, battery holder

    likeablob08/18/2022 at 10:42 2 comments

    in Spongebob voice

    After 5 months, the prototype is still running fine w/o replacing batteries. Under 30 min. refresh interval, it will survive the next 3+ months with the three 2000 mAh NiMH batteries.

    Also I pushed some minor updates to the repo.

    1. Zero-power battery voltage monitoring

    When measuring battery voltage with a uC, placing a simple two register voltage divider in between ADC and V_BAT is one of the most common way to scale the voltage. However, since the divider are just two resisters between V_BAT and GND. it consumes current constantly at uA~nA scale. And that leak current is HUGE when we want to keep the device running over months or years.

    Instead of adding two or more P/N FETs or a 8-pin OP-amp to the circuit, [JEELABS] shows a clever trick to reduce the current to (literally) zero with a single N-ch MOSFET.

    In the above schematic, +BATT to be measured is about 4V and it's divided by 3k/1k registers. So ADC (BAT_V_MON) senses 1V (=4V/4) typically. To turn the MOSFET on, we have to apply a voltage to its Gate (1) several volts higher than the Drain (3). The condition is satisfied since BUS_POWER is at 3.3V regulated when the device is awake. Of course the MOSFET is turned off when BUS_POWER is kept at 0V during the device sleeping. (see details)

    The firmware has also been updated to monitor the battery voltage and show a low battery notification when the voltage goes under 3.5V.

    2. Battery holder improvement

    Added some overhangs for holding batteries better.

    And... one more thing. 

    Simplest discrete battery holder ™

View project log

  • 1
    Print spacers

    Print four parts with PLA. STLs are available under /openscad

    Since it's all written in OpenSCAD, you can easily make the parts fit to your photo frame.

  • 2
    (Optional) Solder wires to spring plates

    If you'd like to use a LiPo battery instead of three AAA batteries, you can skip this step.
    Solder a pair of wires to metal battery contacts.And then insert them into the spacer.  

  • 3
    Attach spacers onto EPD module

    With M2*5 screws, tightly fix the spacers onto the EPD module as follows.

View all 6 instructions

Enjoy this project?



Dylan wrote 08/31/2022 at 01:44 point

Hooking this into a text-to-image generator would be pretty neat. 

  Are you sure? yes | no

likeablob wrote 08/31/2022 at 07:44 point

Hi, @Dylan 

Yeah, that's exactly what I'm thinking. (I'm writing this on my machine, which is loudly howling on the load of mining cat pictures with Stable Diffusion. Cat Picture Please!)

Probably it's possible to generate clock faces dynamically for a "photo" clock (which is analogous to a fuzzy "word" clock or just an alternative to "Bijin-Tokei").

  Are you sure? yes | no

Waldo Wolmarans wrote 08/29/2022 at 03:27 point

Very cool @likeablob 

I must definitely try the 7 color e-paper screens.  Like the integrated battery holder. Using AA batteries is a good choice I think . Did you try with only 2 batteries with no LDO ?

  Are you sure? yes | no

likeablob wrote 08/31/2022 at 06:36 point

@Waldo Wolmarans  Thank you! Long time no see, BTW :D.

Yeah NiMH AAs are handy even in this era especially if you can rotate over a ton of reserves in your shelf. (Probably a long range power feeding tech can exterminate them in future.) Also NiMH can handle ESP32's relatively high in-rush current.

For the two batteries configuration, I haven't tried it yet. By the datasheet, the ESP32 module can only be operated in 3.0~3.6 V range. So considering the nominal cell voltage of NiMH (1.2V) or Alkaline battery (1.5V), it could be a bit tricky I guess. 

  Are you sure? yes | no

jen123cruz123 wrote 08/26/2022 at 16:55 point

This is what I want to see.

  Are you sure? yes | no

goodlucknow wrote 08/23/2022 at 13:32 point

This is great! Awesome project @likeablob !

Seriously considering attempting to adapt & build one, although it's a little more complex than stuff I'd usually go for.

Are the additional MOSFETs and resistors in the circuit you designed part of what keeps the power draw so low?

*edit*: eagerly awaiting the "how it works" section on github.

  Are you sure? yes | no

likeablob wrote 08/26/2022 at 07:35 point

Hi @goodlucknow. Thank you for your comment!

Yes, the MOSFETs are for just a high-side switch for reducing standby power consumption of the microSD.
As you can see in the schematic diagram below, the circuit is quite simple.

Here is a quick explanation: The LDO (XC6206p332MR) generates a 3.3V rail from three AA NiMH batteries (typ. 1.3*3 = 3.9V). The ESP32 module (ESP32-WROOM-32E) and the microSD are driven on the rail, but latter can be shutdown by the high-side switch.

Since typical ESP32 dev boards come with extra peripherals such as a USB-Serial IC, to reduce the Deep Sleep current, I decided to go with the plain WROOM module. 
From a quick measurement, the module draws 6 uA in Deep Sleep mode and the other components (LDO, etc.) draws 6 uA, so 12 uA in total.

As I made the prototype as a one off build, the KiCad PCB design does not have traces and only reflects components arrangement briefly. However, with a role of tinned wire and a 70x50 prototyping board, you can build your own I think.

If you're not familiar with the ESP32 module, you may want to start from soldering a WROOM module reversely and ensure it's programmable via a USB-UART dongle lying around.

  Are you sure? yes | no

goodlucknow wrote 08/29/2022 at 10:17 point

Thanks so much for the response and the write up!

  Are you sure? yes | no

Ryan wrote 08/19/2022 at 15:09 point

Cool project!  Do you have a link to the picture frame that was used?  Did you get a custom matboard cut?

I've used IKEA Ribba frames for something similar, with a custom matboard from, but I like the way your frame closes up.

  Are you sure? yes | no

likeablob wrote 08/20/2022 at 12:55 point

Thanks! I've ordered the frame and matboard from the following seller in Japan. (They don't offer international shipping seemingly...)

To put all the components incl. AA batteries into the frame, I chose this frame which has a room along Z-axis (22 mm - 1 mm glass - 1.2 mm matboard - 3 mm backboard = 16.8 mm for the component).

The section below has details of the dimensions. Hope this helps!

  Are you sure? yes | no

Dan Maloney wrote 08/18/2022 at 20:04 point
I'm kinda in love with these slo-mo players, but I always thought putting a color film on a B&W player was sort of wrong. Even with dithering, it just doesn't work for me. But color EPD is another thing, and I think you did a great job here. I might have to pick up the parts and try this myself!

In the meantime, I wrote this up for the blog and the post should go live soon. Thanks for the tip, and please keep us posted on progress and other projects. Thanks!!

  Are you sure? yes | no

likeablob wrote 08/20/2022 at 13:03 point

Hi, Dan. Thank you for your comment & blog post. It's kinda unbelievable to see my project on the HaD headlines!

  Are you sure? yes | no

Morgan wrote 08/18/2022 at 14:00 point

The idea and the result are so great!

  Are you sure? yes | no

likeablob wrote 08/20/2022 at 12:56 point

Thank you! :D

  Are you sure? yes | no

xofisi7474 wrote 05/01/2022 at 00:52 point

Great blog !! You should start many more. I love all the info provided. I will stay tuned.

  Are you sure? yes | no

richardsfowler wrote 04/04/2022 at 11:25 point

Wow! This is really great for

  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