Systems status: [ OK ]
  • [ OK ]proxy
  • [ OK ]mailserver
  • [ OK ]sunrise
  • [ OK ]

DIY LED message board: part1

Looking for a unique and customizable project to work on with your Raspberry Pi Zero W? Look no further than a DIY LED message board.

DIY LED message board: part1

Scrolling LED signs are everywhere: storefronts, bus stops, even kitchens. But building one yourself is both cheaper and more fun — and it gives you complete control over what messages appear. I decided to build mine with a Raspberry Pi Zero W and a 16×32 RGB LED matrix.


Why the Pi Zero W?

It’s small, cheap, Wi-Fi enabled, and more than powerful enough to drive an LED matrix. Using the Zero W keeps the board compact enough to fit into a custom case without looking like a science project.


The hardware

  • Raspberry Pi Zero W
  • 16×32 RGB LED matrix (HUB75 connector)
  • Level shifter or HAT for safe 3.3V → 5V signaling
  • 5V 2A power supply (the LEDs get hungry)
  • Wires, breadboard, or an adapter board

At first, I tried wiring individual LEDs to GPIO pins — quickly realized that controlling each LED manually is painful and doesn’t scale. That’s why LED matrices with driver chips (MAX7219 or HUB75) exist: they handle the multiplexing, and you just push frames.


Wiring and libraries

I used the excellent rpi-rgb-led-matrix library. It takes care of the low-level timing, leaving you free to focus on what to display.


A minimal example: scrolling text

from rgbmatrix import RGBMatrix, RGBMatrixOptions
from samplebase import SampleBase

class ScrollingText(SampleBase):
    def __init__(self, *args, **kwargs):
        super(ScrollingText, self).__init__(*args, **kwargs)

    def run(self):
        canvas = self.matrix
        font = self.load_font("fonts/7x13.bdf")
        textColor = (255, 255, 0)
        pos = canvas.width
        message = "Hello from Pi Zero!"

        while True:
            canvas.Clear()
            length = canvas.DrawText(font, pos, 10, textColor, message)
            pos -= 1
            if pos + length < 0:
                pos = canvas.width
            time.sleep(0.05)

if __name__ == "__main__":
    ScrollingText().process()

This creates a simple horizontal scroll across the matrix. Change the message string and you’ve got your own ticker.


Lessons learned

  • Power draw is non-trivial: driving all LEDs white at full brightness can pull >2A. Plan your PSU accordingly.
  • Brightness control matters. At night, full power is blinding — dimming via software is essential.
  • Fonts and legibility: not all fonts scale well to tiny 16-pixel heights. Stick to monospaced bitmap fonts for clarity.
  • Case design: a wooden or acrylic frame makes it look like a finished product instead of a dev kit.

What’s next

Right now mine scrolls static text. Next steps:

  • Expose a small Flask web server so I can send messages from my phone.
  • Add a message queue so multiple inputs get rotated.
  • Pull in live data (weather, bus arrivals, stock tickers).

Building a DIY LED message board reminded me how satisfying it is to see code turn into light. The Pi Zero W makes it tiny and wireless, and the project scales from “hello world” to full-on message hub.