Skip to content

About

ESP Radio angepasst (Dank an Gerald Lechner und AZ-Delivery)

Topics

Resources

Stars

26 stars

Watchers

6 watching

Forks

Latest commit

 

History

227 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Internet-Radiowecker mit Touchscreen · Version 5.0.7

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.7 (siehe RADIOVERSION in radiowecker.ino).

💀 Issues 💬 Diskussionen ❔ Wiki

Über dieses Projekt

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.


Neu in 5.0.7

  • WLAN in Mesh-/Repeater-Netzen: Beim Verbinden werden alle Kanäle gescannt und der Access Point mit dem stärksten Signal gewählt (statt des ersten gefundenen). BSSID, Kanal und RSSI erscheinen in der seriellen Konsole.
  • Wecker: Alarm-Schlummer und Sleep-Timer sind sauber getrennt. Die Hardware-Taste löst den Alarm-Schlummer aus, solange das Alarm-Overlay sichtbar ist, sonst den Sleep-Timer.
  • Bedienung: Die 10-s-Rückkehr zur Startseite zählt ab der letzten Berührung, nicht nur ab dem Seitenwechsel (kein vorzeitiges Zurückspringen mehr).
  • Senderliste: Zwei neue Standardsender (Idobi Radio, DLF Kultur), jetzt 28 statt 26.
  • Web-Oberfläche: neues responsives Design (auch die WLAN-Konfigurationsseite im Access-Point-Modus, komplett ohne externe Dateien, da dort kein Internet vorhanden ist; eine leere SSID überschreibt die gespeicherte nicht mehr) (Handy bis Desktop, automatisch heller/dunkler Modus, größere Bedienelemente), Meldungen als Toast statt Pop-up, Status-Abfrage pausiert bei verstecktem Tab bzw. anderer Seite. jQuery 4.0.0 und jQuery UI 1.14.2 (vorher 3.7.1 / 1.13.2).
  • Referenzstände: ESP32-Core 3.3.12, LVGL 9.6.0, Adafruit_ILI9341 1.6.4. lv_conf.h wieder nach libraries/lvgl/src/ kopieren (nur Kommentare geändert).

Änderungen gegenüber der Version 4.x

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.7) 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.

Flash, Partition und neue Dateien

  • Partition Scheme: Früher reichte oft das Default-Layout mit SPIFFS nicht mehr, sobald Core und Sketch wuchsen. Ab 5.x (Stand 5.0.7) 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.h identisch nach libraries/lvgl/src/lv_conf.h zu kopieren (siehe Abschnitt unten). Ohne diese Kopie fehlen oft Fonts/Features beim Bau der Library.

Sonstiges im Code

  • Nicht genutzte Definitionen wurden bereinigt (z. B. Buzzer-Pin BEEPER, falls du ihn bei Bedarf wieder einfügen möchtest: in 00_pin_settings.h ergä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“).


Benötigte Hardware (Übersicht)

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.


Software-Voraussetzungen

Arduino IDE

  • Arduino IDE 2.3.10 (oder kompatible 2.x-Version)

ESP32-Boardsupport

  • Boardverwalter-URL:
    https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
  • Paket esp32 von Espressif Systems installieren. (Version siehe Tabelle)
  1. Gehe zu Werkzeuge > Board > Boardverwalter.
  2. Suche nach ESP32 im Suchfeld.
  3. 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.12 No FS 4MB

Bibliotheken (Referenzstände für v5.0.7)

  1. Gehe zu Sketch > Include Library > Library Manager.
  2. Suche nach Bibliothek Name.
  3. 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.4
Adafruit_GFX 1.12.1 1.12.6
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.6.0

Board-Einstellungen in der Arduino IDE

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.

LVGL: Pflichtschritt lv_conf.h

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).

