[Stefan Schüller] was a fan of the LED signs that display arrival information for the trams and buses in their city of Zürich. [Stefan] was having trouble finding a source to purchase the signs so, instead, decided to build one himself.

[Stefan] decided to recreate the 56×208 single color 2mm dot pitch display with an 128 x 64 P2 RGB LED screen respecting the same 2 mm pitch. The display is driven by an ESP32 DMA RGB LED matrix shield utilizing a HUB75 RGB LED matrix library, all being powered from a 5 V 4 A power supply.

In addition to driving the LED matrix display, the ESP32 polls Zürich’s public transportation API and then parses the XML for the relevant information. Since [Stefan] wanted to match the fonts as closely as possible,
he created a new font from scratch, including the bus and accessibility icons. The new font was encoded into a glyph bitmap distribution format (BDF) that was then converted to work with Adafruit’s GFX library, with [Stefan] creating a custom conversion tool, called bdf2adafruit, to do the last leg of the conversion.

Since the LED matrix had full color capability, [Stefan] decided to add a little extra flourish and color code the transportation lines with the official tram colors. All source code is available on his GitHub repository for the project, for those looking for more detail.

We’ve featured DIY builds of public transportation feeds before. With the ubiquity of low cost RGB LED displays and public APIs, hopefully we’ll see many more!