RaspiLab Wetterstation vierte Mission Luftfeuchte messen mit dem DHT22 und dem Raspberry Pi

Feuchtemessung DHT22 Raspberry Pi

Luftfeuchte messen mit dem DHT22 und mit dem Raspberry Pi. Das ist die vierte von sieben Missionen in einem dreistündigen Program für Schüler mit ihren Lehrern. Ziel des Programms ist, Schüler dazu fit zu machen, dass sie eine Wetterstation aufzubauen können. Die vierte Mission behandelt die Messung der relativen Luftfeuchte und der Temperatur mit mit dem Sensor DHT22

Zuletzt getestet: 03.09.2021 auf Raspbian Buster (für die digitalen Bienenstöcke)

Update 10.02.2021 für Feuchtegradienten in Bienenstock-Klimadeckeln (PIP, setuptools)

Update 03.09.2021 (PIP installiert setuptools sebstständig)

Update 12.03.2022 (neue Version) Es gibt eine neugefasste Anleitung, die mit RaspiOS Bullseye getestet ist

Bisher erschienene Artikel zur RaspiLab Wetterstation

  1. Raspilab Wetterstation Grundsystem aufsetzen
  2. Raspilab Wetterstation Lebensdauer der SD-Karte erhöhen
  3. RaspiLab Wetterstation vierte Mission Luftfeuchte messen mit dem DHT22
  4. RaspiLab Wetterstation sechste Mission Druck messen mit dem BMP280

DHT22

Der Sensor DHT22  kann die relative Luftfeuchte und auch die Temperatur messen. Der Sensor soll eine Genauigkeit von 2% für die Feuchte und 0,5 Grad für die Temperatur haben. Es ist eine Betriebsspannung von 3,3V bis  5V möglich, daher eignet sich der DHT22 gut in Verbindung mit dem Raspberry Pi. Alternativ kann der Sensor DHT11 verwendet werden, der allerdings ungenauer ist und auch einen geringeren Feuchtebereich umfasstt..

Schaltplan

Abb. 1 zeigt die Beschaltung des DHT22. Der Widerstand mit 4,7 Kilo-Ohm ist ein sogenannter Pull-Up-Widerstand und sorgt dafür, dass Anschluss Signal eine definierte Spannung anliegt. Abb. 2 zeigt die Beschaltung auf dem Steckbrett für den Schülerworkshop, Abb. 3 zeigt ein anderes Anwendungsszenario: Messung in einem Meisen-Nistkasten. In Abb. 3 sind die Anschlüsse mit dem Raspberry verlötet, da die Verkabelung stark schwankenden Umweltbedingungen ausgesetzt ist und die Steckanschlüsse erfahrungsgemäß nach etwa einem Jahr korrodieren.

Feuchtesensor DHT22 Beschaltung

Abb. 1: Beschaltung des DHT22

DHT22 und Raspberry auf Breadboard

Abb. 2: Verkabelung des Raspberry Pi mit dem Feuchte-Sensor DHT22 auf dem Steckbrett

Luftfeuchte DHT22 Raspberry Detail

Abb. 3; Verkabelung des DHT22 mit dem Raspberry Pi am Beispiel der digitalen Nistkasten-Kamera

Verkabelung des DHT22 mit dem Raspberry PI auf dem Steckbrett

  1. Sensor in J21, J22, J23 und J24
  2. Widerstand G22 und G17
  3. Jumperkabel F21 in rote (+) Außenleiste
  4. Jumperkabel F17 in rote (+) Außenleiste
  5. Jumperkabel rote (+) Außenleiste in Pin 1 (3,3V)
  6. Jumperkabel F22 in Pin 38 (GPIO20)
  7. Jumperkabel F24 in Pin 34 (Ground)

Verkabelung des DHT22 mit dem Raspberry Pi für den Nistkasten

Mit farbiger Litze sind die Anschlüsse direkt verlötet. Der Pull-Up-Widerstand ist direkt am Sensor angebracht. Alternativ können Sie den Widerstand auch in der Nähe der Anschlüsse am Raspberry anbringen. Hier wird für die Datenleitung GPIO 13 (Hardware-Pin-Nr. 33) verwendet. Die Versorgungsspannung (totes Kabel) kommt an 3,3,V, die Masse (schwarzes Kabel) an GND (Hardware-Pin-Nr. 34).

Vorbereiten des Raspberry Pi für die Feuchtemessung

