Raspberry Pi Pico: Temperatur messen mit dem DHT22

Temperatur und Luftfeuchtigkeit messen ist die klassische Anwendung für Mikrocontroller und Sensoren. Die dabei ermittelten Werte haben durchaus praktische Relevanz. Es gibt viele praktische Anwendungen, bei denen Motoren, Pumpen, Heizungen und Lüfter temperaturabhängig geschaltet werden.

Der DHT22, oft auch als AM2302 bezeichnet, ist ein digitaler Temperatur- und Luftfeuchtigkeitssensor. Im folgenden Aufbau wollen wir die Temperatur und Luftfeuchtigkeit mit einem DHT22 messen und anzeigen.

Aufbau und Bauteile

Raspberry Pi Pico: Temperatur messen mit dem DHT22

Raspberry Pi Pico DHT22 AM3202
Pin 36 3V3 +3,3V 1 (VCC) 1 (VCC)
Pin 20 GPIO 15 2 (Data) 2 (Data)
Pin 18 GND 4 (GND) 3 (GND)

Schnell und einfach alle Bauteile zusammen bestellen

Programmcode für MicroPython

Der Programmcode verwendet die interne DHT22-Unterstützung in MicroPython. In einer Endlos-Schleife werden die Werte für Temperatur und Luftfeuchtigkeit ausgelesen und angezeigt.

# Bibliotheken laden
from machine import Pin
from time import sleep
from dht import DHT22

# Initialisierung GPIO und DHT22
sleep(1)
dht22_sensor = DHT22(Pin(15, Pin.IN, Pin.PULL_UP))

# Wiederholung (Endlos-Schleife)
while True:
    # Messung durchführen
    dht22_sensor.measure()
    # Werte lesen
    temp = dht22_sensor.temperature()
    humi = dht22_sensor.humidity()
    # Werte ausgeben
    print('      Temperatur:', temp, '°C')
    print('Luftfeuchtigkeit:', humi, '%')
    print()
    sleep(3)

Nach der Inbetriebnahme durch die Verbindung mit der Betriebsspannung sollte man mindestens 1 Sekunde warten, bis man den Sensor abfragt, um den unbestimmten Zustand zu übergehen. Das ist im autarken Betrieb wichtig, weil hier nach Anlegen der Betriebsspannung der Programmcode sofort ausgeführt wird.

Fehler: ImportError: no module named 'dht'

Diese Fehlermeldung sagt, dass es kein Import-Modul mit dem Namen „dht“ gibt. Das könnte ein Fehler im Programmcode sein. In diesem Fall aber nicht. Vermutlich befindet sich auf dem Raspberry Pi Pico eine veraltete MicroPython-Firmware in der noch keine DHT-Unterstützung vorhanden ist
DHTs werden ab MicroPython Version 1.18 unterstützt.

Welche MicroPython-Version auf Deinem Raspberry Pi Pico drauf ist, kannst Du Dir mit einem Klick auf den STOP-Button in der Kommandozeile von Thonny anzeigen lassen.

Fehler: OSError: [Errno 110] ETIMEDOUT

Die Datenübertragung mit dem DHT22 war nicht erfolgreich. Dazu muss man sagen, dass die Datenübertragung zwischen dem Pico und DHT22 sehr empfindlich ist, was die elektrische Verbindung angeht. Bei dieser Fehlermeldung besteht vermutlich ein Problem bei den Verbindungskabeln und einem verwendeten Steckbrett. Es empfiehlt sich einfach mal andere Steckverbindungen auszuprobieren. Das heißt, andere Verbindungskabel und andere Steckreihen auf dem Steckbrett.

Der folgende Programmcode fängt den Fehler ab, gibt eine Fehlermeldung aus und läuft weiter.

# Bibliotheken laden
from machine import Pin
from time import sleep
from dht import DHT22

# Initialisierung GPIO und DHT22
sleep(2)
dht22_sensor = DHT22(Pin(15, Pin.IN, Pin.PULL_UP))

# Wiederholung (Endlos-Schleife)
while True:
    try:
        # Messung durchführen
        dht22_sensor.measure()
        # Werte lesen
        temp = dht22_sensor.temperature()
        humi = dht22_sensor.humidity()
        # Werte ausgeben
        print(' Temperatur:', temp, '°C')
        print('Luftfeuchtigkeit:', humi, '%')
    except OSError:
        print('Fehler / Verkabelung prüfen')
        print()
    sleep(3)

Programmcode für MMBasic

DIM FLOAT temp, humidity
BITBANG HUMID GP15, temp, humidity
PRINT "Temperatur:" temp "°C"
PRINT "Luftfeuchtigkeit:" humidity "%"

Experimente und Beobachtungen

Bei diesem Aufbau und dem Programmcode bietet es sich an, mehrere Experimente durchzuführen, um die Leistungsfähigkeit des DHT22 bei der Temperatur- und Luftfeuchtigkeitsmessung festzustellen.

Hinweis: Messen heißt Vergleichen einer bekannten mit einer unbekannten Größe. Das heißt, wir brauchen ein Thermometer, dass uns Referenzwerte für Temperatur und Luftfeuchtigkeit anzeigt.

  1. Um die Luftfeuchtigkeit am Sensor zu ändern, reicht es aus, wenn man ihn kurz und kräftig anhaucht. Der menschliche Atem ist so feucht, dass dadurch der Messwert auf den Maximalwert springt und innerhalb einer Minute langsam wieder auf einen normalen Wert absinkt.
  2. Um die Temperatur am Sensor zu ändern wird man das Gehäuse mit zwei Fingern für etwa eine Minute umschließen müssen. In dieser Zeit wird die Temperatur ansteigen. Wenn man den Sensor wieder loslässt, wird die Temperatur auf einen normalen Wert wieder absinken.

Darf es ein bisschen mehr sein?

Wie wäre es, einfach mal mehrere Temperatursensoren miteinander zu vergleichen, um herauszufinden wie gut oder wie schlecht die messen?

Wenn Du einen Raspberry Pi Pico W mit WLAN-Funktion hast, dann kannst Du mit einem anderen Programmcode gleich eine eigene Wetterstation bauen, die Du übers WLAN aufrufen kannst.

Weitere verwandte Themen:

Frag Elektronik-Kompendium.de

Hardware-nahes Programmieren mit dem Raspberry Pi Pico und MicroPython

Elektronik-Set Pico Edition

Das Elektronik-Set Pico Edition ist ein Bauteile-Sortiment mit Anleitung zum Experimentieren und Programmieren mit MicroPython.

  • LED: Einschalten, ausschalten, blinken und Helligkeit steuern
  • Taster: Entprellen und Zustände anzeigen
  • LED mit Taster einschalten und ausschalten
  • Ampel- und Lauflicht-Steuerung
  • Elektronischer Würfel
  • Eigene Steuerungen programmieren

Elektronik-Set jetzt bestellen Online-Workshop buchen

Online-Workshop: Programmieren mit dem Raspberry Pi Pico

Programmieren mit dem Raspberry Pi Pico

Gemeinsam mit anderen und unter Anleitung experimentieren? Wir bieten unterschiedliche Online-Workshops zum Raspberry Pi Pico und MicroPython an. Einführung in die Programmierung, Sensoren programmieren und kalibrieren, sowie Internet of Things und Smart Home über WLAN und MQTT.

Online-Workshop buchen

Besuchen Sie unser fast monatlich stattfindendes Online-Meeting PicoTalk und lernen Sie uns kennen. Die Teilnahme ist kostenfrei.

Termine und Newsletter-Anmeldung

 

Elektronik-Sets für das Hardware-nahe Programmieren