This firmware is a customized fork of MoonModules/WLED-MM for ticket and queue number display.
Upstream updates from WLED-MM are regularly merged.
All “Ticket System” features are maintained in separate usermods and build config for easy merging.
- Purpose: Realize a ticket/queue system where numbers are drawn on a large LED matrix.
- Workflow:
- A number is drawn and printed using a thermal printer controlled by an Arduino.
- After printing, the Arduino sends the number via UART to the MatrixPortal S3 running WLED-MM.
- The number is displayed on the HUB75 LED matrix.
-
LED Matrix Controller:
- Adafruit MatrixPortal S3
- Other Boards: Other ESP32 boards may work, but only MatrixPortal S3 is tested.
-
LED Matrix:
- HUB75 compatible RGB panel
-
Communication:
- UART (default RX: GPIO8, TX: GPIO18)
- Receives numbers via UART and displays them on the LED matrix.
- Simple integration with external ticket/queue systems (e.g., Arduino-based).
- Web UI for configuration and manual testing (WLED-MM).
- All standard WLED-MM features are available.
WLED “usermods” are modular code extensions designed to add new features without directly editing the core WLED firmware. This makes it easier to maintain compatibility, update to newer WLED versions, and share your work with other projects.
For this ticket display system, included two custom usermods:
-
Serial_int_Display Receives a byte value via the serial port (UART) and displays it using the WLED text effect.
This lets external microcontrollers (like Arduinos) easily send numbers for display. -
Scale_Text Automatically scales text to fit the LED matrix’s resolution for maximum readability. This makes text effects robust for different display sizes and is reusable for other WLED setups.
- Flash the firmware in this repo to your MatrixPortal S3 (see Installation).
- Connect UART from your Arduino (TX) to MatrixPortal S3 (RX, GPIO8), and GND to GND.
- Send numbers as one Byte Numbers from the Arduino after printing.
- The number will be displayed on the matrix
- Clone this repo.
- Install dependencies and build the web UI:
npm ci npm run build
- Build and upload the firmware for MatrixPortal S3:
pio run -e adafruit_matrixportal_s3 pio run -e adafruit_matrixportal_s3 --target upload
- Configure the Serial-to-Display usermod via the WLED web UI under Config > Usermods.
See usermods/Serial_int_Display/readme.md for detailed wiring and configuration instructions.
wled00/ # Main firmware source (C++)
├── data/ # Web interface files
├── usermods/ # Usermod source (Serial_to_Display)
└── ... # Other WLED-MM sources
tools/ # Build tools (Node.js)
platformio.ini # Hardware build configuration
package.json # Node.js dependencies and scripts
- Implement auto-scaling for number size based on screen resolution. (WIP)
- Set up Continuous Integration (CI) for automated testing, builds, and deployments (WIP)
- Releases and provide downloadable builds for easy access (WIP)
- add nix-direnv for faster Development setup
- Implement automated testing to ensure code quality and stability
- Create a custom font with larger characters for better readability and higher resolution support.
- Animated transitions when new numbers are received and displayed.
- Further improvements to usability and visual appearance.
- Add a QR code to the display for connecting to the Wi-Fi.
- Rename the
Serial_int_Displayusermod to a more generic and descriptive name, since it currently receives a byte (not an int). The new name should reflect its present and future capabilities.
WIP: Work in Progress
The WLED-MM and the hub75-queue-display projects are licensed under the EUPL-1.2 or later. The official license text is available in 23 languages.