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
- Hardware-Montage: Komponenten im GehÀuse befestigen und gemÀà Anschlussplan verkabeln. BME280 optional.
- 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.
- 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
- Amazon-Links fĂŒr Komponenten:
- Mikrocontroller: ESP32 auf Amazon
- LCD-Display: LCD-Display auf Amazon
- BME280-Sensor: BME280 auf Amazon
- API-Beispiel:
http://goldau.online/projekte/wetter-api/index.php?plz=45897
Hans (2025-05-03 22:46:30)
Ich habe es nachgebaut. Hat ohne Probleme funktioniert!!