ESP32 · ILI9341 Touchscreen · LVGL 9
Der Internet-Radiowecker,
weitergebaut.
Ein Wecker-Radio mit Touchscreen, zwei Weckzeiten, Wetteranzeige und eigener Weboberfläche – aufbauend auf dem AZ-Delivery-Projekt von Gerald Lechner, mit einer komplett neuen LVGL-Oberfläche und zahlreichen Zuverlässigkeits- und Funktionsverbesserungen.
Die ursprüngliche Idee, Bauanleitung und der Basis-Sketch stammen von Gerald Lechner, veröffentlicht bei AZ-Delivery als „Internet Radiowecker mit Touchscreen“ auf Basis des AZ-Touch-Gehäusesets. Dieses Repository (beabel/radiowecker) baut direkt darauf auf – die Oberfläche wurde komplett neu auf LVGL 9 umgestellt und um Wetter, Favoriten, mehrsprachige Bedienung und browserbasierte Firmware-Updates erweitert. Alle Änderungen im direkten Vergleich:
Original vs. diese Version
Was sich am Code wirklich geändert hat
Durch Vergleich der Original-Sketche mit dieser Version.
Zuverlässigkeit & Fehlerbehebungen
Reconnect ohne Neustart
Im Original führte jeder WLAN-Verbindungsabbruch zwangsläufig zu einem kompletten Geräte-Neustart nach 5 Minuten – einen Weg zurück in den Betrieb ohne Reboot gab es nicht. Diese Version erkennt die Wiederverbindung im laufenden Betrieb und macht ohne Neustart weiter.
Stream-Aussetzer überleben
Ein Sender-Hänger löste im Original sofort einen vollständigen Neustart aus – passend zu den in den Blog-Kommentaren gemeldeten „manche Sender verursachen Neustarts“. Jetzt wird zuerst versucht, dieselbe Station neu zu verbinden, mit Toleranz für kurze Aussetzer.
Richtiger nächster Alarm
Waren beide Weckzeiten für denselben Tag aktiv, wählte das Original immer Wecker 1 als „nächsten Alarm“ – selbst wenn Wecker 2 zeitlich früher lag. Die Auswahl vergleicht jetzt tatsächlich beide Zeiten.
Saubere Lautstärkebegrenzung
Die Original-Formel für die Verstärkung konnte rechnerisch über den von der Audio-Bibliothek erlaubten Maximalwert hinausschießen – ein plausibler Kandidat für die in Nutzerkommentaren gemeldete Übersteuerung. Die Lautstärke wird jetzt korrekt auf den gültigen Bereich begrenzt.
Speicher & Performance auf dem ESP32
~70 KB mehr Speicher beim Start
Der Original-Sketch reservierte die Audio-Puffer fest beim Booten, egal ob gleich ein Sender läuft. Jetzt passiert das erst beim ersten tatsächlichen Senderstart – mehr freier Speicher für WLAN, Weboberfläche und Wetterabfrage während des Starts.
Bluetooth-Speicher freigegeben
Das Projekt nutzt kein Bluetooth – der dafür reservierte RAM-Bereich wird beim Start jetzt explizit freigegeben und steht Audio-Puffer und Oberfläche zur Verfügung.
Keine Heap-Fragmentierung durch Strings
WLAN-Zugangsdaten, NTP-Server und Zeitzone lagen im Original als Arduino-String-Objekte im Heap – über lange Laufzeit ein klassischer Fragmentierungs-Kandidat auf dem ESP32. Jetzt feste char-Arrays ohne Heap-Nutzung.
Weniger Tonaussetzer
Die aufwendigere LVGL-Oberfläche braucht mehr Rechenzeit pro Durchlauf als das ursprüngliche direkte Zeichnen. Der Audio-Decoder wird deshalb jetzt mehrfach pro Hauptschleife gefüttert, um Aussetzer während UI-Wechseln zu vermeiden.
Bedienung & Funktionsumfang
Neue Oberfläche mit LVGL
Statt manuell gepixelter Rechtecke und Schieberegler: echte Widgets, Themes und Übergänge auf Basis von LVGL 9.
Wecker-Schlummer nach dem Klingeln
Das Original kannte nur einen Einschlaf-Timer vor dem Wecken. Eine echte Schlummerfunktion nach dem Alarm gab es nicht – jetzt schon.
Eigene Wecklautstärke
Die Lautstärke beim Wecken lässt sich getrennt von der normalen Hörlautstärke einstellen.
Pieper als Weckton-Alternative
Falls kein Sender erreichbar ist (oder einfach gewünscht): ein klassischer Pieper-Weckton statt Radio.
Physische Taster
Stop und Schlummer lassen sich zusätzlich zum Touchscreen über echte Taster bedienen.
Wetteranzeige
Aktuelle Temperatur und Kurzvorhersage (Open-Meteo) direkt auf der Startseite – im Original nicht vorhanden.
Favoriten-Bildschirm
Eigene Seite für die Senderliste, statt Sender nur über zwei kleine Pfeile in der Kopfzeile zu wechseln.
Mehrsprachig & Zeichensätze
Statt nur deutscher Texte mit selbstgebauter Umlaut-Behandlung: eine echte Sprachumschaltung inkl. verbesserter Zeichensatz-Erkennung für Stream-Titel (UTF-8/Latin-1), auch bei kyrillischen Sendern.
Update direkt aus GitHub
Firmware-Updates lassen sich über die Weboberfläche direkt von einem GitHub-Release laden – ganz ohne Arduino IDE. Die klassische Netzwerk-OTA aus der IDE bleibt zusätzlich möglich.
Bauteile
Hardware
Dieselbe Basis-Hardware wie im Original-Projekt von AZ-Delivery:
| Anzahl | Bauteil |
|---|---|
| 1× | AZ-Touch Gehäuseset (2,4" oder 2,8" ILI9341 + XPT2046 Touch) |
| 1× | ESP32 Dev-Kit C V4 |
| 2× | MAX98357A I2S-Verstärker |
| 1× | Lautsprecherset 2×3 W, 8 Ω |
| 1× | 470 kΩ Widerstand |
| 1× | DC-Einbaubuchse |
| 1× | LDR-Modul (optional, für automatische Helligkeit) |
Genaue Pinbelegung für Display, Touch, I2S und LDR: Datei radiowecker/00_pin_settings.h im Repository.
In Betrieb
Galerie








Loslegen
Installation
Kurzfassung – die vollständige Anleitung inkl. Bibliotheks-Versionstabelle steht im README des Repositories.
1. Arduino-Umgebung
- Arduino IDE 2.3.8 (oder kompatible 2.x)
- ESP32-Boardpaket von Espressif, Version 3.3.7
- Partition Scheme: „No FS 4MB“ – wichtig, da LVGL 9 eine große App-Partition braucht
2. LVGL-Konfiguration kopieren
Nach der Bibliotheks-Installation radiowecker/lv_conf.h 1:1 nach
kopieren – sonst fehlen beim Bau Fonts/Features.
3. Erste WLAN-Einrichtung
Ohne bekanntes WLAN startet der Access-Point radioweckerconf. Verbinden, Browser öffnen unter 192.168.4.1, Heim-WLAN eintragen.
4. Updates ohne Arduino IDE
Sobald verbunden: Tab Info in der Weboberfläche prüft automatisch auf ein neueres GitHub-Release und installiert es per Klick – „Per Web installieren…“.
Kontakt
Fragen oder Feedback?
Bug gefunden, Idee für eine Funktion oder eine Frage zum Nachbau – kurze Nachricht reicht.