MicroPython mit ESP32: DHT11 Sensordaten auslesen und verarbeiten
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. https://youtu.be/7uvoZU09s78 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.
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 LuftfeuchtigkeitMessbereich 20 % bis 90 %Toleranzยฑ5 %TemperaturMessbereich 0 ยฐC bis 60 ยฐCToleranzยฑ2 ยฐCBetriebsspannung5V
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 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 minutes = currentDateTime seconds = currentDateTime 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("Zeittt","Temperaturt", "rel. Luftfeuchtigkeit", sep="|"); while True: d.measure() print(str(getTimestamp())+"t",str(d.temperature())+"ยฐCtt", 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 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 = 'rn' dht11Sensor = dht.DHT11(Pin(19, Pin.IN)) def getTimestamp(): rtc = RTC() currentDateTime = rtc.datetime() year = currentDateTime month = currentDateTime day = currentDateTime unknown = currentDateTime hour = currentDateTime minutes = currentDateTime seconds = currentDateTime 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 Diese CSV Datei kann recht einfach in Microsoft Excel importiert und die Daten verarbeitet und visualisiert werden.
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. Read the full article