Schritt 1: Der Sensor DHT22 benötigt seine eigenen Python-Pakete. Um die Pakete einzubinden zu können, geben sie folgenden Befehl ein:

Schritt 2: Laden Sie die Adafruit Bibliothek, die den Sensor DHT22 unterstützt. Die Bibliothek wird in ihrem Benutzerverzeichnis pi eingerichtet. Damit die funktioniert, benötigen Sie das Kommando git und müssen es zuvor installieren. Diese Vorbereitung kann entfallen, wenn Sie in anderen Projekten schon git installiert haben. Mit den folgenden drei Befehlen installieren Sie git und überprüfen die Version.

sudo apt update

sudo apt install git

git --version

Mit git laden Sie  die erforderliche Bibliothek

git clone https://github.com/adafruit/Adafruit_Python_DHT.git

Im Nutzerverzeichnis pi finden Sie nach der Installation ein Verzeichnis Adafruit_Python_DHT.

Schritt 3: Installieren Sie die Adafruit Bibliothek. Wechseln Sie in das Verzeichnis mit

cd Adafruit_Python_DHT

Update 10.02.2021: Zwischenschritt 3a

Bei eine Neuinstallation auf aktuellem Raspi OS (Buster vom 11.11.2011) offenbarte beim Aufruf von „sudo python setup.py install“, dass setup-Tools fehlen. Die Fehlermeldung lautet:

„ImportError: No module named setuptools“

Daher sind bei einem „frischen“ Raspi OS zwei Zwischenschritte erforderlich: 1. Installation des Python-Paketmanagers PIP und dann 2. Installation der setuptools mittels PIP. Dazu verwenden Sie die Befehle:

sudo apt install python-pip


Update 03.09.32021: Der folgende am 10.02. eingefügte Befehl ist anscheinend nicht mehr notwendig:
sudo pip install setuptools
Nach Installation von python-pip waren die setuptools verfügbar

Im Verzeichnis Adafruit_Python_DHT gibt es ein Installationsscript  setup.py. Verwenden Sie das Script mit

sudo python setup.py install

Der Prozess dauert einen Moment und meldet sich mit der Angabe des Installationsverzeichnissses  „Installed /usr/local/lib/python2.7/dist-packages/Adafruit_DHT-1.4.0-py2.7-linux-armv6l.egg …… Finished processing dependencies for Adafruit-DHT==1.4.0“ zurück.

Schritt 4: Nun können Sie testen ob Sensor funktioniert. Im Ordner Adafruit _Python_DHT wechseln Sie in das Verzeichnis „examples“.

cd examples

Testen Sie mit einem mitgelieferten Testscript

sudo python AdafruitDHT.py 2302 22

Die beiden Zahlenangaben sind für die Beschaltung entsprechend Abb. 1. Die 2302 bei der Eingabe steht für die Sensornummer. Schauen Sie einmal auf den Sensor, er trägt den Aufdruck AM2302. Die 22 steht für die GPIO Nummer (nicht für den belegten Pin auf Raspberry Pi). Wenn Sie einen anderen Pin verwenden, z.B. wie bei der Nistkastenschaltung in Abb. 3, lautet der Befehl

sudo python AdafruitDHT.py 2302 13

Die  Ausgabe müsste nun so ähnlich wie folgt aussehen:

Temp=22.4*  Humidity=34.8%

 

Für eine beispielhafte Belegung wie folgt

# Raspberry Pi Pinbelegung
# SD-Karten-Seite
#         +------------+------+-----+
#         |            |GPIO  |Pin  |
#         +============+======+=====+
#+VCC     |3,3V        |      | 1   |
#         +------------+------+-----+
#DS18B20  |SDA1        | 2    | 3   |
#         +------------+------+-----+
#LED      |SCL1        | 3    | 5   |
#         +------------+------+-----+
#Autoboot |GPCLK0.     | 4    | 7   |
#         +------------+------+-----+
#GND      |GND         |      | 9   |
#         +------------+------+-----+
#DHT22    |CE1_1       |17    |11   |
#         +------------+------+-----+

lautet der Aufruf

sudo python AdafruitDHT.py 2302 17

 

Ein Python-Programm erstellen für: Luftfeuchte messen mit dem DHT22

Schritt 1: Erstellen Sie in Ihrem Verzeichnis pi die Datei für den Quelltext mit dem Editor nano:

nano dht22.py

Schritt 2: Fügen Sie den folgenden Quellcode in die Datei ein.

