ChuckBuilds 22f21093f2 Disable hardware pulsing to allow running without root
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).
2025-04-17 09:51:58 -05:00
2025-04-07 16:44:16 -05:00
2025-04-15 10:01:27 -05:00
2025-04-10 22:16:38 -05:00
2025-04-11 11:10:50 -05:00

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

  1. Clone this repository:
git clone https://github.com/ChuckBuilds/LEDMatrix.git
cd LEDMatrix
  1. Install dependencies:
pip3 install --break-system-packages -r requirements.txt

--break-system-packages allows us to install without a virtual environment

Configuration

  1. Copy the example configuration:
cp config/config.example.json config/config.json
  1. Edit config/config.json with your preferences

API Keys

For sensitive settings like API keys:

  1. Copy the template: cp config/config_secrets.template.json config/config_secrets.json

  2. Edit config/config_secrets.json with your API keys via sudo nano config/config_secrets.json

  3. Ctrl + X to exit, Y to overwrite, Enter to save

Important: Sound Module Configuration

  1. Remove unnecessary services that might interfere with the LED matrix:
sudo apt-get remove bluez bluez-firmware pi-bluetooth triggerhappy pigpio
  1. Blacklist the sound module:
cat <<EOF | sudo tee /etc/modprobe.d/blacklist-rgb-matrix.conf
blacklist snd_bcm2835
EOF

sudo update-initramfs -u
  1. Reboot:
sudo reboot

Performance Optimization

To reduce flickering and improve display quality:

  1. Edit /boot/firmware/cmdline.txt:
sudo nano /boot/firmware/cmdline.txt
  1. Add isolcpus=3 at the end of the line

  2. Add dtparam=audio=off at the end of the line

  3. Ctrl + X to exit, Y to save

  4. 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 application
    • config_manager.py - Configuration management
    • display_manager.py - LED matrix display handling
  • config/
    • config.json - Configuration settings
    • config_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

Description
Raspberry Pi LED Matrix Project
Readme GPL-3.0 205 MiB
Languages
Python 58.8%
JavaScript 18.6%
HTML 15.8%
Shell 6.1%
CSS 0.7%