Overview
The LED Matrix WebServer system is a fully configurable LED display solution for home networks. It is based on the NodeMCU-32S ESP32 with up to 12 cascaded MAX7219 8x8 LED modules. Using a simple REST API, messages can be displayed, animations controlled, and sensor data queried. Six units are deployed across the apartment, each serving as an information display in its room.
Use Cases
The LED Matrix is a receiver β what you send to it is entirely up to you. Here are some examples of how I use the displays across the apartment.
Date & Time
Always-on clock and date display in each room
Weather Data
Current temperature and conditions from indoor sensors
Sensor Readings
Live temperature and humidity from the on-board DHT22 sensor, stored in InfluxDB via MQTT
Status Messages
Notifications like "washing machine done" triggered via MQTT and Tasmota energy monitoring
Custom Messages
Any text or scrolling message via the REST API
Installation
Six LED Matrix units are deployed across the apartment, each mounted in its respective room. Every unit consists of an ESP32 board with cascaded MAX7219 LED modules and a DHT22 sensor, connected via SPI. The displays are powered through micro-USB or directly via the 5V pins.
Feature Overview
REST API
HTTP-based control of all functions from anywhere in the network
Animations
MD_Parola Library with various scroll modes
EEPROM Storage
Persistently save and load messages
Asynchronous Web Engine
Non-blocking AsyncWebServer for reliable performance
Sensor Integration
DHT22 read every 60 seconds
Sounds & Alarms
4 predefined melodies: Error, Done, Warning, Completed
Hardware Components
| Component | Model / Type | Features |
|---|---|---|
| Microcontroller | NodeMCU-32S ESP32 | 32-Bit Dual-Core 240MHz, WiFi + Bluetooth |
| LED Display | 12Γ MAX7219 8x8 Module | cascaded |
| Sensor | DHT22 (AM2302) | Temperature Β±0.5Β°C, Humidity Β±2% |
| Buzzer | Passive Buzzer | GPIO 16 PWM controlled via NPN transistor |
| Power Supply | Micro USB or direct 5V pin | 5V for MAX7219, 3.3V internal for logic |
Pin Configuration
LedMatrix Software V1.08
NodeMCU-32S ESP32 (USB powered)
POWER SUPPLY:
Micro USB βββ ESP32 (5V regulator generates 3.3V internal)
or: 5V Pin βββ ESP32 5V (bypassing USB regulator)
SPI SIGNALS (MAX7219):
VIN 5V βββ MAX7219 VCC
GND βββ MAX7219 GND
GPIO 5 βββ MAX7219 CS (Chip Select)
GPIO 18 βββ MAX7219 CLK (Clock)
GPIO 23 βββ MAX7219 DIN (Data In)
Modul 1 DOUT β Modul 2 DIN β Modul 3 DIN
DHT22 SENSOR:
GPIO 27 βββ DHT22 Data
3V3 βββ DHT22 VCC
GND βββ DHT22 GND
BUZZER:
GPIO 16 βββ Buzzer Control (via transistor)
GPIO 16 ββ1kΞ©ββ NPN Transistor BASE
NPN Transistor COLLECTOR βββ Buzzer +
NPN Transistor EMITTER βββ GND
Buzzer - βββ GND (ESP32)
ANALOG INPUTS (optional):
GPIO 34 βββ Analog Sensor 1
GPIO 35 βββ Analog Sensor 2
GPIO 36 βββ Analog Sensor 3
REST API Documentation
All endpoints are accessible via HTTP. The LED Matrix is recognized as ledmatrix.fritz.box in the network.
Base Endpoints
GET / Response: HTML Welcome Page with menu
GET /version Response: v1.08 (dht)
Message & Display
GET /print?text=Hallo%20Welt Displays a static message on the LED matrix (max 75 characters)
GET /scroll?text=Scrolling%20Text Text scrolls from left to right across the matrix Switches back to the last print message afterwards
GET /test Displays "Hello world" on the LED matrix
GET /set?intensity=8 Value: 0 (dark) to 15 (bright)
GET /off Turns off the LED matrix (power saving)
Sensor Data
GET /temperature Response: "23.5" (degrees Celsius)
GET /humidity Response: "65.2" (percent relative humidity)
GET /analog34 GET /analog35 GET /analog36 Response: Value between 0-4095 GET /analogvalues Response: "1234,2345,3456" (comma-separated values)
Sounds & Buzzer
GET /sound/erledigt Plays positive tone sequence
GET /sound/warnung Plays warning tone sequence
GET /sound/fehler Plays error tone sequence
GET /sound/abgeschlossen Plays completed tone sequence
Control & System
GET /restart ESP32 will be restarted (with display shutdown)
curl Examples
curl "http://ledmatrix.fritz.box/print?text=Hallo%20Welt"
curl "http://ledmatrix.fritz.box/scroll?text=Breaking%20News"
curl "http://ledmatrix.fritz.box/temperature"
curl "http://ledmatrix.fritz.box/sound/erledigt"
curl "http://ledmatrix.fritz.box/set?intensity=10"
Technical Specifications
| Property | Value | Notes |
|---|---|---|
| Firmware Version | v1.08 (DHT) | January 2026 |
| Power Supply | Micro USB 5V or direct 5V pin | ~500mA for logic |
| WiFi Standard | 802.11 b/g/n | 2.4GHz |
| LED Display | 12Γ 8x8 Module (96Γ8 Pixel) | |
| DHT22 Range | -40Β°C to +80Β°C | Humidity 0-100% RH |
| Update Method | OTA (AsyncElegantOTA) | Wireless via HTTP |
| DHT22 Update Interval | 60 seconds | Minimum read interval |
| Message Buffer | 75 characters | Max. length of a message |