Required Components
| Component | Specification | Notes |
|---|---|---|
| LED Matrix Panel | P3 Indoor 64x32 RGB, HUB75 interface | Must have FM6126A driver chip |
| Microcontroller | ESP32-S3-DevKitC-1-N8R2 | ESP32-S3 recommended (ESP32 also supported) |
| Power Supply | 5V DC, 2.5-4A | Matrix requires dedicated power supply |
| Wiring | HUB75 ribbon cable + jumper wires | 16-pin 2.54mm pitch IDC connector |
Critical: FM6126A Driver Required
The firmware is configured specifically for LED matrix panels with the FM6126A driver chip. Panels with other drivers (ICN2038S, FM6124, etc.) may display incorrectly or not work at all. Always verify your panel has the FM6126A driver before purchasing.
LED Matrix Specifications
P3 Indoor RGB LED Matrix Panel
- Resolution: 64x32 pixels (2,048 individual RGB LEDs)
- Physical Size: 192mm x 96mm (7.6" x 3.8")
- Pixel Pitch: 3mm (P3)
- Interface: HUB75 (16-pin IDC)
- Driver Chip: FM6126A (REQUIRED)
- Scan Mode: 1/16 scan
- Power: 5V DC, ~2.5A at full brightness
- Viewing Angle: 140Β° horizontal, 140Β° vertical
ESP32-S3 Pin Mapping
The following pin configuration is used in the firmware (verified from matrix_display.cpp):
| HUB75 Pin | Function | ESP32-S3 GPIO | Description |
|---|---|---|---|
| R1 | Red Upper | GPIO 37 | Red data for upper half of panel |
| G1 | Green Upper | GPIO 6 | Green data for upper half |
| B1 | Blue Upper | GPIO 36 | Blue data for upper half |
| R2 | Red Lower | GPIO 35 | Red data for lower half of panel |
| G2 | Green Lower | GPIO 5 | Green data for lower half |
| B2 | Blue Lower | GPIO 0 | Blue data for lower half |
| A | Row Select A | GPIO 45 | Row address line A |
| B | Row Select B | GPIO 1 | Row address line B |
| C | Row Select C | GPIO 48 | Row address line C |
| D | Row Select D | GPIO 2 | Row address line D |
| E | Row Select E | GPIO 4 | Row address line E (for 1/32 scan) |
| CLK | Clock | GPIO 47 | Shift register clock |
| LAT | Latch | GPIO 38 | Latch/strobe signal |
| OE | Output Enable | GPIO 21 | Output enable (active low) |
| GND | Ground | GND | Connect all GND pins |
Note: ESP32 (non-S3) uses different GPIO pins. See the matrix_display.cpp file for ESP32 pin mappings.
HUB75 Connector Pinout
Looking at the matrix from the back (connector side), the HUB75 socket is arranged as:
βββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ
βR1 βG1 βB1 βGNDβR2 βG2 βB2 βGNDβ β Top row (odd pins: 1,3,5,7,9,11,13,15)
βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€
β A β B β C β D βCLKβLATβOE β E β β Bottom row (even pins: 2,4,6,8,10,12,14,16)
βββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ
1 3 5 7 9 11 13 15
2 4 6 8 10 12 14 16Warning: The HUB75 connector is NOT keyed. Double-check pin 1 alignment before connecting power!
Critical Firmware Configuration
The firmware uses the following driver settings (from matrix_display.cpp):
// Panel driver configuration
mxconfig.driver = HUB75_I2S_CFG::FM6126A; // REQUIRED for P3 panels
mxconfig.clkphase = false; // CRITICAL: Must be false
mxconfig.i2sspeed = HUB75_I2S_CFG::HZ_20M; // 20MHz for stability
mxconfig.min_refresh_rate = 120; // Reduce visible flicker
mxconfig.latch_blanking = 1; // Stable latch timingWhy these settings matter:
- FM6126A driver: Enables proper initialization sequence for this chip
- clkphase = false: Critical timing for FM6126A.
truecauses display corruption - HZ_20M: 20MHz I2S speed balances refresh rate and stability
- min_refresh_rate = 120: Reduces visible flickering
Power Requirements
Power Supply Guidelines
- Minimum: 5V @ 2.5A (for testing at reduced brightness)
- Recommended: 5V @ 4A (for full brightness white display)
- Maximum Draw: ~15-20W at 100% brightness, all LEDs white
- Typical Usage: ~8-12W with status displays
Important: The ESP32 USB port cannot power the matrix. Use a dedicated 5V power supply connected directly to the matrix power input (red/black wires or barrel jack).
Troubleshooting
π Display Issues
| Problem | Possible Cause | Solution |
|---|---|---|
| Blank display | Power not connected or FM6126A init failed | Check 5V supply to matrix. Verify firmware has FM6126A driver enabled |
| Display flickers | Poor ground connection or refresh rate issue | Connect all GND pins. Verify clkphase = false in code |
| Wrong colors | Swapped RGB data pins | Verify R1/G1/B1/R2/G2/B2 wiring matches pinout table |
| Garbled image | Clock or latch timing issues | Check CLK (GPIO 47) and LAT (GPIO 38) connections |
| Dim display | Insufficient power or brightness setting | Use 4A power supply. Check brightness setting in web UI |
Need More Help?
Check out the additional documentation:
- Full Documentation - Complete setup guides
- GitHub Issues - Report bugs or ask questions
- Discussions - Community support
- Download Firmware - Get the latest release