ProjektĂŒbersicht

Das Projekt umfasst die Entwicklung eines ESP32-basierten Temperaturdisplays, das die Innen- und Außentemperatur sowie Luftfeuchtigkeit anzeigt. Innenraumdaten werden ĂŒber einen BME280-Sensor erfasst, Außenwetterdaten ĂŒber eine API abgerufen. Eine kompakte WeboberflĂ€che ermöglicht die Konfiguration von WLAN, API, Display-Einstellungen, Temperatur-Offset und Zeitplan. Der Deep-Sleep-Modus reduziert den Energieverbrauch, mit BerĂŒcksichtigung von StromausfĂ€llen.



Hardware-Komponenten

  • Mikrocontroller: ESP32-basierter Mikrocontroller mit WLAN und Deep-Sleep-UnterstĂŒtzung. ESP32 auf Amazon
  • LCD-Display (16x2, I2C): Monochromes Display mit I2C-Schnittstelle fĂŒr die Anzeige von Zeit, Datum und Wetterdaten. LCD-Display auf Amazon
  • BME280-Sensor: Sensor fĂŒr Innentemperatur und Luftfeuchtigkeit (optional, I2C). BME280 auf Amazon
  • 3D-gedrucktes GehĂ€use: Maßgeschneidertes GehĂ€use (3MF-Datei: Siehe Links ganz unten
  • ZusĂ€tzliche Materialien: Verbindungsleitungen, Pull-Up-WiderstĂ€nde (4.7kΩ fĂŒr I2C, falls nicht integriert).


Anschlussplan

Komponente Anschluss am ESP32 Beschreibung
LCD-Display (I2C) SDA (GPIO 21) I2C-Datenleitung (Adresse 0x27).
SCL (GPIO 22) I2C-Taktleitung.
VCC 5V oder 3.3V (je nach Modell).
GND Masseverbindung fĂŒr das Display.
BME280-Sensor (I2C) SDA (GPIO 21) I2C-Datenleitung (Adresse 0x76 oder 0x77, gemeinsam mit LCD).
SCL (GPIO 22) I2C-Taktleitung (gemeinsam mit LCD).
VCC 3.3V (empfohlen).
GND Masseverbindung fĂŒr den Sensor.
ESP32 Stromversorgung VIN / 5V 5V-Eingang fĂŒr die Stromversorgung.
GND Masseverbindung fĂŒr den Mikrocontroller.

Hinweise

  • I2C-Pins: Standard-I2C-Pins (GPIO 21 fĂŒr SDA, GPIO 22 fĂŒr SCL). LCD und BME280 nutzen denselben Bus with unterschiedlichen Adressen.
  • Pull-Up-WiderstĂ€nde: 4.7kΩ Pull-Up-WiderstĂ€nde fĂŒr SDA und SCL erforderlich, falls nicht im Modul integriert.
  • Stromversorgung: BME280 mit 3.3V betreiben, LCD je nach Modell mit 3.3V oder 5V.
  • BME280 optional: GerĂ€t funktioniert auch ohne BME280, zeigt dann nur Außenwetterdaten.


Software

Die Software wurde in C++ fĂŒr die Arduino-Plattform geschrieben und nutzt folgende Bibliotheken:

  • LiquidCrystal_I2C: Ansteuerung des LCD-Displays.
  • WiFi: WLAN-Verbindung und Fallback-AP-Modus.
  • WebServer: Bereitstellung der KonfigurationsoberflĂ€che.
  • HTTPClient: Abruf der Wetterdaten von der API.
  • ArduinoJson: Verarbeitung der API-Daten.
  • time: Zeit- und Datumsverwaltung mit NTP-Synchronisation.
  • Preferences: Persistente Speicherung von Einstellungen.
  • Adafruit_Sensor: Basis fĂŒr BME280-Sensor.
  • Adafruit_BME280: Steuerung des BME280-Sensors.


Funktionen

  • Zeit- und Datumsanzeige: Synchronisation mit NTP-Server, automatische Sommer-/Winterzeit-Umstellung.
  • Wetteranzeige: Innenraumdaten (BME280) und Außenwetterdaten (API), mit Wechselintervall.
  • WeboberflĂ€che: Kompakte Konfiguration von WLAN, API, Display, Zeitplan und Temperatur-Offset.
  • Deep-Sleep-Modus: Energiesparmodus nach Zeitplan, mit Stromausfall-Erkennung.
  • Fallback-AP-Modus: Zugriff auf die KonfigurationsoberflĂ€che bei WLAN-Ausfall.
  • Anpassbare Anzeige: Position und Sichtbarkeit von Datum, Uhrzeit, Temperatur und Luftfeuchtigkeit.
  • Temperatur-Offset: Einstellbarer Offset fĂŒr BME280-Innentemperatur (-5 bis +5°C).
  • Willkommensnachricht: Anpassbare Nachricht mit Versionsanzeige beim Start.

Versionsverlauf

  • V1.0 (01.01.2025): Initiale Version mit grundlegender FunktionalitĂ€t.
  • V1.1 (15.01.2025): Persistente Speicherung mit Preferences.
  • V1.2 (01.02.2025): Fallback-AP-Modus.
  • V1.3 (15.02.2025): Automatische Sommer-/Winterzeit-Umstellung.
  • V1.4 (01.03.2025): Erweiterte WeboberflĂ€che mit Statusanzeige.
  • V1.5 (31.03.2025): Backlight-Steuerung.
  • V1.6 (31.03.2025): Anpassbare Display-Anzeige.
  • V1.7 (31.03.2025): Versionsnummer in Willkommensnachricht.
  • V1.8 (31.03.2025): Display-Vorschau im Webinterface.
  • V1.9 (31.03.2025): Firmware-Version im Webinterface.
  • V2.0 (02.04.2025): Aus-/Einschaltfunktion nach Zeitplan.
  • V2.1 (02.04.2025): Deep-Sleep wĂ€hrend Display-Aus.
  • V2.2b (02.04.2025): Innentemperatur via BME280.
  • V2.3 (04.04.2025): Temperatur-Offset fĂŒr BME280.
  • V2.4 (04.04.2025): Kompakteres Webinterface.
  • V2.5 (06.04.2025): Fehlerbehebungen, Modus fĂŒr „kein BME280“, Stromausfall-Erkennung.


Aufbau und Verkabelung

Die Komponenten sind wie im Anschlussplan verkabelt. Das 3D-gedruckte GehĂ€use bietet Platz fĂŒr:

  • LCD-Display und BME280-Sensor an der Oberseite fĂŒr Sichtbarkeit und Messung.
  • Mikrocontroller und Verkabelung sicher im Inneren.

Installation und Inbetriebnahme

  1. Hardware-Montage: Komponenten im GehĂ€use befestigen und gemĂ€ĂŸ Anschlussplan verkabeln. BME280 optional.
  2. Software-Installation:
    • Arduino IDE und ESP32-Board-UnterstĂŒtzung installieren.
    • Bibliotheken (LiquidCrystal_I2C, WiFi, WebServer, HTTPClient, ArduinoJson, time, Preferences, Adafruit_Sensor, Adafruit_BME280) herunterladen.
    • Code in die Arduino IDE kopieren und auf den ESP32 laden.
  3. Testen:
    • GerĂ€t einschalten; Display zeigt Willkommensnachricht und Version (V2.5).
    • WLAN-Verbindung prĂŒfen (Fallback-AP bei Fehler: SSID „ESP32Fallback“, Passwort „123456“, IP 192.168.4.1).
    • WeboberflĂ€che aufrufen und Einstellungen anpassen, API URL (z.B. http://goldau.online/projekte/wetter-api/index.php?plz=45897) auf eigene PLZ anpassen.
    • Innen- und Außenwetterdaten, Zeitaktualisierung, Temperatur-Offset und Deep-Sleep-Modus testen.
    • Stromausfall simulieren (USB trennen), um Erkennung zu prĂŒfen.


Herausforderungen und Lösungen

  • Energieverbrauch: Deep-Sleep-Modus mit Zeitplan und Stromausfall-Erkennung implementiert.
  • WLAN-Verbindung: Fallback-AP-Modus fĂŒr Konfiguration bei Verbindungsfehlern.
  • BME280 optional: Modus fĂŒr Betrieb ohne BME280, zeigt nur Außenwetterdaten.
  • Temperaturgenauigkeit: Einstellbarer Offset fĂŒr BME280-Innentemperatur.
  • Webinterface: Kompakteres Design fĂŒr bessere Benutzerfreundlichkeit.


Fazit

Das Projekt realisiert ein flexibles Temperaturdisplay mit Innen- und Außenmessungen, unterstĂŒtzt durch ein kompaktes Webinterface und energieeffizienten Deep-Sleep-Modus. Die UnterstĂŒtzung fĂŒr optionalen BME280-Sensor und Stromausfall-Erkennung erhöht die Robustheit. Es ist anpassbar und erweiterbar durch Open-Source-Bibliotheken und 3D-Druck.



Anhang