ScoreCast Sports Ticker

A Real-Time Multi-Sport LED Display System for Raspberry Pi

Tech: Python · Raspberry Pi · RGB LED Matrix · Flask · REST APIs · Multithreading · Systemd · HTML · CSS · JavaScript

Features Web Dashboard Source Code

Overview

ScoreCast is a Raspberry Pi-powered sports information display designed for RGB LED matrices. The system continuously retrieves live game data, renders compact scoreboard cards, and scrolls them smoothly across a 384-by-32-pixel LED display.

The application supports multiple professional and collegiate sports, including MLB, NFL, college football, NBA, NHL, and soccer.

A responsive Flask-based web dashboard allows users to choose which games are displayed, reorder cards through drag-and-drop controls, configure brightness and scroll speed, select news leagues, connect supported services, and manage external API settings.

My Engineering Contribution

Core Features

Live Multi-Sport Scores

Fantasy Football

Display Performance

Web Dashboard

ScoreCast includes a built-in web application that can be opened from a phone, tablet, or computer connected to the same network as the Raspberry Pi.

The dashboard provides direct control over the ticker without requiring SSH access or manual source-code changes.

Web Dashboard Screenshots

The responsive dashboard is designed primarily for mobile use while also working on desktop browsers.

ScoreCast games selection dashboard ScoreCast league selection Fantasy Dashboard
ScoreCast fantasy football dashboard CFB League Selection Dashboard

Hardware Integration

ScoreCast runs on Raspberry Pi OS Lite and controls a chained RGB LED matrix through the rpi-rgb-led-matrix library. The display is configured as a 384-by-32-pixel canvas and powered separately from the Raspberry Pi.

ScoreCast RGB LED sports ticker displaying live game information

ScoreCast displaying real-time sports cards on a Raspberry Pi-powered RGB LED matrix.

Performance Optimization

Initial versions of the application regenerated every game card during every animation frame. This caused unnecessary CPU usage, increased Raspberry Pi temperature, and reduced scrolling smoothness.

I redesigned the rendering pipeline so cards are generated only when their underlying game data changes. Cached card images are reused by the 60 FPS scrolling loop, while API calls and settings updates occur on independent timers.

Software Reliability

ScoreCast is deployed as a Linux systemd service. This provides automatic startup, centralized logging, and automatic recovery if the Python application exits unexpectedly.

sudo systemctl status scorecast
sudo systemctl restart scorecast
sudo journalctl -u scorecast -f

The project also includes a virtual environment and requirements file to provide reproducible dependency installation on a clean Raspberry Pi OS Lite system.

Challenges and Solutions

Preventing Display Freezes

Network requests originally ran inside the main rendering loop, causing the scrolling animation to pause while waiting for API responses. I moved all refresh operations into background threads and protected shared game data with locks.

Handling Duplicate Matchup IDs

Different sports can contain the same team abbreviations and matchup strings. For example, an MLB and NFL game may both appear as ATL@PIT. I added league prefixes to game identifiers so each card remains unique:

mlb:ATL@PIT
nfl:ATL@PIT

Supporting Different Card Types

Standard game cards and larger news cards require different widths. I implemented dynamic card sizing so each object reports its rendered width and the scrolling system calculates spacing accordingly.

Managing API Limits

Betting odds APIs often provide limited monthly requests. Odds are therefore cached and refreshed much less frequently than live scores, preventing unnecessary API usage.

Future Development

Source Code

The complete source code, installation instructions, and release history are available on GitHub.

Version 1.0

ScoreCast v1.0 represents the first stable release of the project. It includes multi-sport score support, a responsive web dashboard, game ordering and filtering, news cards, betting odds integration, background API refreshing, cached rendering, and automatic system startup.

Back to Projects