20250920_132354
Willkommen zu meinem neuen Projekt! In diesem Video stelle ich euch mein ESP32 Touchscreen Control Panel vor, mit dem ihr ein 4-Kanal-Relais-System steuern könnt – direkt über das Display, per Smartphone-App oder über die Weboberfläche. Zusätzlich gibt es viele Funktionen wie: ✅ Relais einzeln oder alle zusammen steuern ✅ Status-Anzeige in Echtzeit auf Display & Handy ✅ WLAN-Auswahl & Passwort-Eingabe direkt am Gerät ✅ SD-Karten-Unterstützung für Bilder & GIF-Hintergründe ✅ Erweiterungen mit Temperatursensor & mehr 👉 Das Projekt ist ein fertiges, montierbares Smart-Home-Produkt – ohne PC und ohne Code-Eingabe!
  • Date: 08.10 AM, 01 November 2018

🔹 1. Hardware & Bibliotheken

  • Display: TFT_eSPI (240×320, Touchscreen eingebaut)

  • Speicher: SD-Karte über SPI

  • Eingabe: Touchscreen (roh kalibriert mit TOUCH_X_MIN, TOUCH_X_MAX usw.)

  • Ausgabe: RGB-LED (Pins 17, 4, 16), Backlight-Pin (27)

  • WiFi: Verbindung zu Netzwerken, Speicherung in Preferences (EEPROM)

  • Relais: externes ESP8266-Board über HTTP (IP, Benutzername, Passwort fest hinterlegt)

  • Bilder: Anzeige von JPGs von SD mit TJpg_Decoder


🔹 2. GUI-Struktur

Der Bildschirm hat verschiedene Screen States:

enum ScreenState { MAIN_MENU, SETTINGS, WIFI_LIST, KEYBOARD, INFO, LED_SETTINGS, IMAGE_VIEWER };

Jeder State zeichnet seinen eigenen Screen und verarbeitet Touch-Eingaben.

a) Main Menu

  • 6 Buttons:

    • Relais 1–4 schalten

    • Alle Relais

    • Lauflicht (Running Light)

  • Unten: Einstellungen-Button

b) Einstellungen (SETTINGS)

  • Buttons: WiFi, Info, LED Settings, SD Bilder, Back

c) WiFi

  • Scan von bis zu 10 Netzwerken

  • Passwort-Eingabe über On-Screen Keyboard

  • Verbindung und Speicherung der Daten in NVS (Preferences)

d) Info

  • Zeigt:

e) LED Settings

  • Steuerung der RGB-LED:

    • Rot, Grün, Blau (ein/aus)

    • High/Low Brightness

    • Blinken ein/aus

  • Status-Box mit aktuellem LED-Zustand

f) Image Viewer

  • SD-Karte durchsuchen (rekursiv)

  • JPGs auflisten

  • Anzeige in Originalgröße, zentriert

  • Back-Button


🔹 3. Relaissteuerung

  • Über HTTP Requests an ein ESP8266-Board mit fester IP (192.168.178.88).

  • Authentifizierung: admin / passwort123.

  • Steuerung über 4 Buttons (ein/aus).

  • Extra-Button: Alle Relais gleichzeitig.

  • Statusabfrage alle 10 Sekunden (updateRelayStatus()).


🔹 4. Besonderheiten & Potentielle Probleme

  1. LED-Pins vertauscht:

    • Rot-Button → LED_G

    • Grün-Button → LED_R
      Das sieht nach einer falschen Verkabelung oder einem Software-Trick aus.

  2. Performance:

    • SD-Karten-Zugriff ist blockierend.

    • Touch-Abfrage alle 200ms → kann laggy wirken.

  3. Sicherheit:

    • Relais-Authentifizierung im Klartext im Code gespeichert.

  4. Keyboard:

    • Nur Großbuchstaben, keine Sonderzeichen außer .-_!.

    • Kein „OK“-Knopf außer unten „Connect“.

  5. Rendering:

    • Gradient Buttons manuell gezeichnet → viel Rechenzeit, aber optisch schön.

  6. WiFi Auto-Reconnect:

    • Nur beim Start versucht. Kein reconnect in loop().


🔹 5. Mögliche Verbesserungen

  • Asynchrones Relais-Update (z. B. mit HTTPClient.begin() non-blocking).

  • Touch-Entprellung verbessern → statt delay(200) lieber Zeitvergleich mit millis().

  • Keyboard um Kleinbuchstaben & Sonderzeichen erweitern.

  • SD-Bildanzeige: Option zum Zoomen/Scrollen hinzufügen.

  • Relais-Sicherheit: Authentifizierung nicht im Klartext, sondern z. B. verschlüsselt speichern.

  • LED-Pins richtig zuordnen, falls kein Hardware-Trick gewollt ist.

 

🔹 ESP32 Pinbelegung laut deinem Sketch

🌈 RGB-LED

#define LED_R 17 // Rot-Kanal
#define LED_G 4 // Grün-Kanal
#define LED_B 16 // Blau-Kanal

⚠️ Achtung: In der LED-Logik im Code ist Rot ↔ Grün vertauscht (Software-Anpassung oder Verdrahtungsfehler).


💡 TFT Display (SPI-Bus)
ESP32 4M FLASH 2.4-inch 240*320 LCD display module with WIFI and Bluetooth

#define TFT_MISO 19
#define TFT_MOSI 23
#define TFT_SCLK 18
#define TFT_CS 5
#define TFT_DC 2
#define TFT_RST 4
#define TFT_BL 27 // Display Backlight

🖐️ Touchscreen (XPT2046)

#define TOUCH_CS 21
#define TOUCH_IRQ 255 // nicht verwendet (kein IRQ angeschlossen)

👉 Touch läuft über SPI (gemeinsam mit Display): MOSI (23), MISO (19), SCLK (18), eigenes CS (21).


💾 SD-Karte (SPI)

#define SD_CS 22

👉 Nutzt ebenfalls den SPI-Bus:

  • MOSI → 23

  • MISO → 19

  • SCLK → 18

  • CS → 22


🔌 Versorgung

  • 3.3V: ESP32 intern

  • 5V (USB oder extern): für ESP32 + Relais + evtl. TFT-Backlight

  • GND: gemeinsam für alle Komponenten


🔹 Pinübersicht in Tabelle

Funktion ESP32-Pin Bemerkung
TFT MOSI GPIO 23 SPI-Daten
TFT MISO GPIO 19 SPI-Empfang
TFT SCLK GPIO 18 SPI-Takt
TFT CS GPIO 5 Chip Select Display
TFT DC GPIO 2 Data/Command
TFT RST GPIO 4 Reset
TFT BL GPIO 27 Backlight
Touch CS GPIO 21 Chip Select Touch
Touch IRQ — (255) Nicht angeschlossen
SD CS GPIO 22 Chip Select SD
RGB LED Rot GPIO 17 PWM-fähig
RGB LED Grün GPIO 4 PWM-fähig
RGB LED Blau GPIO 16 PWM-fähig

Code

Mein Warenkorb
Wunschzettel
zuletzt angesehen
Kategorien