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.

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.