Thursday, February 1, 2018

The ESP32 Pinball RGB Matrix Animation Clock (Espirgbani)

Displays the time and random DMD animations from various pinball machines. The whole show is run by a single ESP32. The inspiration came from

The project on github


I got my two 64x32 LED panels from Aliexpress. Not surprisingly (with that price tag) they were refurbished and showed some signs of soldering rework on the boards. They do work perfectly fine though.


Easy if you have access to a laser cutter. I used 1/4 inch plywood for the back and grey tinted acrylic (expensive!) for the front. Right on top of the LED modules is a milky diffuser foil, which I got from broken LCD monitors. Hexagonal spacers hold everything together. Laser cutting is great. Stuff actually fits together just the way it should :D

Here's the Fusion360 preview

Here's the actual .dxf files

Everything runs of a re-purposed 19 V laptop power supply. The higher voltage makes it possible to use thin stealthy power cables when hanging the clock on a wall. I used two cheap step-down modules mounted to the back of the panels to generate the 5 V at up to 5 A they need.


Extremely straightforward. There's the ESP32, a 3.3 V regulator, a programming port, a SD card slot (from a dead RaspiA) and that's about it. All the tricky stuff happens in firmware.



  • Uses sprite_tm's I2S DMA driver to refresh the display at > 100 Hz with zero CPU load
  • Right now there's 3 graphical layers: animated background, time string, pinball animations
  • All framebuffers are RGBA. Does full alpha compositing (with pre-multiplied RGB values) according to the classic paper.
  • Uses a variable width & anti aliased bitmap fonts for writing the time. Supports the AngelCode bitmap font format and reads .bmp and binary .fnt files from the SD card.
  • Credit for collecting a huge number of pinball animations goes to This clock supports the same image-file format.
  • Uses some nice C (almost) one liners to produce attractive animated backgrounds on the fly. It's like a poor mans shader
  • Has a simplistic (needs more work!) web-interface based on the excellent libesphttpd

Monday, September 4, 2017

Fan-Tas-Tic Pinball, Part 8, LED - display!!!

I've finally received the 32x32 panels in the mail and started assembling the play-field screen. Seeing this thing come together was a real joy!

I made some brackets from scrap wood to precisely align the LEDs with the pixel grid, which worked out quite well. And yes, no joke, right now the panel is mounted with fishing line.  


The panel is driven directly from the GPIO ports of the Raspberry PI. This is possible thanks to hzellers LED library. The 3 ICs on the adapter board are TTL buffers for 3.3 V to 5 V conversion. On the right is the complete Fan-Tas-Tic controller board including all PSUs, mounted on a wooden plank

I'm quite happy with the way it turned out. Especially adding the diffusor sheet from a LCD screen and replacing the window with tinted acrylic gave it exactly the stealth and pixelated look I was after. This is especially obvious in the video below, where I put it all together:

Next step is integrating the screen in the Mission Pinball framework and finally coming up with some  game-rules, graphics and sound-effects.

Sunday, August 20, 2017

Hydroponic Veggies Part 3 -- Calibrating the PH probe

Step 1: Buy calibrated PH buffer solution (at least 2 different reference points are needed)

Step 2: Dip the probe in, log the raw values

Step 3: Install Python and calculate correction values

Here's the Jupyter Notebook I used for that purpose


Saturday, July 22, 2017

Hydroponic Veggies Part 2 -- The water level sensor

The initial idea was to stick a VL53L0X TOF distance sensor to the reservoir lid and get the water level from there.
Didn't work out. Not enough light reflected from the water surface lead to super flaky readings. What did work out in the end is this ...

Thursday, July 6, 2017

Fan-Tas-Tic Pinball, Part 7, Back to a LED - display!

The original Fan-Tas-Tic machine had a mechanical roulette wheel assembly, visible through a window in the middle of the playing field. For some time now I had it replaced with a 1280x720 LCD panel.


However, I'm not completely happy with this configuration and recently decided, the LCD panel has to go! 

Monday, July 3, 2017

Hydroponic Veggies

The goal is to grow tomatoes, chilis, carrots, lettuce and spinach on my balcony. It shall be hydroponic and as much automated as possible. Here's my setup so far ...

Plumbing and Dutch-buckets

No rocket since here. It's all made from 1/2 inch PCV pipe and fittings from the hardware store. The buckets were done according to these excellent instructions by mhpgardener. As I wanted the setup to be removable, I didn't use any glue. To achieve a good seal anyway, I used a bit of silicone grease on all fittings. So far it holds up fine.