Build a Raspberry Pi Wireless Scoreboard and Game Timer
Board game groups, backyard sports, and home trivia nights all hit the same wall eventually: keeping score on a whiteboard or phone app works, but it's not visible to everyone at once, and a shared phone passed around to update a running tally interrupts the game itself. This project builds a wall- or shelf-mounted scoreboard driven by a Raspberry Pi, displaying scores and a countdown timer on a large seven-segment-style LED matrix display, controlled wirelessly from any phone or laptop on the same network through a simple web page — no app to install, no dedicated remote to lose.
How It Works
The Raspberry Pi runs a small web server (Flask is a good fit for this scale) serving a control page with buttons for incrementing each team's score, resetting, and starting or pausing a countdown timer. Any device on the local network — a phone, tablet, or laptop — can open that page in a browser and control the board without any app install. The Pi drives a large-format LED matrix display over SPI or I2C depending on the controller board, updating the displayed score and timer in real time as the control page sends commands. Because the control surface is just a web page, you can trivially add a second or third device controlling the same board — handy when two team captains both want control without passing a single phone back and forth.
Parts List
- Raspberry Pi (Pi 4 or Pi 5 recommended for smooth web server + display driving performance; a Pi Zero 2 W works for a single-display build if budget matters more than headroom)
- Large-format 7-segment or dot-matrix LED display module (MAX7219-based modules are inexpensive, chainable, and well-supported in Python)
- 5V power supply sized for the Pi plus the display's peak current draw (check the display module's datasheet — large matrix displays at full brightness can pull more current than the Pi itself)
- Momentary push-buttons (optional, for physical score/reset buttons alongside the web control)
- Enclosure material — laser-cut plywood or acrylic, or a 3D-printed case, sized to the display module and Pi
- Jumper wires and a small breadboard or perfboard for wiring the display controller to the Pi's GPIO/SPI pins
- MicroSD card for the Pi's OS
Software Setup
StepDetail Base OSRaspberry Pi OS Lite — no desktop environment needed since the Pi only serves a web page and drives the display Display libraryA MAX7219-based display uses the luma.led_matrix Python library over SPI; enable SPI in raspi-config first Web serverFlask app serving a single control page with score/timer buttons, running as a systemd service so it starts automatically on boot Network accessPi joins the same WiFi network as the controlling devices; a static DHCP reservation on your router keeps its address predictable so you can bookmark the control page URL Timer logicRun the countdown in a background thread on the Pi itself rather than in the browser — this keeps the timer accurate and running even if the controlling phone's browser tab is closed or the phone's screen locksDisplay Layout Choices
For two-team scoring with a shared timer, a common layout is one digit pair per team side by side, with the timer either sharing the display in a smaller font during idle periods or taking over the full display during an active countdown. If you're chaining multiple MAX7219 modules, each additional module adds roughly 8 characters of display width per chain of 8x8 modules, so plan the physical module count around how many digits you actually need rather than over-building the chain and wiring unnecessary extra panels.
Enclosure and Mounting
A laser-cut plywood frame with a routed-out window sized to the display module's visible area, finished with a thin acrylic or polycarbonate front panel, protects the display from drink spills and stray thrown objects at a game table while keeping the whole assembly lightweight enough to mount on a wall bracket or stand on a shelf. Leave the back panel removable (magnets or a simple friction-fit tab) for access to the Pi's SD card and ports without disassembling the whole case.
Extending the Build
Once the base scoreboard works, extending it is mostly a software exercise rather than a hardware one: adding a buzzer for end-of-period alerts needs only a GPIO pin and a few lines of code, and swapping the single countdown timer for a multi-period game clock (quarters, sets, or rounds) is a logic change in the Flask app rather than a rebuild of the display hardware. Because the whole control surface lives in a web page, updating the feature set means editing the Pi's code once rather than reflashing a remote or replacing a physical control panel.