# Wetterstation Montage Anleitung

## Einleitung

Diese Anleitung beschreibt den Aufbau einer Wetterstation in einem Holzgehäuse mit einem ESP32. Beim ESP32 ist ein DHT11-Sensor und am I²C-Bus ein OLED 1,3"-Display angeschlossen. Die Wetterstation beinhaltet einen WiFi-Manager für die Einstellung der WLAN-Zugangsdaten (SSID und Passwort). Nach den ersten Start der Wetterstation, muss in den WLAN-Einstellungen des Handy oder Tablet das Netzwerk "Wetterstation" ausgewählt und über einen Browser die IP-Adresse 192.168.4.1 aufgerufen werden. Danach startet die "Wetterstation WLAN-Einstellung" und die Zugangsdaten für das WLAN können eingetragen werden. Sind die Zugangsdaten korrekt, startet die Wetterstation.  
Die Wetterstation zeigt beim Start für 5 Sekunden einen Smiley. In dieser Zeit werden die aktuelle Uhrzeit, das Datum und die aktuellen Wetterdaten aus der Region Tegernsee von de.pool.ntp.org und von openweathermap.org geladen.  
Sind die Daten geladen, verschwindet der Smiley und es werden in regelmäßigen Abständen drei Seiten mit Datum und Uhrzeit, danach das Raumklima mit Temperatur und Luftfeuchte, zuletzt die Wetterdaten Außen-Temperatur, Windgeschwindigkeit und Luftdruck angezeigt.

