HUB75 RGB LED matrix panels are the building blocks of large-format LED video walls and signboards. A single 64×32 panel contains 2,048 full-colour RGB LEDs capable of displaying video, images, and animations. These panels are affordable, bright, and can be tiled to create massive displays. Here is how to drive them with an ESP32.
Understanding HUB75 LED Panels
HUB75 is the standard interface for indoor RGB LED matrix panels. The connector carries:
- RGB data: R1, G1, B1 (upper half) and R2, G2, B2 (lower half)
- Row select: A, B, C, D (binary row address for multiplexing)
- Control: CLK (clock), LAT (latch), OE (output enable)
The panel scans through 16 rows rapidly (1/16 scan for 32-row panels), relying on persistence of vision to display the full image.
Specifications of 64×32 Panels
| Spec | Value |
|---|---|
| Resolution | 64 x 32 pixels (2,048 LEDs) |
| Pixel pitch | P3 (3mm), P4 (4mm), or P5 (5mm) |
| Colour depth | Up to 24-bit (16.7 million colours) |
| Scan rate | 1/16 |
| Power (5V) | Up to 4A at full white |
| Price range | Rs.600-1500 per panel |
Connecting HUB75 to ESP32
The ESP32 is the ideal controller due to its fast I/O and DMA capability:
- Connect the 16-pin HUB75 header to designated ESP32 GPIO pins
- Use the ESP32-HUB75-MatrixPanel-I2S-DMA library for hardware-accelerated output
- The I2S peripheral handles the high-speed data shifting in the background
- Multiple panels can be chained via the output connector for larger displays
#include <ESP32-HUB75-MatrixPanel-I2S-DMA.h>
MatrixPanel_I2S_DMA *dma_display = nullptr;
void setup() {
HUB75_I2S_CFG mxconfig(64, 32, 1); // 64x32, 1 panel
dma_display = new MatrixPanel_I2S_DMA(mxconfig);
dma_display->begin();
dma_display->setBrightness8(128);
dma_display->fillScreen(0);
}
Using SmartMatrix or PxMatrix Library
Two popular libraries for HUB75 panels:
- ESP32-HUB75-MatrixPanel-I2S-DMA: Best for ESP32. Uses DMA for flicker-free display. Supports chained panels.
- PxMatrix: Supports ESP8266 and ESP32. More flexible but requires more CPU time.
- SmartMatrix: Originally for Teensy, now supports ESP32. Advanced features like double-buffering and layer compositing.
Displaying Images and Video
Display images by converting them to the panel’s resolution:
- Convert images to 64×32 pixel BMPs using Python PIL or ImageMagick
- Store on SPIFFS or SD card, load pixel-by-pixel
- For video, stream frames at 15-25 FPS from a serial connection or WiFi
- GIF animations can be decoded and played back in a loop
Scrolling Text and Animations
Use the GFX-compatible API for text and graphics:
dma_display->setTextSize(1);
dma_display->setTextColor(dma_display->color565(255, 255, 0));
dma_display->setCursor(0, 0);
dma_display->print("ZBOTIC.IN");
// Scrolling
for (int x = 64; x > -textWidth; x--) {
dma_display->fillScreen(0);
dma_display->setCursor(x, 12);
dma_display->print("Welcome to Zbotic!");
delay(30);
}
Power Supply Considerations
- A single 64×32 panel draws up to 4A at full white brightness
- Use a 5V 5A power supply per panel (with headroom)
- Inject power at multiple points for larger installations
- Voltage drop over long cables causes colour distortion — use thick gauge wires
- At typical mixed content, actual consumption is 1.5-2.5A per panel
Recommended LED Modules from Zbotic
Frequently Asked Questions
Can I daisy-chain multiple HUB75 panels?
Yes. Each panel has an input and output connector. Chain up to 8-16 panels from a single ESP32, depending on resolution and colour depth.
What is the viewing distance for a P3 panel?
Minimum comfortable viewing distance is about 3 metres for P3. For indoor signage at 5+ metres, P4 or P5 is better.
Can HUB75 panels play video?
Yes, at reduced resolution. A 64×32 panel can display 15-25 FPS video content streamed from a computer or stored on an SD card.
Shop Display Modules at Zbotic.in
India’s trusted source for OLED, LCD, TFT, LED matrices, and more. Fast shipping across India.
Add comment