#!/usr/bin/python
import Adafruit_DHT
# Messdaten holen
# (22 steht fuer die Sensornummer
# und die 20 fuer die GPIO Nummer)
luftfeuchtigkeit, temperatur = Adafruit_DHT.read_retry(22, 20)
#Messdaten ausgeben und auf eine Stellenrunden
print "Luftfeuchtigkeit ", luftfeuchtigkeit, "%"
print "Temperatur ", temperatur, " Grad"

Der Aufruf Adafruit_DHT.read_retry(22, 20) erwartet die Sensornummer 22. Statt der 20 für die GPIO-Nummer geben Sie je nach Ihrer Verkabelung Ihre GPIO-Nummer an, im Falle des Nistkastensensors 13.

Schritt 3: Geben Sie dem Programm Ausführungsrechte mit

sudo chmod 777 dht22.py

Schritt 4: Testen Sie Ihr Script mit

./dht22.py

Der Sensor ist nicht schnell. Die Messung kann ein paar Sekunden dauern. Als Ausgabe sollte Sie sehen

Luftfeuchtigkeit  91.5999984741 %

Temperatur  20.7999992371  Grad

Glückwunsch. Wenn Sie bis hier gekommen sind, haben Sie die vierte Mission geschafft.

Erweiterung: Daten runden und in Datei speichern

Diesen Teil des Workshops probieren Sie dann aus, wenn Sie die Daten weiter verwenden wollen. Das kann z.B. das Hochladen auf einen Webservice oder Nutzung einer Cloud-Lösung wie Dropbox sein. Oder aber Sie wollen, wie im Beispiel des Nistkastens, die Werte in die Bildaufnahme mit einbinden.

Erweitern Sie den Quelltext in dht22.py wie folgt:

#!/usr/bin/python

# -*- coding: utf-8 -*-

# Import für den Sensor

import Adafruit_DHT

# Import für Zeitfunktionen

import time

from time import sleep

# Import für Dateioperationen

import os

# Messdaten holen

# 22 steht für die Sensornummer

# und die 13 für die GPIO Nummer

# zweimal vor-lesen, da erste Messung unzuverlässig

print "Erstes Lesen DHT22"

luftfeuchtigkeit, temperatur = Adafruit_DHT.read_retry(22, 13)

time.sleep(1)

print "Zweites Lesen DHT22"

luftfeuchtigkeit, temperatur = Adafruit_DHT.read_retry(22, 13)

time.sleep(1)

print "Drittes Lesen DHT22"

luftfeuchtigkeit, temperatur = Adafruit_DHT.read_retry(22, 13)

# Messdaten auf eine Stellen runden und ausgeben

print "Runden"

hum=str(round(luftfeuchtigkeit,1))

temp=str(round(temperatur,1))

print "Gemessene Werte:"

print "Luftfeuchtigkeit",hum , "%"

print "Temperatur",temp , "°C"

# Daten in String zusammenstellen

zeit = time.strftime("%y%m%d%-H%M%S")

datei = open('dht22.txt','w')

ausgabe = zeit+';'+temp+';'+hum

print "In Datei:",ausgabe

datei.write(ausgabe)

datei.close

print "Beendet"

 

externe Quellen

GIT installieren https://linuxize.com/post/how-to-install-git-on-raspberry-pi/

Teile diesen Beitrag.

2 Gedanken zu „RaspiLab Wetterstation vierte Mission Luftfeuchte messen mit dem DHT22 und dem Raspberry Pi

  1. Andy W. Antworten

    Hallo, der Beitrag ist sehr gut. Jedoch habe ich ein Problem nach dem Ausführen des Testskripts:
    sudo python AdafruitDHT.py 2302 22

    Egal welche GPIO Nummer ich angebe erhalte ich immer einen Fehler:
    ….
    Anscheinend fehlt ein Treiber. Ich habe schon mehrere Möglichkeiten probiert. Jedoch bekomme ich diesen nicht installiert und der Fehler bleibt weiterhin bestehen.
    Kann mir jemand helfen? Vielen Dank.

    • Claus Brell Autor des Beitrags

      Leider ist die Ansprache des DHT22 nicht einfach. Mit der Raspberry Lösung kann ich mich erst wieder auseinandersetzen, wenn die Geräte zu brauchbaren Preisen verfügbar sind. Bis dahin arbeite ich mit ESP8266 und ESP32. Da gefühlt „alle“ den DHT verwenden wollen, kann es nur eine Frage der Zeit sein, bis die Community wieder eine Lösung bereit stellt.

Schreibe einen Kommentar

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