Inkmere

Build Log · Hardware

The Pi was overkill

A black GOOUUU ESP32-S3 dev board lying next to the blue IT8951 driver board, with the driver's labelled SPI pads visible.
The swap, side by side. The little ESP32-S3 took over from the Raspberry Pi, talking to the same driver board over those same eight SPI wires.

For the first month or so, the brain of this thing was a Raspberry Pi. That's the obvious place to start, because the e-ink driver I bought is sold as a Raspberry Pi HAT. You stack it on a Pi, run a bit of Python, and it works. Mine did. I even had it tucked into a little 3D-printed case.

A Raspberry Pi Zero and the blue e-ink driver board wired together inside an open black 3D-printed case.
Where it started: a Raspberry Pi Zero and the driver board in a printed case. It worked fine. It was also a whole computer.

The longer I lived with it, though, the more it nagged at me. A Raspberry Pi is a full Linux computer. It takes most of a minute to boot, it wants a clean shutdown, the SD card is one bad power-cut away from corruption, and it draws a couple of watts around the clock just existing. And for what? The actual job is barely a job: wake up every ten minutes or so, fetch one image, push it to the panel, go back to sleep. I was running an operating system to do something a much smaller chip could do without breaking a sweat.

Moving to an ESP32-S3

So I moved it onto an ESP32-S3, a tiny, cheap microcontroller with Wi-Fi built in. No operating system, no SD card, nothing to corrupt. It powers on and it's just running my code. It talks to the same driver board over the same eight SPI wires the Pi used, so the hardware underneath barely changed. The work was mostly rewriting the fetch-and-paint logic to live directly on a microcontroller instead of inside Linux, which humbled me a few times, but it was worth it.

The ESP32-S3 board and the IT8951 driver board mounted on a black plate, surrounded by flush cutters, tweezers and solder wick, with coloured wires half-attached.
Mid-swap. New wiring, the same old driver board, and the usual scatter of tools while I worked out which pin went where this time.

The payoff was bigger than I expected. Boot went from most-of-a-minute to basically instant. The corruption worry left with the SD card. And idle power dropped far enough that it opened a whole separate rabbit hole of getting it to sip almost nothing between editions, which is its own post. The Pi was the right way to find out whether the idea worked at all. The ESP32 is the right way to actually live with it.

← Back to the Build Log