Bei Fragen können Sie mich gerne per E-Mail erreichen:
📧 steuerung@gmx.at
Firmware für einen IoT-Höhen- und Umweltsensor basierend auf ESP32c3
Features:
- Temperatur- und Luftfeuchtigkeitsmessung mit AHT20
- Luftdruck- und Höhendaten mit BMP280
- OLED-Display (SSD1306) zur Anzeige
- WLAN mit konfigurierbarem Setup-Hotspot
- MQTT-Protokoll zum Senden der Sensordaten
- OTA-Updates per Button
- Langdruck-Button zur Steuerung (Reset, Setup, Update)
- Speicherung der Einstellungen & Maximalwerte im non-volatile Speicher (Preferences)
- Anzeige Einstellungen direkt am Gerät möglich.
- OTA Update auch über WEB direkt am Gerät möglich
- Vertikalgeschwindigkeit
Neue Funktionen (v1.5.0)
🛩️ Vertikalgeschwindigkeit (m/s) mit Glättung & Peak‑Hold (max_v)
📶 RSSI‑Balken oben rechts: zeigt die aktuelle WLAN‑Signalstärke (0–4 Balken)
🔵 MQTT‑Send‑Indikator unten links: Punkt blinkt kurz nach erfolgreichem Publish
7‑Segment‑ähnliche Auto‑Fit‑Zahlen mit Dezimal‑Komma (z. B. „230,5“) – dynamische Schriftgröße
🔁 Seitenrotation am Display (alle ~5 s):
dH max [m]
v max [m/s]
AF (Boot‑Zähler)
🧠 Smart Setup via WLAN-Hotspot
Kein Hardcoding nötig! Einfach Gerät einschalten, Hotspot öffnen und SSID + MQTT-Zugang im Browser konfigurieren.
📡 Live MQTT-Datenübertragung
Temperatur, Luftfeuchtigkeit, Luftdruck und Höhe – alles in Echtzeit über MQTT an dein Smart-Home-System.
🖥️ OLED-Anzeige integriert
Die wichtigsten Sensordaten immer direkt im Blick – auch ohne Smartphone oder PC.
🔄 OTA-Updates per Tastendruck
Firmware-Updates direkt per WLAN – ganz ohne Kabel oder PC-Verbindung. Nur lange drücken, fertig.
📏 Automatisches Höhendelta-Tracking
Das Gerät misst und speichert automatisch die maximale Höhenänderung seit dem letzten Reset.
💾 Speicher für Maximalwerte und Einstellungen
Alle wichtigen Daten bleiben erhalten – auch nach Stromverlust oder Neustart.
🧰 Super einfacher Web-Flasher
Keine IDE, keine Treiberprobleme. Flash direkt im Browser:
➡️ Zum Flasher
🪛 Open Hardware – Platinen-Layout inklusive
Platine selbst bauen oder bestellen – die Gerber-Dateien sind bereits vorbereitet!
Ein eigenes Platinen-Layout wurde erstellt!
Du kannst jetzt ganz einfach die Gerber-Datei verwenden und die gewünschte Anzahl der Platinen direkt und bequem online bei JLCPCB bestellen. 🚀
💡 Tipp:
- Einfach die ZIP-Datei bei JLCPCB hochladen und die Platinen individuell konfigurieren.
- JLCPCB bietet schnelle Fertigung zu günstigen Preisen.
- Ideal, um schnell und unkompliziert deine Platinen in professioneller Qualität zu erhalten.
Funktion | GPIO-Pin |
---|---|
I2C SDA | 5 |
I2C SCL | 6 |
Boot Button | 9 |
Status LED | 8 |
-
Verbinde Sensoren und Display mit den oben angegebenen Pins.
-
Firmware auf den ESP32c3 flashen
👉 Dafür kann bequem der Web ESP Flasher verwendet werden:
https://flugbuch.gltdienst.home64.de/flasher/- Halte während des Verbindungsaufbaus im Flasher-Tool die Boot-Taste gedrückt.
- Drücke kurz die Reset-Taste am ESP32, während die Boot-Taste weiterhin gedrückt ist.
- Danach kannst du die Boot-Taste loslassen.
- Nun sollte die Verbindung hergestellt und die Firmware übertragen werden.
-
Beim ersten Start (Lang drücken (≥ 3 Sek.):** Start des Setup-Hotspots.)öffnet sich ein WLAN-Hotspot „Altitude Sensor“ für die Konfiguration.
-
Im Browser den Hotspot aufrufen und SSID, Passwort, MQTT-Daten sowie Sensor-ID eingeben.
-
Nach dem Speichern erfolgt ein automatischer Neustart und die Verbindung zum WLAN.
-
Die Sensordaten werden über MQTT gesendet und auf dem OLED-Display angezeigt.
-
Kurz drücken (< 3 Sek.): Reset der gespeicherten Maximalwerte.
-
Lang drücken (≥ 3 Sek.): Start des Setup-Hotspots.
-
Sehr lang drücken (≥ 10 Sek.): OTA-Update starten.
Zusätzlich existiert ein zweiter Reset‑Button (links), der die Werte sofort zurücksetzt.

🖥️ Anzeige‑Details (OLED)
Oben rechts: WLAN‑Signal (RSSI‑Balken, 0–4)
Unten links: MQTT‑Punkt, blinkt kurz nach erfolgreichem Publish
Einheiten: „m“ bzw. „m/s“ rechts unten
Außerhalb Bereich (|ΔH| > ALT_RANGE): Anzeige des aktuellen ΔH mit „P“ links unten (Peak)
Rotation: dH max → v max → AF (je ~5 s)
Topic‑Format:
Altitude/sensor<SENSOR_ID>
Beispiel für SENSOR_ID = 1 → Altitude/sensor1
Beispiel Payload (JSON):
{
"temp": 22.5,
"hum": 55.3,
"alt": 250.1,
"max_delta_alt": 103.4,
"v": 0.72,
"max_v": 2.85,
"bootCount": 3
}
📚 Benötigte Bibliotheken
Adafruit AHTX0
Adafruit BMP280
U8g2 Display
PubSubClient MQTT
Preferences Library (Teil des ESP Arduino Cores)
Damit der Kaffee im Büro nie ausgeht, wäre eine kleine Spende super! 💰☕
Jeder Beitrag hilft, die Kaffeemaschine am Laufen zu halten, damit wir alle produktiv bleiben können!
Vielen Dank für deine Unterstützung! 🙌