ESP32-Webradio mit 2,8"-TFT (ILI9341), Touch (XPT2046), Wecker, Wetter, Web-Konfiguration und grafischer Oberfläche auf Basis von LVGL 9. Die Firmware meldet sich als v5.0.6 (siehe RADIOVERSION in radiowecker.ino).
| 💀 Issues | 💬 Diskussionen | ❔ Wiki |
|---|
Dieses Repository ist die aktuelle Hauptversion des Radioweckers. Sie basiert auf dem AZ-Delivery-Artikel Internet Radiowecker mit Touchscreen von Gerald Lechner und der weiteren Ausarbeitung für AZ-Touch MOD / ESP32.
Was sich gegenüber den älteren Releases (z. B. der 4.x-Linie wie v4.0.3) unterscheidet — Oberfläche, Bibliotheken, Build, Partition — steht im nächsten Abschnitt.
Die Vorgängerversionen nutzten überwiegend direktes Zeichnen mit Adafruit GFX auf dem ILI9341 sowie die Bibliothek TouchEvent zur Touch-Auswertung. Ab der 5.x-Linie (aktueller Stand v5.0.6) ersetzt LVGL 9 die Hauptoberfläche (Widgets, Themes, Animationen). Darunter liegt weiterhin derselbe ILI9341-Treiber: LVGL schreibt in einen Puffer, der auf das TFT gezeichnet wird; für wenige Zustände (z. B. WLAN-Verbindungsdialog vor dem Start von LVGL) werden weiterhin Adafruit_ILI9341-Aufrufe genutzt.
- Partition Scheme: Früher reichte oft das Default-Layout mit SPIFFS nicht mehr, sobald Core und Sketch wuchsen. Ab 5.x (Stand 5.0.6) wird „No FS 4MB“ empfohlen: möglichst große App-Partition, kein großes Dateisystem — ausreichend Platz für LVGL, Web- und Audio-Code.
- LVGL-Konfiguration: Zusätzlich zum Sketch ist
lv_conf.hidentisch nachlibraries/lvgl/src/lv_conf.hzu kopieren (siehe Abschnitt unten). Ohne diese Kopie fehlen oft Fonts/Features beim Bau der Library.
- Nicht genutzte Definitionen wurden bereinigt (z. B. Buzzer-Pin
BEEPER, falls du ihn bei Bedarf wieder einfügen möchtest: in00_pin_settings.hergänzen und ansteuern).
Wenn du von einem älteren Stand migrierst: Sketch komplett ersetzen, Bibliotheken an die Tabelle anpassen, Partition umstellen, lv_conf.h doppelt pflegen, dann vollständig flashen (ggf. mit „Erase Flash“).
| Komponente | Hinweis |
|---|---|
| ESP32 | z. B. DevKit wie beim AZ-Touch-Set |
| Display | ILI9341, 2,8" (beim AZ-Touch MOD integriert) |
| Touch | XPT2046 (beim AZ-Touch MOD) |
| Audio | I2S-Verstärker (z. B. MAX98357A) + Lautsprecher |
| Optional | LDR (Helligkeit) laut 00_pin_settings.h |
Pinbelegung für Display, Touch, I2S und LDR: Datei radiowecker/00_pin_settings.h. Abweichende Boards: Pins dort anpassen.
- Arduino IDE 2.3.8 (oder kompatible 2.x-Version)
- Boardverwalter-URL:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json - Paket esp32 von Espressif Systems installieren. (Version siehe Tabelle)
- Gehe zu
Werkzeuge>Board>Boardverwalter. - Suche nach ESP32 im Suchfeld.
- Wähle ESP32 by Espressif Systems aus und klicke auf Installieren.
Important
Hinweis: Stelle sicher, dass du je nach radiowecker Version die richtige Version 2.0.17 oder > 3.0 auswählst, da es zu Problemen kommen kann.~~
| Radio Version | Boardverwalter | Partition |
|---|---|---|
| <= 4.0.3 | 2.0.17 | default |
| >= 5.x | 3.3.7 | No FS 4MB |
- Gehe zu
Sketch>Include Library>Library Manager. - Suche nach Bibliothek Name.
- Wähle die Version xxx aus dem Dropdown-Menü und klicke auf Installieren.
Important
Hinweis: Stelle sicher, dass du je nach radiowecker Version die richtige Version auswählst, da es zu Problemen kommen kann.~~
| Bibliothek | Radio Version <= v4.0.3 | Radio Version >= v5.x |
|---|---|---|
| Adafruit_ILI9341 | 1.6.2 | 1.6.3 |
| Adafruit_GFX | 1.12.1 | 1.12.5 |
| XPT2046_Touchscreen | 1.4 | 1.4 |
| ESP8266Audio by Earle F. Philhower | 2.0.0 | 2.4.1 |
| Touchevent by Gerald-Lechner | 1.3.0 | ❌ |
| lvgl | ❌ | 9.5.0 |
Unter Werkzeuge u. a.:
| Einstellung | Empfehlung |
|---|---|
| Board | ESP32 Dev Module (oder passend zu deinem Modul) |
| Flash Size | 4 MB (wenn dein Chip 4 MB hat) |
| Partition Scheme | No FS 4MB |
Warum „No FS 4MB“?
LVGL 9, Webserver, Audio und Einstellungen benötigen eine große App-Partition. Schemata mit großem SPIFFS/LittleFS lassen oft zu wenig Flash für den Sketch übrig und führen zu Link- oder Laufzeitproblemen.
- PSRAM: nur Enabled, wenn dein Board physikalisch PSRAM hat.
- Nach Wechsel des Partitionsschemas ggf. einmal „Erase All Flash Before Sketch Upload“ aktivieren und neu flashen.
Die LVGL-Bibliothek wird mit einer zentralen lv_conf.h gebaut. Dieses Projekt liefert eine passende Datei im Sketch-Ordner. Zusätzlich muss dieselbe Datei in der installierten LVGL-Library liegen:
| Aktion | Pfad |
|---|---|
| Quelle | radiowecker/lv_conf.h |
| Ziel (Kopie, Inhalt identisch) | Arduino/libraries/lvgl/src/lv_conf.h |
Die Uhrzeit-Schrift (lv_font_clock_digits.c) liegt im Sketch-Ordner;
Typische Pfade:
- Windows:
Benutzer\<Name>\Documents\Arduino\libraries\lvgl\src\lv_conf.h - macOS / Linux:
~/Arduino/libraries/lvgl/src/lv_conf.h
Wichtig: Änderst du lv_conf.h im Projekt, die Kopie unter libraries/lvgl/src/ immer wieder mitüberschreiben, sonst kompiliert die Library mit alter Konfiguration (fehlende Fonts/Features).
- ESP32-Boardsupport installiert, Board & No FS 4MB eingestellt.
- Bibliotheken laut Tabelle installiert.
lv_conf.hnachlibraries/lvgl/src/lv_conf.hkopiert.- Sketch-Ordner
radiowecker/vollständig geöffnet. - Kompilieren; bei Fehlern zu Montserrat/LVGL zuerst
lvgl/src/lv_conf.hprüfen.
- Gerät einschalten. Ohne bekanntes WLAN startet der Konfigurations-Access-Point mit der SSID
radioweckerconf. - PC oder Smartphone mit diesem WLAN verbinden.
- Browser öffnen:
http://192.168.4.1 - Heim-WLAN auswählen, Passwort eintragen, speichern. Das Gerät startet neu und verbindet sich mit dem gewählten Netz.
Fehlerbehebung: Keine Verbindung nach dem Speichern → erneut Konfigurationsmodus (wie in früheren Releases: ggf. Reset/Anleitung im Wiki oder in DOKU/05_Bedienungsanleitung.md).
-
Obere Statuszeile
- Weckerstatus (nächste Weckzeit / deaktiviert)
- IP-Adresse
- Schlummer-Hinweis
- WLAN-RSSI
-
Startseite
- Große Uhrzeit als Ziffern-Kacheln (statische Aktualisierung, ressourcenschonend)
- Datum
- Sender vor/zurück: seitliche Buttons im Datumsbereich (nicht über der Uhr)
- Wetter bzw. Radio-Infos (Sender, Streamtitel) im mittleren Bereich
- Lautstärke: Schieberegler unten
-
Weitere Seiten
- Über den mittleren Bereich (transparenter Bereich) zur Einstellungs-/Radio-Seite wechseln (wie im bisherigen Konzept; Details in
DOKU/05_Bedienungsanleitung.md). - Favoriten, Einstellungen, Wecker über Fußzeilen-Navigation.
- Über den mittleren Bereich (transparenter Bereich) zur Einstellungs-/Radio-Seite wechseln (wie im bisherigen Konzept; Details in
-
Web-Oberfläche
- Im Heimnetz über die im Display angezeigte IP-Adresse erreichbar: Stationen, Wecker, WLAN u. a. konfigurieren.
SVG-Übersichten zu den Masken: DOKU/Main_Screen_Raster.svg, DOKU/Config_Screen_Raster.svg, DOKU/Alarm_Screen_Raster.svg.
| Weg | Beschreibung |
|---|---|
| Web-UI (HTTP-OTA) | Tab Info: Vergleich mit dem neuesten GitHub-Release; bei neuerer Version erscheint „Per Web installieren…“. Nach Bestätigung lädt das Gerät die Firmware von GitHub und startet neu. Fortschritt wie bei ArduinoOTA auf dem TFT (LVGL-OTA-Screen). |
| ArduinoOTA | Weiterhin möglich (Hostname/Passwort in 00_settings.h: OTA_HOSTNAME, OTA_PASSWORD) — Upload z. B. aus der Arduino IDE über den Netzwerk-Port. |
Voraussetzungen für HTTP-OTA
- Partition: weiterhin „No FS 4MB“ (zwei OTA-App-Slots à ca. 2 MB).
| Datei / Bereich | Inhalt (kurz) |
|---|---|
radiowecker.ino |
Setup, Loop, Zeit, Alarmlogik |
tft_display.ino |
LVGL-UI, Seiten, Uhr |
lv_font_clock_digits.c |
Minimale Bitmap-Schrift für die Uhrzeit (generierbar mit tools/gen_clock_font.ps1 / .py) |
audio.ino |
Stream, Decoder, I2S |
wlan.ino |
WiFi, Verbindung |
webserver.ino |
HTTP, API, index.h |
stations.ino |
Senderliste, Preferences |
ota.ino |
ArduinoOTA (Upload aus der IDE / Netzwerk) |
http_update.ino |
HTTP-OTA aus der Web-UI (GitHub-Release-Binary) |
- ESP32 internet clock radio with ILI9341 + XPT2046 (library XPT2046_Touchscreen required for touch input to LVGL), LVGL 9.5, MP3 streams via ESP8266Audio, alarms, weather, and a built-in web UI. The old TouchEvent library is not used.
- Arduino IDE 2.x; install libraries listed above.
- Set Partition Scheme to No FS 4MB (large app partition).
- Copy
radiowecker/lv_conf.htoArduino/libraries/lvgl/src/lv_conf.h(must stay in sync). Keepbuild_opt.handlv_font_latin_supp_14.cin the sketch folder. - First-time WiFi: join
radioweckerconf, openhttp://192.168.4.1, configure home WiFi. - Optional firmware update from the browser: on the Info tab, if GitHub has a newer release, use “Per Web installieren…” (device downloads
radiowecker-firmware.binfrom the matching release tag).
Compared to earlier releases (e.g. 4.x): main UI moved from raw Adafruit GFX + TouchEvent to LVGL 9; XPT2046_Touchscreen remains; ArduinoJson is bundled in the sketch; partition layout must provide a large app region; add lv_conf.h copy under lvgl/src/ and use build_opt.h.
- Gerald Lechner und AZ-Delivery für die ursprüngliche Projektidee und Dokumentation.
- Earle F. Philhower (ESP8266Audio), LVGL, Adafruit, Paul Stoffregen (XPT2046) für die verwendeten Bibliotheken.
Startseite, Radio an
Startseite, Farben angepasst
**Startseite, Kyrilic **
Startseite, Radio aus, Wetter
Startseite, Wecker/Alarm aktiv
Favoriten
Einstellungen
Wecker
Wecker Seite 2
Startseite
Wecker
Radiosender
Slider + Color
Einstellungen
Info
Radiowecker · Version 5.0.6

















