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

MicroPython mit ESP32: DHT11 Sensordaten auslesen und verarbeiten

Posted on 26. Juni 202429. Juni 2024 by Stefan Draeger

In diesem Beitrag erfährst du, wie man einen Umweltsensor DHT11 am ESP32 D1 R32 mit MicroPython auslesen und diese Sensordaten verarbeiten kann. Für diesen Beitrag verwende ich wieder das Rich Shield von Open Smart. Du kannst jedoch mit wenigen Bauteilen den Sensor an deinen ESP32 anschließen und dieses kleine Tutorial nachbauen.

MicroPython & ESP32 - DHT11 Sensordaten auslesen und verarbeiten
Dieses Video auf YouTube ansehen.

Der DHT11 Sensor ist eine kostengünstige und weit verbreitete Lösung zur Messung von Temperatur und Luftfeuchtigkeit. Er eignet sich hervorragend für viele DIY-Projekte, wie z.B. die Überwachung von Raumklima, Wetterstationen oder Smart-Home-Anwendungen. In den folgenden Abschnitten zeige ich dir Schritt für Schritt, wie du den Sensor anschließt, die Daten ausliest und auswertest.

Zusätzlich werde ich dir zeigen, wie du die ausgelesenen Sensordaten mit einem Zeitstempel versiehst und in eine CSV-Datei speicherst. Dies ermöglicht eine einfache Weiterverarbeitung und Analyse der Daten, beispielsweise in Tabellenkalkulationsprogrammen wie Excel. So kannst du die Temperatur- und Luftfeuchtigkeitswerte über einen längeren Zeitraum überwachen und Trends erkennen.

Inhaltsverzeichnis

  • Technische Daten des DHT11 Sensors
  • DHT11 Sensor am Rich Shield von Open Smart
  • Aufbau der Schaltung ohne Rich Shield von Open Smart
    • Schaltung mit einem fertigen Baustein
    • Schaltung mit Sensor & Widerstand
  • Programmieren des DHT11 Sensors in MicroPython am ESP32 D1 R32
    • Ausgeben der Daten in einer Tabelle
    • Ausgeben in eine CSV-Datei mit Sensordaten des DHT11 auf dem ESP32 mit MicroPython
  • Ausblick

Technische Daten des DHT11 Sensors

Mit dem DHT11 Sensor kannst du recht einfach die Temperatur und die relative Luftfeuchtigkeit messen. Dabei ist dieser Sensor nicht nur günstig, sondern auch recht genau. Wie genau dieser Sensor arbeitet, habe ich bereits im Beitrag Vergleich von Temperatursensoren für den Arduino & Raspberry PI aufgezeigt.

relative Luftfeuchtigkeit
Messbereich 20 % bis 90 %
Toleranz±5 %
Temperatur
Messbereich 0 °C bis 60 °C
Toleranz±2 °C
Betriebsspannung5V

DHT11 Sensor am Rich Shield von Open Smart

Der DHT11 Sensor ist am GPIO19 des ESP32 D12 R32 verbunden (D13 am Arduino UNO).

Mit diesem Umweltsensor kannst du die Temperatur und relative Luftfeuchtigkeit messen. Dabei gibt dieser Sensor alle 1,5 Sekunden einen neuen Wert.

Aufbau der Schaltung ohne Rich Shield von Open Smart

Wenn du die kleine Schaltung ohne Rich Shield nachbauen möchtest, dann gibt es zwei Wege. Zum einen kannst du die Schaltung mit einem fertigen Baustein aufbauen und zum anderen mit dem Sensor und einem 10 kOhm Widerstand.

Hinweis von mir: Die mit einem Sternchen (*) markierten Links sind Affiliate-Links. Wenn du über diese Links einkaufst, erhalte ich eine kleine Provision, die dazu beiträgt, diesen Blog zu unterstützen. Der Preis für dich bleibt dabei unverändert. Vielen Dank für deine Unterstützung!

Schaltung mit einem fertigen Baustein

  • ein ESP32 D1 R32*,
  • ein Micro-USB Datenkabel*,
  • ein DHT11 Sensor*,
  • drei Breadboardkabel*, 10 cm,
  • ein 170 Pin Breadboard*

Bei den DHT11 & DHT22 Sensoren auf Platine musst du auf die Beschriftung achten, diese ist immer unterschiedlich. Wenn du deinen Sensor verpolst, dann kann dieser sehr schnell kaputtgehen!

Schaltung – ESP32 D1 R32 mit DHT11 Sensor als Baustein auf einer Platine

Schaltung mit Sensor & Widerstand

Du erhältst den Sensor auch einzeln, wenn du diesen hast, dann benötigst noch zusätzlich einen 10 kOhm Widerstand, welcher mit VCC verbunden wird.

  • ein ESP32 D1 R32*,
  • ein Micro-USB Datenkabel*,
  • ein DHT11 Sensor*,
  • ein 10 kOhm Widerstand*,
  • vier Breadboardkabel*, 10 cm,
  • ein 170 Pin Breadboard*
Schaltung – DHT11 Sensor am ESP32 D1 R32 mit Widerstand

Programmieren des DHT11 Sensors in MicroPython am ESP32 D1 R32

