Skip to content

Technik Blog

Programmieren | Arduino | ESP32 | MicroPython | Python | Raspberry Pi | Raspberry Pi Pico

Menu
  • Smarthome
  • Arduino
  • ESP32 & Co.
  • Raspberry Pi & Pico
  • Solo Mining
  • Über mich
  • Deutsch
  • English
Menu

ESP8266 DIY IoT Wetterstation mit OLED Display und DHT11 Sensor

Posted on 20. Mai 20208. März 2024 by Stefan Draeger

In diesem Beitrag möchte ich dir die DIY IoT Wetterstation mit dem Mikrocontroller ESP8266, einem OLED Display sowie dem DHT11 Sensor vorstellen.

DIY IoT ESP8266 Wetterstation

  • Bezug der DIY IoT Wetterstation
    • Lieferumfang
  • Zusammenbau der Komponenten
  • Besonderheiten beim OLED Display
  • Programmierung der DIY IoT Wetterstation
    • Installieren des Treibers für den ESP8266
      • Schritt 1 – Boardverwalter URL ergänzen
      • Schritt 2 – Installieren des Treibers über den Boardverwalter
    • benötigte Bibliotheken
    • Ausgabe der Sensordaten auf dem Display
  • Download

Bezug der DIY IoT Wetterstation

Diese kleine Wetterstation mit dem ESP8266 Mikrocontroller habe ich über aliexpress.com für ca. 7 € inkl. 4 € Versandkosten erstanden. Auf ebay.de erhältst du diesen Bausatz für ca. 17 € inkl. Versandkosten.

Da beide Produkte aus dem asiatischen Raum geliefert werden, denke ich das die Lieferzeit ziemlich ähnlich sein werden und somit empfehle ich das deutlich günstigere Produkt von aliexpress.com.

Lieferumfang

Zum Lieferumfang gehört:

  • ein 30 cm langes USB-Kabel (USB Typ A Stecker auf Micro-USB Buchse),
  • eine Hauptplatine mit dem ESP8266 Chip,
  • ein 0,96″ OLED Display, 
  • ein DHT11 Sensor, sowie
  • 3 Breadboardkabel, 20 cm, Buchse – Buchse (zum alternativen Anschluss des DHT11 Sensors)
Hauptplatine mit ESP8266 Chip
Hauptplatine mit ESP8266 Chip
DHT11 Sensor
DHT11 Sensor
0,96" OLED Display
0,96″ OLED Display
30cm USB Kabel
30cm USB Kabel

Geliefert wurde das Display sowie der Sensor in jeweils kleine, antistatische Tüten.

Lieferumfang, DIY IoT Wetterstation
Lieferumfang, DIY IoT Wetterstation

Die Hauptplatine wurde zusammen mit dem USB-Kabel in einer kleinen Plastikbox geliefert, welche jedoch so groß ist, dass das Display und der Sensor einen Platz darin finden. Leider kann diese Box aber nicht als Gehäuse für diesen Bausatz verwendet werden, da der DHT11 Sensor knapp 2 cm zu hoch absteht.

Aufbewahrungsbox für die Bauteile zur DIY IoT Wetterstation
Aufbewahrungsbox für die Bauteile zur DIY IoT Wetterstation

Zusammenbau der Komponenten

Dieser kleine und vor allem sehr übersichtliche Bausatz (3 Bauteile) wird über Stiftleisten und Buchsen zusammengesteckt. Der DHT11 Sensor ist dabei fertig aufgebaut und wird in die 3 Polige Buchse oben rechts gesteckt. Es ist dabei auf die korrekte Polung zu achten. 

An das Display muss die vierpolige Stiftleiste angelötet werden, ich stecke dazu diese Stiftleiste auf ein Breadboard und fixiere das Display mit UHU patterfix. 

anlöten der Stiftleiste an das 0,96" OLED Display
anlöten der Stiftleiste an das 0,96″ OLED Display

Der Vorteil bei UHU patterfix ist, das dieses etwas klebt und leicht formbar ist. Des Weiteren bleibt dieses sehr lange formbar und kann somit sehr oft wiederverwendet werden.

Besonderheiten beim OLED Display

