Added section on running without sudo (gpio group). Removed integrate_news_ticker.py, src/mqtt_manager.py, and test_stock_news_manager.py as they were unused.
LEDMatrix
A modular LED matrix display system for sports information using Raspberry Pi and RGB LED matrices.
Hardware Requirements
- Raspberry Pi 3 or newer
- Adafruit RGB Matrix Bonnet/HAT
- LED Matrix panels (64x32)
Installation
- Clone this repository:
git clone https://github.com/ChuckBuilds/LEDMatrix.git
cd LEDMatrix
- Install dependencies:
pip3 install --break-system-packages -r requirements.txt
--break-system-packages allows us to install without a virtual environment
Configuration
- Copy the example configuration:
cp config/config.example.json config/config.json
- Edit
config/config.jsonwith your preferences
API Keys
For sensitive settings like API keys:
-
Copy the template:
cp config/config_secrets.template.json config/config_secrets.json -
Edit
config/config_secrets.jsonwith your API keys viasudo nano config/config_secrets.json -
Ctrl + X to exit, Y to overwrite, Enter to save
Important: Sound Module Configuration
- Remove unnecessary services that might interfere with the LED matrix:
sudo apt-get remove bluez bluez-firmware pi-bluetooth triggerhappy pigpio
- Blacklist the sound module:
cat <<EOF | sudo tee /etc/modprobe.d/blacklist-rgb-matrix.conf
blacklist snd_bcm2835
EOF
sudo update-initramfs -u
- Reboot:
sudo reboot
Performance Optimization
To reduce flickering and improve display quality:
- Edit
/boot/firmware/cmdline.txt:
sudo nano /boot/firmware/cmdline.txt
-
Add
isolcpus=3at the end of the line -
Add
dtparam=audio=offat the end of the line -
Ctrl + X to exit, Y to save
-
Save and reboot:
sudo reboot
Running without Sudo (Optional)
To run the display script without sudo, the user executing the script needs access to GPIO pins. Add the user to the gpio group:
This is required to download the Stock Symbol icons into assets/stocks.
sudo usermod -a -G gpio <your_username>
# Example for user 'ledpi':
# sudo usermod -a -G gpio ledpi
Important: You must reboot the Raspberry Pi after adding the user to the group for the change to take effect.
You also need to disable hardware pulsing in the code (see src/display_manager.py, set options.disable_hardware_pulsing = True). This has already been done in the repository if you are up-to-date.
If configured correctly, you can then run:
python3 display_controller.py
## Running the Display
(This is how I used to run the command, I may remove this in the future)
From the project root directory:
```bash
sudo python3 display_controller.py
The display will alternate between showing:
- Current time
- Weather information (requires API key configuration)
Development
The project structure is organized as follows:
LEDSportsMatrix/
├── config/ # Configuration files
│ ├── config.json # Main configuration
│ └── config_secrets.json# API keys and sensitive data
├── src/ # Source code
│ ├── display_manager.py # LED matrix display handling
│ ├── clock.py # Clock display module
│ └── weather.py # Weather display module
└── display_controller.py # Main entry point
Project Structure
src/clock.py- Main clock applicationconfig_manager.py- Configuration managementdisplay_manager.py- LED matrix display handling
config/config.json- Configuration settingsconfig_secrets.json- Private settings (not in git)
Fonts
You can add any font to the assets/fonts/ folder but they need to be .ttf and updated in display_manager.py