Damit wir den Sensor auslesen können, benötigen wir ein zusätzliches Modul. Der Firmware von MicroPython liegt bereits ein passendes DHT Modul bei, mit welchem wir den Sensor DHT11 & DHT22 mit wenigen Zeilen Code auslesen können.

import dht
from machine import Pin, RTC
import time

d = dht.DHT11(Pin(19, Pin.IN))

while True:
    d.measure()
    print("Temperatur: ", d.temperature(), "°C", sep="")
    print("rel. Luftfeuchtigkeit: ", d.humidity(), "%", sep="")
    time.sleep(2)

Das kleine Programm schreibt fortwährend die Sensordaten in die Kommandozeile.

Einfache Ausgabe der Sensordaten in der Kommandozeile
Einfache Ausgabe der Sensordaten in der Kommandozeile

Ausgeben der Daten in einer Tabelle

Die Daten lassen sich auch recht einfach in einer Tabelle auf der Kommandozeile ausgeben. Dazu geben wir als Erstes die Kopfzeile aus und setzen den Trenner (Parameter sep in der Funktion print) auf einen geraden Strich / Pipe.

Zusätzlich hole ich mir noch den aktuellen Zeitstempel von der internen RealTimeClock.

import dht
from machine import Pin, RTC
import time

d = dht.DHT11(Pin(19, Pin.IN))

def getTimestamp():
    rtc = RTC()
    currentDateTime = rtc.datetime()
    hour = currentDateTime[4]
    minutes = currentDateTime[5]
    seconds = currentDateTime[6]
    textFormat = "{0}:{1}:{2}"

    if hour < 10:
        hour = "0"+str(hour)
    if minutes < 10:
        minutes = "0"+str(minutes)
    if seconds < 10:
        seconds = "0"+str(seconds) 

    return textFormat.format(hour, minutes, seconds)


print("Zeit\t\t","Temperatur\t", "rel. Luftfeuchtigkeit", sep="|");

while True:
    d.measure()
    print(str(getTimestamp())+"\t",str(d.temperature())+"°C\t\t", str(d.humidity())+"%", sep="|")
    time.sleep(2)

Die tabellarische Ausgabe der Sensordaten auf der Kommandozeile hat den Vorteil das wir diese recht einfach ablesen können und wir könnten diese auch markieren und in eine andere Datei formatiert kopieren.

Tabellarische Ausgabe der Sensordaten auf der Kommandozeile
Tabellarische Ausgabe der Sensordaten auf der Kommandozeile

Ausgeben in eine CSV-Datei mit Sensordaten des DHT11 auf dem ESP32 mit MicroPython

Wir können auf dem Mikrocontroller auch Dateien schreiben und so die Sensorwerte aufzeichnen. Wie du Dateien schreibst werde ich dir in einem späteren Beitrag noch genauer erläutern, hier möchte ich dir der Vollständigkeitshalber ein kleines Programm zeigen, welches die Daten vom Sensor in eine CSV Datei mit dem Namen „sensordata.csv“ schreibt.

import dht
from machine import Pin, RTC
import time
import os

csvDatei = 'sensordata.csv'
lineBreak = '\r\n'
dht11Sensor = dht.DHT11(Pin(19, Pin.IN))

def getTimestamp():
    rtc = RTC()
    currentDateTime = rtc.datetime()
    year = currentDateTime[0]
    month = currentDateTime[1]
    day = currentDateTime[2]
    unknown = currentDateTime[3]
    hour = currentDateTime[4]
    minutes = currentDateTime[5]
    seconds = currentDateTime[6]
    textFormat = "{0}.{1}.{2} {3}:{4}:{5}"
    return textFormat.format(day, month, year, hour, minutes, seconds)

if not csvDatei in os.listdir():
    headline = "Zeit;Temperatur;rel. Luftfeuchtigkeit";
    with open(csvDatei, 'w') as f:
        print(headline)
        f.write(headline)
        f.write(lineBreak)

while True:
    dht11Sensor.measure()
    line = str(getTimestamp())+";"+str(dht11Sensor.temperature())+";"+ str(dht11Sensor.humidity())
    with open(csvDatei, 'a') as f:
        print(line)
        f.write(line)
        f.write(lineBreak)
    
    time.sleep(2)

Der Code erstellt auf dem Mikrocontroller die Datei „sensordaten.csv“ welche über das Kontextmenü (rechte Maustaste auf der Datei) heruntergeladen werden kann. Zusätzlich wird beim Ausführen des Programmes die Daten auf der Kommandozeile ausgegeben.

Thonny - MicroPython Programm zum aufzeichnen der Sensordaten in eine CSV Datei
Thonny – MicroPython Programm zum aufzeichnen der Sensordaten in eine CSV Datei

Diese CSV Datei kann recht einfach in Microsoft Excel importiert und die Daten verarbeitet und visualisiert werden.

Microsoft Excel - importierte CSV Datei
Microsoft Excel – importierte CSV Datei

Ausblick

Die ermittelten Sensordaten könnten wir auch via HTTP Request an ThingSpeak senden und dort extern speichern und visualisieren. Wie du das machst, erläutere ich dir im nächsten Beitrag, sei also gespannt.

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}