Die Pinleiste des OLED Displays ist anders angeordnet als wie bei anderen Displays dieser Bauart. 
Auf der linken Seite im Bild findest du das 0,96″ OLED Display, welches dem Bausatz beilegt ist, hier sieht man das v.l.n.r die Pinbelegung VCC, GND, SCL und SDA ist.
Im rechten Bereich des Bildes habe ich ein 1,3″ OLED Display gestellt hier ist die Belegung von VCC & GND verdreht.

OLED Displays im Vergleich
OLED Displays im Vergleich

Somit kann leider kein anderes Display einfach angesteckt werden. Hier hätte meiner Meinung nach der Hersteller etwas drauf achten können und somit hätte der Endkunde etwas mehr Spielraum bei der Auswahl eines Displays. Jedoch kann man sich mit entsprechenden Breadboardkabeln behelfen und trotzdem ein anderes Display anschließen. (Das sieht dann aber nicht mehr ganz so schön aus.)

Programmierung der DIY IoT Wetterstation

Für die Programmierung nutze ich die Entwicklungsumgebung Arduino IDE in der Version 1.8.12 welche du kostenfrei von der Seite https://www.arduino.cc/en/Main/Software herunterladen kannst. 

Installieren des Treibers für den ESP8266

Der Treiber für den ESP8266 ist nicht standardmäßig in der Arduino IDE installiert, damit wir diesen programmieren können, müssen wir dieses also nachholen.

Schritt 1 – Boardverwalter URL ergänzen

Als Erstes müssen wir in den Voreinstellungen unter „Zusätzliche Boardverwalter-Urls“ die Adresse

http://arduino.esp8266.com/stable/package_esp8266com_index.json

hinzufügen.

erweitern der Boardverwalter Urls für den ESP Treiber
erweitern der Boardverwalter Urls für den ESP Treiber

Schritt 2 – Installieren des Treibers über den Boardverwalter

Wenn man nun den Boardverwalter („Werkzeug“ > „Board:“ > „Boardverwalter…“) öffnet kann man den Treiber unter der Eingabe der Zeichenkette „esp8266“ installieren.

Boardverwalter - ESP8266 Treiber
Boardverwalter – ESP8266 Treiber

In meinem Fall ist dieser bereits installiert.

benötigte Bibliotheken

Für die Programmierung des Sketches / Programmes benötigen wir 3 Bibliotheken, zwei für das Display und eine für den DHT11 Sensor.

Für das OLED Display verwende ich die Adafruit GFX und Adafruit SSD1306 Bibliothek. Beide Bibliotheken findest du im Bibliotheksverwalter der Arduino IDE. Den Boardverwalter öffnest du in dem du über das Hauptmenü „Sketch“ > „Bibliothek einbinden…“ > „Bibliotheken verwalten…“ navigierst. 

Dort gibst du nun die Zeichenkette „gfx“ ein und suchst nach dem Eintrag „Adafruit GFX Library“ und installierst diese über die Schaltfläche „Installieren“. Das gleiche machst du ebenfalls mit der Bibliothek „ssd1306“ (der Eintrag lautet „Adafruit SSD1306“).

Wenn beide Bibliotheken installiert sind wird als letztes die Bibliothek für den DHT11 Sensor installiert. Hier gibt es diverse Bibliotheken ich verwende die „DHT sensor library“ von Adafruit.

Es ist nach der Installation kein neustarten der Arduino IDE notwendig, die Treiber und Bibliotheken sind sofort Einsatzbereit.

Ausgabe der Sensordaten auf dem Display

//Bibliothek für die Kommunikation über I2C
#include <Wire.h>

//Bibliothek für den Sensor DHT11
#include "DHT.h"

//Bibliotheken zum betreiben des Displays
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

//Der DHT11 Sensor ist am Board über den 
//digitalen Pin D5 angeschlossen
#define DHTPIN 5 
//Der Sensor ist vom Typ DHT11
//Theoretisch könnte man den DHT11 auch gegen einen
//DHT22 oder ASM2320 austauschen, diese Sensoren sind
//baugleich 
#define DHTTYPE DHT11
//erstellen einer Instanz des Sensor Objektes
DHT dht(DHTPIN, DHTTYPE);

//default Rest des Displays
#define OLED_RESET 4
//eine neue instanz für das Display erzeugen
Adafruit_SSD1306 display(OLED_RESET);

