Raspberry PI RGB LED Matrix Swim Meet Sign
This is my first Raspberry PI project: an LED Matrix sign for Swim Meets.

This is my first, real Raspberry PI project!
A few years ago, we moved into a new neighborhood (actually, it is quite old, my wife grew up in the neighborhood!) that has a local swim team. One of our kids decided to join the team and we found out how much work there is for parents!
One job was the person in charge of flipping cards on a PVC-sign for what event is swimming in the pool. To me, this seemed like a project that could be improved upon, greatly. Having spent a year or so playing around with Raspberry PIs, I decided this could be the project I had been looking for!
The project evolved over the years from a single RGB LED matrix, to two different signs, to one sign with two matrixes side by side. Overall, I really learned a lot about many things, from python to redis to MQTT to Arduino/esp8266 to 3D printing. That is what makes projects like this so much fun, you get to learn about so many different technologies as you look for the perfect solutions to your challenges.
This video describes my journey in making the sign:
My complete bill of materials:
- Raspberry PI model 3 B+ (I'm sure a model 4 would be excellent!)
- Two Adafruit 64x32 LED Matrix 6 pitch https://www.adafruit.com/product/2276
- An Adafruit RGB Matrix Hat https://www.adafruit.com/product/2345
- DC 2.1mm jacks for power https://www.adafruit.com/product/368
- Two good power supplies https://www.adafruit.com/product/1466
- A USB WiFi Antenna for better range https://www.adafruit.com/product/1030
- An Adafruit Feather Huzzah with WiFi https://www.adafruit.com/product/2821
- Two arcade buttons https://www.adafruit.com/product/3432
- A 2000mAh battery for the Feather Huzzah https://www.adafruit.com/product/2011
A high-level diagram of what the project looks like:

The overall application process is sort of like this:
- A python process runs as a daemon on the PI to draw on the LEDs. This loops and looks for a key in Redis to start, as well as to increment the values displayed on the screen.
- A set of Redis key/values are loaded from a CSV file for the meet order. Each meet is different, so this is created the night before.
- A tornado web server runs to display the events for local clients and also has an admin page to increment the events in case of remote control failure (always have a backup plan!)
- A remote control uses two arcade buttons to increment or decrement the event order. This is the ESP8266 that connects via WiFi and sends MQTT messages to the PI. Just a simple "increment" or "decrement" message is sent for updates. Very lightweight and fast.
- In the past I have also used a cloud VM to make the meet status available on the Internet. This uses a VPN from the Raspberry PI to the Cloud to update a secondary Redis server and Tornado Web server.
I've had a lot of fun working on this over the years. Drop me a line if you have any questions about the sign. mike at hollyman dot net
DISCLAIMER: The pages on my site may contain affiliate links, which means that if you click on one of the product links, I’ll receive a small commission that helps keep this site running.