v1.08 (DHT) β€’ January 2026

LED Matrix WebServer

WiFi-controlled LED display solution with REST API, DHT22 sensor, and OTA updates for your home network.

πŸ“Š

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.

🎯 Easy to use
Web-based control
Control your LED matrix via HTTP REST API from anywhere in the network
🌐 WiFi integrated
Fritz!Box Mesh compatible
Automatic WiFi connection and reconnect
πŸ“‘ OTA updates
Update firmware wirelessly
Update your firmware without a USB connection
🌑️ Sensors
DHT22 integrated
Read temperature and humidity
πŸ”Š Buzzer sounds
Tone sequences
Predefined melodies for alarms and notifications
πŸ“¦ Extensible
Analog inputs
GPIO 34/35/36 available for external sensors

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

GPIO Pin Assignment
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.

Red LED Matrix Installation

Red Installation

LED Matrix with red backlight on iMac

LED Matrix above AnyCubic Printer

AnyCubic Printer Setup

LED Matrix installation above 3D printer

Green LED Matrix Installation

Green-yellow Installation

LED Matrix with green/yellow LED configuration

Green LED Matrix Close-up

Green Close-up

Detailed view of a green LED Matrix with wiring

Blue LED Matrix Installation

Blue Installation

LED Matrix with blue brightness
Many pixels defective

Cyan LED Matrix Installation

Cyan Installation

Multiple modules with cyan-colored lighting
Some pixels defective

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

Welcome Page HTML
GET /
Response: HTML Welcome Page with menu
Firmware-Version
GET /version
Response: v1.08 (dht)

Message & Display

Display message (static)
GET /print?text=Hallo%20Welt
Displays a static message on the LED matrix (max 75 characters)
Message with scroll animation
GET /scroll?text=Scrolling%20Text
Text scrolls from left to right across the matrix
Switches back to the last print message afterwards
Test display
GET /test
Displays "Hello world" on the LED matrix
Change LED brightness
GET /set?intensity=8
Value: 0 (dark) to 15 (bright)
Turn off display
GET /off
Turns off the LED matrix (power saving)

Sensor Data

Read temperature
GET /temperature
Response: "23.5" (degrees Celsius)
Read humidity
GET /humidity
Response: "65.2" (percent relative humidity)
Read analog inputs
GET /analog34
GET /analog35
GET /analog36
Response: Value between 0-4095

GET /analogvalues
Response: "1234,2345,3456" (comma-separated values)

Sounds & Buzzer

Success melody (Done)
GET /sound/erledigt
Plays positive tone sequence
Warnings melody
GET /sound/warnung
Spielt Warnings-Tonsequenz ab
Error melody
GET /sound/fehler
Spielt Error-Tonsequenz ab
Completed melody
GET /sound/abgeschlossen
Plays success tone sequence

Example Calls

Control & System

Restart system
GET /restart
ESP32 will be restarted (with display shutdown)

curl Examples

curl: display text
curl "http://ledmatrix.fritz.box/print?text=Hallo%20Welt"
curl: text with scroll
curl "http://ledmatrix.fritz.box/scroll?text=Breaking%20News"
curl: read temperature
curl "http://ledmatrix.fritz.box/temperature"
curl: play sound
curl "http://ledmatrix.fritz.box/sound/erledigt"
curl: set brightness
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.

βœ… Strengths
  • Robust WiFi management
  • Non-blocking Async-WebServer
  • Errorbehandlung bei DHT
  • OTA updates implemented
⚠️ Potential for Improvement
  • Hard-coded SSID/password
  • Expand input validation
πŸ“Š Evaluation
Grade: A-
Production ready
Uptime: 30-45 days normal