void setup() {
  //beginn der seriellen Kommunikation mit 9600 baud
  //eventuelle Fehler (zbsp. beim lesen der Werte des DHT11 Sensors) 
  //werden auf der seriellen Schnittstelle ausgegeben
  Serial.begin(9600);
  //beginn der Kommunikation mit dem DHT11 Sensor
  dht.begin();
  //setzen der I2C Pins auf digital D2 und digital D14
  Wire.begin(2,14);
  //beginn der Kommunikation mit dem Display
  //das OLED Display verfügt über die Adresse 0x3C
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  
  //setzen der Textgröße auf den kleinsten Wert von 1
  display.setTextSize(1);
  //setzen der Schriftfarbe "weiß"
  display.setTextColor(WHITE);
}

void loop() {
  //eine Pause von 2 Sekunden
  delay(2000);
  //lesen der rel. Luftfeuchtigkeit
  float h = dht.readHumidity();
  //lesen der Temperatur in Grad Celsius
  //mit der übergabe des Parameters "false" in der Funktion 
  //readTemperature(), wird der Wert in Grad Fahrenheit geliefert
  float t = dht.readTemperature();

  //prüfen ob Zahlenwerte geliefert wurden
  //Wenn der Sensor nicht gefunden wurde, dann enthalten die flaot Variablen "NaN"
  if (isnan(h) || isnan(t)) {
    Serial.println(F("Fehler beim lesen der Sensorwerte!"));
    return;
  }

  //löschen des Displays
  display.clearDisplay();
  //setzen des Cursors an die Position Spalte = 0, Zeile = 0
  display.setCursor(0, 0);
  //schreiben der Temperatur,
  //der Wert der Variable t wird dabei in ein String umgewandelt und
  //auf zwei Stellen nach dem Komma gekürzt.
  display.println("Temp.: " + String(t,2)+"C");
  //setzen des Cursors an die Position Spalte = 0 , Zeile = 15
  display.setCursor(0, 15);
  //schreiben der rel. Luftfeuchtigkeit
  //der Wert der Variabel h wird dabei in ein String umgewandelt und
  //auf zwei Stellen nach dem Komma gekürzt.
  display.println("Humidity: "+String(h,2)+"%");  
  //aktualisieren des Displays
  display.display();
}
Darstellen der Sensorwerte des DHT11 auf dem 0,96" OLED Display
Darstellen der Sensorwerte des DHT11 auf dem 0,96″ OLED Display

Download

Hier nun der Sketch zum bequemen Download.

ESP8266 DIY IoT Wetterstation mit OLED Display und DHT11 SensorHerunterladen

6 thoughts on “ESP8266 DIY IoT Wetterstation mit OLED Display und DHT11 Sensor”

  1. Pete sagt:
    2. Februar 2021 um 21:50 Uhr

    Hallo,
    gibt es eine Möglichkeit das Display bei einer vorher festgelegten Temperaturüberschreitung , blinken zu lassen?
    Ich messe die Temperatur in meinem Terrarium und hätte gerne zusätzlich einen „alarm“ , den würde ich gerne in Form des blinkenden Display realisieren. Kannst du mir einen tip geben wie ich das im Code umsetzen könnte?
    MfG.

    Antworten
    1. Stefan Draeger sagt:
      2. Februar 2021 um 22:01 Uhr

      Hi,

      klaro geht das, du musst „nur“ das Display löschen einpaar Millisekunden warten und dann die Daten neu schreiben.

      Gruß,

      Stefan Draeger

      Antworten
      1. Pete sagt:
        2. Februar 2021 um 23:22 Uhr

        Nabend,
        Okay den schritt verstehe ich. Nun möchte ich aber das Display bei sagen wir 30°C anfangen lassen zu blinken, da bei dieser Temperatur eine kritische Schwelle im Terrarium überschritten wird.
        Kannst du mir einen Tip geben wie ich das machen könnte?

        Antworten
        1. Stefan Draeger sagt:
          5. Februar 2021 um 08:41 Uhr

          Hi,

          ich werde mir das gerne mal anschauen und ggf. darüber einen Beitrag schreiben.

          Gruß und Danke,

          Stefan Draeger

          Antworten
  2. Joachim Meitzner sagt:
    22. Dezember 2021 um 21:08 Uhr

    Ein interessanter Sketch. Dafür danke ich Ihnen. Könnte man diesen Sketch zum zeitgleichen Server erweitern?

    Antworten
  3. Pingback: ESP8266 DIY IoT Wetterstation, Webseite mit Sensordaten - Teil 2 - Technik Blog

