← Zurück zur Übersicht ESP32 & MicroPython: Deine eigene Web-Wetterstation in 15 Minuten

ESP32 & MicroPython: Deine eigene Web-Wetterstation in 15 Minuten

[WERBUNG: CONTENT OBEN]

Wer in die Welt der Hardware-Programmierung einsteigt, landet früher oder später beim ESP32. Er ist günstig, hat WLAN an Bord und lässt sich hervorragend mit MicroPython programmieren.

In diesem Tutorial bauen wir eine funktionale Wetterstation. Das Beste daran: Wir programmieren einen Webserver direkt auf dem Chip, sodass du die Temperatur und Luftfeuchtigkeit live in deinem Browser sehen kannst – ganz ohne Cloud-Zwang.

Was du brauchst (Einkaufsliste)

Bauteil Zweck Ca. Preis
ESP32 Development Board Das Gehirn der Station 5,00 €
DHT22 Sensor Misst Temperatur & Feuchtigkeit 4,00 €
Breadboard & Jumper Kabel Zum Verbinden ohne Löten 3,00 €
Micro-USB Kabel Strom & Programmierung Vorhanden
Gesamt ca. 12,00 €

Schritt 1: Den ESP32 vorbereiten

Bevor wir Code schreiben, muss MicroPython auf den Chip.

  1. Lade die aktuellste Firmware von micropython.org herunter.
  2. Installiere das Tool esptool via Terminal:
pip install esptool
  1. Lösche den alten Speicher und flashe die Firmware (ersetze /dev/ttyUSB0 durch deinen Port):
esptool.py --port /dev/ttyUSB0 erase_flash
esptool.py --port /dev/ttyUSB0 --baud 460800 write_flash -z 0x1000 esp32-202X.bin

Schritt 2: Die Hardware verkabeln

Verbinde den DHT22 Sensor wie folgt mit dem ESP32:

  • VCC an 3.3V
  • GND an GND
  • DATA an GPIO 14 (D14)

💡 Tipp: Wenn du einen DHT22 ohne integrierten Widerstand nutzt, schalte einen 10k Ohm Widerstand zwischen VCC und DATA.

Schritt 3: Der Code (Die Zentrale)

Wir erstellen nun zwei Dateien. Nutze dafür einen Editor wie Thonny IDE oder VS Code mit dem Pymakr-Plugin.

wetterstation/boot.py:

# Diese Datei wird beim Start zuerst ausgeführt
import network
import utime

def connect_wifi(ssid, password):
    wlan = network.WLAN(network.STA_IF)
    wlan.active(True)
    if not wlan.isconnected():
        print('Verbindung zum WLAN wird hergestellt...')
        wlan.connect(ssid, password)
        while not wlan.isconnected():
            pass
    print('Verbunden! IP-Adresse:', wlan.ifconfig()[0])

# Hier deine Daten eintragen
connect_wifi('DEIN_WLAN_NAME', 'DEIN_PASSWORT')

wetterstation/main.py:

import machine
import dht
import socket
import utime

# Sensor initialisieren
sensor = dht.DHT22(machine.Pin(14))

def read_sensor():
    try:
        utime.sleep(1) # Sensor braucht Zeit
        sensor.measure()
        return sensor.temperature(), sensor.humidity()
    except Exception as e:
        return "N/A", "N/A"

def web_page(temp, hum):
    html = f"""
    <!DOCTYPE html>
    <html>
    <head> <title>ESP32 Wetterstation</title> 
    <meta http-equiv="refresh" content="5">
    <style>
        body {{ font-family: sans-serif; text-align: center; background: #f4f4f9; padding-top: 50px; }}
        .card {{ background: white; padding: 20px; border-radius: 15px; display: inline-block; box-shadow: 0 4px 10px rgba(0,0,0,0.1); }}
        h1 {{ color: #333; }}
        .value {{ font-size: 2em; font-weight: bold; color: #007bff; }}
    </style>
    </head>
    <body>
        <div class="card">
            <h1>🏠 Wohnzimmer-Klima</h1>
            <p>Temperatur: <span class="value">{temp}&deg;C</span></p>
            <p>Luftfeuchtigkeit: <span class="value">{hum}%</span></p>
            <p><small>Zuletzt aktualisiert: {utime.localtime()[3]}:{utime.localtime()[4]}</small></p>
        </div>
    </body>
    </html>
    """
    return html

# Socket Server starten
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('', 80))
s.listen(5)

print("Server aktiv. Warte auf Anfragen...")

while True:
    conn, addr = s.accept()
    print('Anfrage von %s' % str(addr))
    temp, hum = read_sensor()
    response = web_page(temp, hum)
    conn.send('HTTP/1.1 200 OK\n')
    conn.send('Content-Type: text/html\n')
    conn.send('Connection: close\n\n')
    conn.sendall(response)
    conn.close()

Schritt 4: Das Ergebnis verifizieren

Sobald der Code auf dem ESP32 läuft, zeigt er in der Konsole von Thonny oder VS Code die IP-Adresse an (z.B. 192.168.178.50).

  1. Öffne deinen Browser auf dem PC oder Smartphone.
  2. Tippe die IP-Adresse in die Adresszeile ein.
  3. Erfolg: Du siehst dein selbst gehostetes Dashboard mit den Live-Daten deines Wohnzimmers!

⚠️ 📸 SCREENSHOT ANFRAGE: Hier einen Screenshot vom Browser-Aufruf des ESP32 Dashboards einbauen. Man sollte die Temperatur und Feuchtigkeit in der schicken Card-Ansicht sehen.

Fazit: Warum das wichtig ist

Anstatt fertige Sensoren von Xiaomi oder Tuya zu kaufen, hast du hier die volle Kontrolle. Es gibt keine Datenweitergabe an externe Server, keine Abos und du kannst das System jederzeit erweitern – zum Beispiel um ein OLED-Display oder eine Datenbank-Anbindung via MQTT.

Viel Spaß beim Nachbauen!

[WERBUNG: CONTENT UNTEN]