Raspberry Pi DHT22 Temperatur Sensor

Aus Laub-Home.de Wiki
Zur Navigation springen Zur Suche springen

Um an den Raspberry Pi (hier Version 4B) einen Temeperatur und Luftfeuchtigkeitssensor anzuschließen habe ich mich für den Sensor DHT22 entschieden und diesen auch gleich fertig mit Widerstand auf einer Platine samt Kabel gekauft. Das Ganze ist von AZDelivery (DHT22 AM2302). Hier der Link zum Produkt:


Anschluß des Sensors am GPIO

hier die Belegung des GPIO Boards direkt von https://www.raspberrypi.org/documentation/usage/gpio/

GPIO-Pinout-Diagram-2.png

Unser AZDelivery DHT22 AM2302 hat drei Anschlüsse + out -, wir schließen nun folgendes zusammen:

Verkabelung
Raspberry Pi GPIO Pin DHT22 AM2302 Pin
1 +
7 (GPIO4) out
9 -

Auslesen der Daten des Sensors

Für das Auslesen der Daten gibt es einige verschiedene Lösungen. Unter anderem die beiden folgenden:

Adafruit CircuitPython Libraries

Das auslesen via Python Script kann mittels der Circuit Python Libraries vollzogen werden, hierfür müssen zuerst einige System Abhängigkeiten installiert und konfiguriert werden:

apt-get install python3 python3-pip libgpiod2 -y
pip3 install RPI.GPIO
pip3 install adafruit-blinka
pip3 install adafruit-circuitpython-dht

Nun müssen in raspi-config l2C und SPI aktiviert werden:

raspi-config

Unter Interface Options können beide aktiviert werden. ein erster Test kann dann so gemacht werden:

ls /dev/i2c* /dev/spi*

Ausgabe dann in etwa so:

/dev/i2c-1  /dev/spidev0.0  /dev/spidev0.1

nun können wir ein Python Script anlegen, welches uns den Sensor ausliest:


/usr/local/sbin/dht22.py

#!/usr/bin/python3
import time
import board
import adafruit_dht

# Initial the dht device, with data pin connected to:
dhtDevice = adafruit_dht.DHT22(board.D4)

def main():
    try:
        # Print the values to the serial port
        temperature_c = dhtDevice.temperature
        humidity = dhtDevice.humidity
        print(
            "Temp: {:.1f} C    Humidity: {}% ".format(
                temperature_c, humidity
            )
        )

    except RuntimeError as error:
        # Errors happen fairly often, DHT's are hard to read, just keep going
        time.sleep(2.0)
        # Print the values to the serial port
        temperature_c = dhtDevice.temperature
        humidity = dhtDevice.humidity
        print(
            "Temp: {:.1f} C    Humidity: {}% ".format(
                temperature_c, humidity
            )
        )
 
    #time.sleep(1.0)


if __name__=="__main__":
   main()

dem Script geben wir das execute Recht.

chmod +x /usr/local/sbin/dht22.py

die Ausführung dann einfach:

dht22.py

Die Ausgabe sollte dann so aussehen:

Temp: 24.6 C    Humidity: 65.2% 


Adafruit Python Script -- Deprecated

Verbindet euch via root User auf den Pi und dann einfach folgende Befehle ausführen

apt update
apt install build-essential python-dev python-openssl git-core
cd /opt/
git clone https://github.com/adafruit/Adafruit_Python_DHT.git
cd Adafruit_Python_DHT
python setup.py install

Nun kann man einen ersten Test wagen:

./examples/AdafruitDHT.py 22 4

die Ausgabe sieht dann in etwa so aus:

Temp=23.8*  Humidity=49.9%

pigpiod und python Script

Falls pgpiod nicht installiert ist, einfach nachinstallieren:

apt install pigpiod python-pigpio python3-pigpio

nun brauchen wir noch ein Python Script um die Daten auszulesen

cd /usr/local/sbin
wget https://github.com/joan2937/pigpio/raw/master/EXAMPLES/Python/DHT22_AM2302_SENSOR/DHT22.py
chmod +x DHT22.py

nun müssen wir im Script noch den PIN ändern, an dem wir den DATA Source des Sensors angeschlossen haben. Bei uns der GPIO mit der ID 2: DHT22.py:

...

   # Intervals of about 2 seconds or less will eventually hang the DHT22.
   INTERVAL = 3

   pi = pigpio.pi()

   s = DHT22.sensor(pi, 4, LED=16, power=8)

   r = 0

   next_reading = time.time()
   
...

s = DHT22.sensor(pi, 2, LED=16, power=8) diese Zeile muss abgeändert werden. Nun können wir einen ersten Test starten:

DHT22.py

Die Ausgabe sieht dann so aus:

1 50.1 23.7 0.20 0 0 0 0
2 51.8 23.7 0.20 0 0 0 0
3 51.8 23.6 0.20 0 0 0 0
4 51.9 23.6 0.20 0 0 0 0
5 51.9 23.6 0.20 0 0 0 0
6 51.9 23.6 0.20 0 0 0 0
7 51.9 23.6 0.20 0 0 0 0
8 52.0 23.6 0.20 0 0 0 0
9 52.3 23.6 0.20 0 0 0 0
10 51.9 23.6 0.20 0 0 0 0
11 52.0 23.6 0.20 0 0 0 0
12 52.1 23.6 0.20 0 0 0 0
13 51.9 23.6 0.20 0 0 0 0
14 51.9 23.6 0.20 0 0 0 0

Das Programm führt kontinuierlich eine Messung durch und muss via CTRL + C beendet werden. Der Zweite Wert ist die Luftfeuchtigkeit und der Dritte die Temperatur.


Quellen