Kurz-Checkliste vor dem ersten Upload

  1. ESP32-Boardsupport installiert, Board & No FS 4MB eingestellt.
  2. Bibliotheken laut Tabelle installiert.
  3. lv_conf.h nach libraries/lvgl/src/lv_conf.h kopiert.
  4. Sketch-Ordner radiowecker/ vollständig geöffnet.
  5. Kompilieren; bei Fehlern zu Montserrat/LVGL zuerst lvgl/src/lv_conf.h prüfen.

Ersteinrichtung: WLAN

  1. Gerät einschalten. Ohne bekanntes WLAN startet der Konfigurations-Access-Point mit der SSID radioweckerconf.
  2. PC oder Smartphone mit diesem WLAN verbinden.
  3. Browser öffnen: http://192.168.4.1
  4. Heim-WLAN auswählen, Passwort eintragen, speichern. Das Gerät startet neu und verbindet sich mit dem gewählten Netz.

Mesh-/Repeater-Netze: Bei mehreren Access Points mit gleicher SSID scannt das Radio beim Verbinden alle Kanäle und wählt den AP mit dem stärksten Signal. Ein Wechsel im laufenden Betrieb (Roaming) findet nicht statt, erst beim nächsten Verbindungsaufbau.

Fehlerbehebung: Keine Verbindung nach dem Speichern → erneut Konfigurationsmodus (wie in früheren Releases: ggf. Reset/Anleitung im Wiki oder in DOKU/05_Bedienungsanleitung.md).


Bedienung: Touch-Display (Kurzüberblick)

  1. Obere Statuszeile

    • Weckerstatus (nächste Weckzeit / deaktiviert)
    • IP-Adresse
    • Schlummer-Hinweis
    • WLAN-RSSI
  2. 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
  3. 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.
  4. Web-Oberfläche

    • Im Heimnetz über die im Display angezeigte IP-Adresse erreichbar: Stationen, Wecker, WLAN u. a. konfigurieren.

Firmware-Updates (Live Webupdate über die Web-UI)

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).

Module im Sketch (Orientierung)

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
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)

English summary (v5.0.7)

  • ESP32 internet clock radio with ILI9341 + XPT2046 (library XPT2046_Touchscreen required for touch input to LVGL), LVGL 9.6, 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.h to Arduino/libraries/lvgl/src/lv_conf.h (must stay in sync). Keep build_opt.h and lv_font_latin_supp_14.c in the sketch folder.
  • First-time WiFi: join radioweckerconf, open http://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.bin from 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.


Danksagung

  • 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.

Screenshots — so sieht es aus

TFT (Display)

Startseite, Radio an

Startseite Radio an

Einstellungen, russische Sprache (Kyrillisch)

Einstellungen, Kyrillisch

Startseite, Radio aus, Wetter

Startseite Radio aus, Wetter

Wecker klingelt (Stopp / Schlummer)

Startseite, Wecker/Alarm aktiv

Favoriten

Favoriten

Einstellungen

Einstellungen

Wecker

Wecker

Wecker Seite 2

Wecker

Webseite (HTML im Browser)

Die Oberfläche folgt automatisch dem hellen oder dunklen Modus des Geräts (links hell, rechts dunkel).

Startseite (Player)

Web Player (hell) Web Player (dunkel)

Wecker

Web Wecker (hell) Web Wecker (dunkel)

Radiosender

Web Radiosender (hell) Web Radiosender (dunkel)

Anzeige (Helligkeit, Farben)

Web Anzeige (hell) Web Anzeige (dunkel)

Einstellungen

Web Einstellungen (hell) Web Einstellungen (dunkel)

Info

Web Info (hell) Web Info (dunkel)

WLAN-Konfiguration im Access-Point-Modus (http://192.168.4.1)

Web WLAN-Konfiguration (hell) Web WLAN-Konfiguration (dunkel)


DJ Perry Pulse 107 Strobe Radio


Radiowecker · Version 5.0.7

About

ESP Radio angepasst (Dank an Gerald Lechner und AZ-Delivery)

Topics

Resources

Stars

26 stars

Watchers

6 watching

Forks

Releases

Sponsor this project

Packages

Contributors

Languages