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.
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 | USB-C oder externe 5V PSU | 5V for MAX7219, 3.3V internalal for logic |
Pin Configuration
LedMatrix Software V1.08
NodeMCU-32S ESP32 (USB powered)
POWER SUPPLY:
Micro USB βββ ESP32 (5V regulator generates 3.3V internal)
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
Installation & Setup
Here are photos of various LED Matrix installations in the home network. The systems show different colors and configurations.
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
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 Spielt Warnings-Tonsequenz ab
GET /sound/fehler Spielt Error-Tonsequenz ab
GET /sound/abgeschlossen Plays success tone sequence
Example Calls
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 | USB-C 5V | ~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 |
Code Quality
The code has been thoroughly reviewed and classified as production-ready.
- Robust WiFi management
- Non-blocking Async-WebServer
- Errorbehandlung bei DHT
- OTA updates implemented
- Hard-coded SSID/password
- Expand input validation
Production ready
Uptime: 30-45 days normal