Top Angebote und noch mehr!

wie ich ein Relaissystem mit ESP32 und 2,4″ TFT-Touchscreen gebaut habe. Ihr könnt damit bis zu 6 Relais steuern – direkt über den Touchscreen oder auch bequem über euer Smartphone im WLAN. Perfekt für Smart-Home-Projekte, DIY-Automatisierung und Maker, die Spaß am Basteln haben! 💡 Features: Steuerung von bis zu 6 Relais Touchscreen GUI komplett selbst programmiert Virtuelle Tastatur für WLAN-Verbindung IP-basierte Steuerung über Smartphone Factory Reset & Kalibrierung integriert Erweiterbar für Smart-Home-Funktionen Geplantes 3D-Gehäuse-Design für sauberen Aufbau
Das ist ein ESP32 Touchscreen-Steuerpanel mit 6 Relais, WiFi-Einstellungen, Webserver und System-Menüs.
Man kann damit:
-
Die Relais über Touchscreen oder Weboberfläche schalten
-
Alle Relais gleichzeitig an/aus machen
-
WiFi konfigurieren und speichern (im Flash)
-
Uhrzeit per NTP synchronisieren
-
Den Touchscreen kalibrieren
-
Infos wie Datum, Uhrzeit und IP-Adressen anzeigen
-
Einen Factory Reset machen
🖥️ Hauptbestandteile des Codes
1. Hardware
-
Display:
TFT_eSPI(320×240 Pixel) -
Touchscreen:
XPT2046(über SPI) -
Relais: 6 Stück, Pins 25,26,27,33,14,12
-
ESP32 mit WiFi + NTP
2. Menüsystem
Der Code arbeitet mit einem State-Machine-Prinzip:
➡️ Je nach currentMenu zeigt der Bildschirm ein anderes Menü an.
Menüs:
-
Main Menu → 6 Relais-Buttons + „All Relays“ + „Settings“
-
Settings Menu → Auswahl: WiFi, Infos, Kalibrierung, Factory Reset
-
WiFi Menu → Zeigt Netzwerke, Auswahl für Verbindung
-
Password Menu → Virtuelle Tastatur für WiFi-Passwort
-
Calibration Menu → 5-Punkte-Touch-Kalibrierung
-
Infos Menu → Datum, Uhrzeit, IP-Adressen
3. Relaissteuerung
Es gibt eine Button-Klasse und eine abgeleitete RelayButton-Klasse:
-
Jeder Button hat eine Position und eine Farbe
-
Beim Tippen toggelt er den Pin (
digitalWrite) → Relais an/aus
4. Touchscreen
-
Touch-Koordinaten werden mit
ts.getPoint()gelesen -
Mithilfe von Kalibrierung (
calibrateTouch()) werden sie auf den Bildschirm gemappt -
Je nach Menü wird geprüft, ob ein Button berührt wurde (
isTouched(x,y))
5. WiFi & Speicherung
-
Über Preferences (Flash-Speicher im ESP32) werden SSID und Passwort gespeichert:
-
Beim Start verbindet sich der ESP32 automatisch wieder mit gespeichertem Netzwerk
-
Gleichzeitig erstellt er ein eigenes Access Point (AP):
-
SSID:
ESP32_Relay_Control -
Passwort:
admin123
-
6. Webserver
Der Webserver läuft auf Port 80 und stellt eine Weboberfläche bereit:
-
/→ Hauptseite mit Buttons für die Relais -
/toggle?relay=0..5→ Schaltet ein Relais um -
/all?state=on/off→ Schaltet alle Relais gleichzeitig -
/wifi→ Formular für SSID & Passwort -
/reset→ Factory Reset (löscht Preferences + Neustart)
Die Webseite ist simpel in HTML, CSS, JavaScript eingebaut und wird direkt vom ESP32 geliefert.
7. Uhrzeit
-
Über
configTime(0,0,"pool.ntp.org")wird NTP genutzt -
Zeitzone: CET/CEST (Mitteleuropa)
-
Wird im Infos-Menü angezeigt (Datum + Uhrzeit)
8. Touchscreen-Kalibrierung
-
Menü zeigt nacheinander:
-
Links-oben, Rechts-oben, Links-unten, Rechts-unten, Mitte
-
-
Nutzer tippt auf die Punkte
-
Rohwerte (
rawX, rawY) werden gespeichert → min/max -
Damit wird das Mapping verbessert
Wichtige Verbindungsliste (Kurzfassung)
-
SPI-Bus (gemeinsam)
-
MOSI → GPIO23 → TFT MOSI + Touch MOSI
-
MISO → GPIO19 → Touch MISO (TFT benötigt meist nur MOSI)
-
SCLK → GPIO18 → TFT + Touch SCLK
-
TFT_CS → GPIO5 (getrenntes CS)
-
TOUCH_CS → GPIO21 (getrenntes CS für XPT2046)
-
TFT_DC → GPIO2 (Data/Command)
-
TFT_RST → GPIO4 (Reset)
-
-
Relais
-
Relay 1 → GPIO25
-
Relay 2 → GPIO26
-
Relay 3 → GPIO27
-
Relay 4 → GPIO33
-
Relay 5 → GPIO14
-
Relay 6 → GPIO12
-
Relais-Modul VCC → 5V (meist); Relais GND → gemeinsame GND
-
-
Stromversorgung & Masse
-
ESP32 3V3 Pin → ESP32-Versorgung (nicht für Relais)
-
Relais-VCC → 5V-Netzteil (USB-5V oder externes 5V)
-
Wichtig: Gemeinsame Masse (ESP32 GND + Relais GND + Netzteil GND) verbinden
-
-
Netz & Web
-
WiFi (2.4 GHz) — keine physische Verbindung (über WLAN), Webserver erreichbar über AP-IP
192.168.4.1oder im STA-Modus
-
Wichtige Hinweise / Sicherheit
-
Relais-Spannung prüfen: Viele Relais-Module benötigen 5V an VCC. Die Eingänge sind nicht immer 3.3V tolerant. Prüfe dein Modul.
-
Falls die Eingänge nicht 3.3V tolerant sind, verwende Treibertransistoren (z. B. NPN + Widerstand), MOSFETs oder ein Pegelwandler/Optokoppler zwischen ESP32 GPIO (3.3V) und Relais-Eingang.
-
Manche Relais-Module haben einen Jumper, um VCC opto-isoliert zu versorgen — lies das Datenblatt.
-
-
Gemeinsame GND zwingend: Ohne gemeinsame Masse funktionieren die Signale nicht zuverlässig.
-
Strombedarf: Relais können beim Schalten kurzzeitig hohe Ströme ziehen. Wähle ein Netzteil mit ausreichender Stromstärke (z. B. 5V, 2A oder mehr, abhängig vom Modul).
-
TOUCH_IRQ ist im Code auf
255gesetzt — das heißt, der Interrupt-Pin wird nicht benutzt. Touch wird per Polling gelesen. Wenn dein Touch-Modul einen IRQ-Ausgang hat, kannst du ihn optional anschließen an einen freien GPIO (und Code anpassen). -
TFT_eSPI-Pins: In deinem zweiten Sketch benutzt du
TFT_eSPI— diese Bibliothek liest die Pinzuordnung aus derUser_Setup-Datei oderUser_Setup_Select. Die in dieser Erklärung verwendeten TFT-Pins (CS=5, DC=2, RST=4, MOSI=23, SCLK=18) sind basierend auf typischen Setups und dem ersten Sketch aus deiner Konversation. Falls du eine andere Pin-Konfiguration inUser_Setup.hverwendest, passe die Verdrahtung entsprechend an.