[![wetterst0.png](https://wiki.oberlab.de/uploads/images/gallery/2025-04/scaled-1680-/CJEzu831Nwl45AL9-wetterst0.png)](https://wiki.oberlab.de/uploads/images/gallery/2025-04/CJEzu831Nwl45AL9-wetterst0.png)

[![barometerdht.jpg](https://wiki.oberlab.de/uploads/images/gallery/2025-04/scaled-1680-/4F0iGd8XkXcHEAKM-barometerdht.jpg)](https://wiki.oberlab.de/uploads/images/gallery/2025-04/4F0iGd8XkXcHEAKM-barometerdht.jpg)

## Hardware  


### Das benötigen wir für die Wetterstation

- 1 Sperrholzplatte 4mm x 600x300
- 1 ESP32
- 1 ESP32-Shield
- 3D-Druck Teile für den ESP32, das OLED-Display und den DHT11
- 1 DHT11-Sensor
- 1 Gas-Sensor (optional)
- 1 OLED Display 1,3" I²C
- 1 Sekundenkleber und Holzkleber
- 1 9V Batterie oder ein 8V Netzteil
- 1 Batterieclip
- Schaltdraht

## Der Aufbau erfolgt in 5 Schritten  


### 1. 3D-Druckteile zeichnen und drucken  


ESP32-Pins d=5mm h=4mm  
OLED-Display Pins 10x4x1,6mm  
DHT11-Halterung 24x8x21 mit DHT11 Aussparung

### 2. Gehäuse lasern  


Wir erstellen mit [BOXES.PY](https://festi.info/boxes.py/) eine Lasercutter Vorlage  
Wähle die ClosedBox - Fully closed box mit den Maßen x=100, y=80, h=80 und thickness=4  
Zusätzlich wird eine Aussparung für den DHT11-Sensor in der Rückwand und  
eine Aussparung für den Spannungsanschluss des ESP32 in der Seitenwand eingefügt  
Wir lasern mit den Einstellungen Geschw./Leistung = 12.0/100 in einem Durchgang

[![wetter4.jpg](https://wiki.oberlab.de/uploads/images/gallery/2025-04/scaled-1680-/1IRGUmQm9uhqpfTo-wetter4.jpg)](https://wiki.oberlab.de/uploads/images/gallery/2025-04/1IRGUmQm9uhqpfTo-wetter4.jpg)

### 3. Verdrahten  


Wir löten auf das ESP32-Shield die Buchsenleisten  
Wir schließen mit Schaltdraht den DHT11-Sensor am ESP32-Shield GPIO27 an  
Am ESP32-Shield GPIO27 wird noch ein 10kΩ Pullupwiderstand gegen +5V angelötet  
Wir verdrahten den DHT11 mit +5V und GND  
Wir verbinden mit Schaltdraht den I²C-Bus mit dem Display  
Dazu werden die Lötpunkte SLA, SLC, 3.3V und GND mit dem Display verbunden  
Ist der ESP32 auf dem Shield, der Sensor und das Display angelötet, erfolgt der erste Test  
Wir laden einen I²C-Scanner in den ESP32 und kontrollieren ob der ESP32 die Busteilnehmer erkennt  
Wird das Display erkannt, laden wir das Haupt-Programm in den ESP32

  
Verdrahtung des DHT11:  
[![dht11.png](https://wiki.oberlab.de/uploads/images/gallery/2025-04/scaled-1680-/4TmcWciaED7GMxQ3-dht11.png)](https://wiki.oberlab.de/uploads/images/gallery/2025-04/4TmcWciaED7GMxQ3-dht11.png)

ESP32 Shield:  
[![espshield.png](https://wiki.oberlab.de/uploads/images/gallery/2025-04/scaled-1680-/VbokO7EnHprcvitu-espshield.png)](https://wiki.oberlab.de/uploads/images/gallery/2025-04/VbokO7EnHprcvitu-espshield.png)

Verdrahtetes ESP32 Shield:  
[![wetter9.jpg](https://wiki.oberlab.de/uploads/images/gallery/2025-04/scaled-1680-/Byb7TtjpcEtL15vm-wetter9.jpg)](https://wiki.oberlab.de/uploads/images/gallery/2025-04/Byb7TtjpcEtL15vm-wetter9.jpg)

### 4. Die Montage  


Mit Sekundenkleber die 3D-Druck Bauteilfüße auf den ESP32 kleben  
Die 3D-Druck Leisten auf das OLED-Display kleben  
Den ESP32 auf die Grundplatte und die Sensorhalterung  
an die Gehäuse-Rückwand kleben  
VORSICHTIG das Display an die Frontseite (Durchbruch) kleben  
Vor dem finalen verkleben des Gehäuses erfolgt ein Funktionstest  
War der Funktionstest erfolgreich, kann das Gehäuse vollständig verklebt werden

[![wetter6.jpg](https://wiki.oberlab.de/uploads/images/gallery/2025-04/scaled-1680-/heTAOqW9bVCJb5IJ-wetter6.jpg)](https://wiki.oberlab.de/uploads/images/gallery/2025-04/heTAOqW9bVCJb5IJ-wetter6.jpg)

Erster Funktionstest am Seriellen Monitor:

[![wetter10.png](https://wiki.oberlab.de/uploads/images/gallery/2025-04/scaled-1680-/0s1V6MwpUQ1xxtFv-wetter10.png)](https://wiki.oberlab.de/uploads/images/gallery/2025-04/0s1V6MwpUQ1xxtFv-wetter10.png)

### 5. Inbetriebnahme  


Im Handy oder Tablet die WLAN-Einstellungen öffnen  
Das Netzwerk "Wetterstation" aufrufen  
Im Browser die IP-Adresse 192.168.4.1 aufrufen  
Die Seite "Wetterstation WLAN Einstellung" öffnet sich  
Die WLAN-Zugangsdaten SSID und Passwort eingeben  
Der Zeitserver ist voreingestellt und muss nicht verändert werden  
Ist die WLAN-Verbindung korrekt, startet die Wetterstation mit einem Smiley am Display  
Danach werden abwechselnd das aktuelle Datum mit Uhrzeit, danach das Raumklima mit Temperatur und Luftfeuchte und die aktuellen Wetterdaten aus der Region Tegernsee angezeigt  
Die angezeigten Daten wechseln in regelmäßigen Abständen

  
Aufruf "Wetterstation" in den WLAN-Einstellungen  
[![ws_ap_einstellung.png](https://wiki.oberlab.de/uploads/images/gallery/2025-04/scaled-1680-/LQJedqMW2YmIngNu-ws-ap-einstellung.png)](https://wiki.oberlab.de/uploads/images/gallery/2025-04/LQJedqMW2YmIngNu-ws-ap-einstellung.png)

Im Browser die IP-Adresse 192.168.4.1 öffnen, die WLAN Zugangsdaten eingeben und speichern  
[![ws_wlaneinstellung2.png](https://wiki.oberlab.de/uploads/images/gallery/2025-04/scaled-1680-/LX4hsqQratm23kbm-ws-wlaneinstellung2.png)](https://wiki.oberlab.de/uploads/images/gallery/2025-04/LX4hsqQratm23kbm-ws-wlaneinstellung2.png)

Sind die WLAN-Zugangsdaten korrekt, startet die Wetterstation  
[![ws_wlaneinstellung3.png](https://wiki.oberlab.de/uploads/images/gallery/2025-04/scaled-1680-/KIue80g6Pn7bLi3B-ws-wlaneinstellung3.png)](https://wiki.oberlab.de/uploads/images/gallery/2025-04/KIue80g6Pn7bLi3B-ws-wlaneinstellung3.png)

Startet die Wetterstation nicht, muss der Vorgang wiederholt werden

Kontrolle am Seriellen Monitor:  
[![wetter11.png](https://wiki.oberlab.de/uploads/images/gallery/2025-04/scaled-1680-/bYTFPHUURQbw1kic-wetter11.png)](https://wiki.oberlab.de/uploads/images/gallery/2025-04/bYTFPHUURQbw1kic-wetter11.png)

[![barometer3.jpg](https://wiki.oberlab.de/uploads/images/gallery/2025-04/scaled-1680-/7C3PO3yioTdm5eGr-barometer3.jpg)](https://wiki.oberlab.de/uploads/images/gallery/2025-04/7C3PO3yioTdm5eGr-barometer3.jpg)

**Fertig, Glückwunsch!**

## Troubleshooting, mögliche Fehlerursachen  


- Sichtkontrolle - sind alle Lötstellen ok?
- Sind Lötbrücken zusehen oder sind Bauteilfüße fälschlicherweise mit einander verbunden?
- Sitzt der ESP32 korrekt auf dem Shield? Auf die Polung achten und und Bauteilfüße kontrollieren.
- Sind die Anschlussdrähte zum Sensor und Display ok?
- Ist die Spannungsversorgung für den ESP32 ok?
- Wurde das Programm korrekt geladen? Meldung: Hochladen abgeschlossen.
- Wird das Display vom ESP32 erkannt? Mit dem I²C-Scanner prüfen.
- Werden die Sensordaten und die Uhrzeit/Datum ausgelesen? Mit dem Seriellen Montitor der Arduino IDE prüfen.
- Wurden die WLAN-Zugangsdaten korrekt eingegeben?

## Abkürzungen  


- OLED - Organic Light Emitting Diode
- u8g2 Library - Universal 8Bit Graphics Library
- I²C - Inter-Integrated Circuit (Serieller Datenbus)
- SCL - Serial Clock
- SDA - Serial Data

## C++ Programm I2C Scanner

```c++
// ESP32 I2C Scanner
// ESP32 DevKit / ESP32vn IoT UNO - Arduino IDE 1.8.
 

#include <Wire.h>

void setup()
{
  Serial.begin (115200);  
  Wire.begin (21, 22);   // sda= GPIO_21 /scl= GPIO_22
}

void Scanner ()
{
  Serial.println ();
  Serial.println ("I2C scanner. Scanning ...");
  byte count = 0;

  Wire.begin();
  for (byte i = 8; i < 120; i++)
  {
    Wire.beginTransmission (i);          // Begin I2C transmission Address (i)
    if (Wire.endTransmission () == 0)  // Receive 0 = success (ACK response) 
    {
      Serial.print ("Found address: ");
      Serial.print (i, DEC);
      Serial.print (" (0x");
      Serial.print (i, HEX);     // PCF8574 7 bit address
      Serial.println (")");
      count++;
    }
  }
  Serial.print ("Found ");      
  Serial.print (count, DEC);        // numbers of devices
  Serial.println (" device(s).");
}

void loop()
{
  Scanner ();
  delay (100);
}
```