Hans Elias Bukholm Josephsen, AKA Hansihe, has been spending a lot of time at his local hackerspace. HackHeim is located in Trondheim, Norway in a shared space, and Hansihe wanted a way to make it stand out. The obvious solution was to build an eye-catching sign, and this beautiful modern sign backlit by a rainbow of LEDs was the result.
Hansihe started by fabricating the letters on HackHeim’s in-house laser cutter. Each letter measures 37cm (about 14.5 inches) tall, and has its own strip of Adafruit NeoPixel-style WS2812B individually-addressable RGB LEDs attached on the backside. In order to reduce the LED update times and keep the animations smooth, each letter’s LED strip is controlled individually — as opposed to chaining them altogether.
The LEDs are controlled by an ESP32 with firmware developed in ESP-IDF. Rendering the frames and actually writing to the LED strip are separated into two separate FreeRTOS tasks, so one frame is being calculated while the previous frame is still being written to the LEDs. The real trick, however, was mapping the LEDs for the animations.
Normally, you’d probably map the position of each LED manually, but that wasn’t practical for this sign because the LEDs point against the wall. Instead, Hansihe used an Android camera app, OpenCV, and Python to automatically map the LED positions as they’re toggled on and off. With the LEDs mapped, they could be synced through an MQTT channel to create the buttery-smooth animations you see in the video.