Set options.disable_hardware_pulsing = True in display_manager._setup_matrix. This corresponds to the --led-no-hardware-pulse flag for the rgbmatrix library. Disabling hardware pulsing removes the need for root privileges, allowing the script to run as the regular user (ledpi). This aims to resolve the permission issues encountered when trying to write stock logos to assets/stocks while running with sudo (which resulted in UID=1 instead of UID=0).
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 the Display
From the project root directory:
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