From "Spirited Away (2001)" © 2001 Studio Ghibli・NDDTM.
timelapse_11_cut.mp4
Yet another "Slow Movie Player" implementation with 7-color E-Paper module and ESP32.
Features:
- 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.)
A few years later from my previous EPD project SHIHEN, while being impressed on "Slow Movie" and forks ([1], [2]), I was wondering it would be fun if I could also have something bigger and more eye-catching than SHIHEN. One day 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. So I decided 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.
WIP
- ESP32 (ESP-WROOM-32)
- Waveshare ACeP 7-Color E-Paper Display Module (600x448 5.65inch)
- SMD microSD slot
- microSD card
- M2*5 screws * 4
- AAA batteries * 3
See ./kicad.
See ./openscad.
$ pio run || pio run # The very 1st run may fail due to ulptool-pio
$ pio run -t upload
Your video file must get converted to a special format before being placed on the microSD.
Simply put 1. Dump video frames to a bunch of PNG images.
2. Apply palette to the images.
3. Concat the images into a single file.
You have several options as follows. After obtaining index.bin
and images.bin
, place them onto the root of your FAT32-formatted microSD.
$ cd converter
$ cp path/to/your_vid_file .
$ docker-compose run --rm converter your_vid_file
- Note that you have to install ffmpeg, ImageMagick, node(v16) beforehand.
$ cd converter
$ ./convert.sh path/to/your_vid_file
- Dump video frames into .png files.
$ cd converter
$ mkdir -p vid
# -r 1/2 == 0.5 FPS
$ ffmpeg -i path/to/your_vid_file -r 1/2 -vf scale=-1:448,crop=600:448 vid/vid_%06d.png
As you may have noticed, you can use any kind of image sources here not only usual video files.
$ mogrify -monitor -dither FloydSteinberg -remap epaper_7c_palette.png vid/*
- Generate
index.bin
andimages.bin
.
$ npm ci
$ node generate-index-bin.js vid/
WIP
PRs accepted.
Small note: If editing the README, please conform to the standard-readme specification.
MIT