Schreibe einen Kommentar Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Fragen oder Feedback?

Du hast eine Idee, brauchst Hilfe oder möchtest Feedback loswerden?
Support-Ticket erstellen

Newsletter abonnieren

Bleib auf dem Laufenden: Erhalte regelmäßig Updates zu neuen Projekten, Tutorials und Tipps rund um Arduino, ESP32 und mehr – direkt in dein Postfach.

Jetzt Newsletter abonnieren

Unterstütze meinen Blog

Wenn dir meine Inhalte gefallen, freue ich mich über deine Unterstützung auf Tipeee.
So hilfst du mit, den Blog am Leben zu halten und neue Beiträge zu ermöglichen.

draeger-it.blog auf Tipeee unterstützen

Vielen Dank für deinen Support!
– Stefan Draeger

Kategorien

Tools

  • Unix-Zeitstempel-Rechner
  • ASCII Tabelle
  • Spannung, Strom, Widerstand und Leistung berechnen
  • Widerstandsrechner
  • 8×8 LED Matrix Tool
  • 8×16 LED Matrix Modul von Keyestudio
  • 16×16 LED Matrix – Generator

Links

Blogverzeichnis Bloggerei.de TopBlogs.de das Original - Blogverzeichnis | Blog Top Liste Blogverzeichnis trusted-blogs.com

Stefan Draeger
Königsberger Str. 13
38364 Schöningen

Tel.: 01778501273
E-Mail: info@draeger-it.blog

Folge mir auf

  • Impressum
  • Datenschutzerklärung
  • Disclaimer
  • Cookie-Richtlinie (EU)
©2025 Technik Blog | Built using WordPress and Responsive Blogily theme by Superb
Cookie-Zustimmung verwalten
Wir verwenden Technologien wie Cookies, um Geräteinformationen zu speichern und/oder darauf zuzugreifen. Wir tun dies, um das Surferlebnis zu verbessern und um personalisierte Werbung anzuzeigen. Wenn Sie diesen Technologien zustimmen, können wir Daten wie das Surfverhalten oder eindeutige IDs auf dieser Website verarbeiten. Wenn Sie Ihre Zustimmung nicht erteilen oder zurückziehen, können bestimmte Funktionen beeinträchtigt werden.
Funktional Immer aktiv
Die technische Speicherung oder der Zugang ist unbedingt erforderlich für den rechtmäßigen Zweck, die Nutzung eines bestimmten Dienstes zu ermöglichen, der vom Teilnehmer oder Nutzer ausdrücklich gewünscht wird, oder für den alleinigen Zweck, die Übertragung einer Nachricht über ein elektronisches Kommunikationsnetz durchzuführen.
Vorlieben
Die technische Speicherung oder der Zugriff ist für den rechtmäßigen Zweck der Speicherung von Präferenzen erforderlich, die nicht vom Abonnenten oder Benutzer angefordert wurden.
Statistiken
Die technische Speicherung oder der Zugriff, der ausschließlich zu statistischen Zwecken erfolgt. Die technische Speicherung oder der Zugriff, der ausschließlich zu anonymen statistischen Zwecken verwendet wird. Ohne eine Vorladung, die freiwillige Zustimmung deines Internetdienstanbieters oder zusätzliche Aufzeichnungen von Dritten können die zu diesem Zweck gespeicherten oder abgerufenen Informationen allein in der Regel nicht dazu verwendet werden, dich zu identifizieren.
Marketing
Die technische Speicherung oder der Zugriff ist erforderlich, um Nutzerprofile zu erstellen, um Werbung zu versenden oder um den Nutzer auf einer Website oder über mehrere Websites hinweg zu ähnlichen Marketingzwecken zu verfolgen.
Optionen verwalten Dienste verwalten Verwalten von {vendor_count}-Lieferanten Lese mehr über diese Zwecke
Einstellungen anzeigen
{title} {title} {title}