Raspberry Pi: Luftfeuchtigkeit und Temperatur messen
Mit dem Raspberry Pi und einigen Sensoren ist es ohne viel Aufwand die Temperatur zu messen. Daneben kann aber auch die Luftfeuchtigkeit in gewissen Situationen oder Projekten (z.B. einer Wetterstation) aufschlussreich sein. Sensoren wie der DHT11 bzw. DHT22 sind nicht nur für wenige Euros zu haben, sondern können neben der Luftfeuchte auch noch die Tempratur messen.
Zubehör
Da die Sensoren bereits (fast) alles mit sich tragen ist außer einem Widerstand nicht viel weiteres Zubehör nötig. Dieses habe ich verwendet:
Den Unterschied zwischen DHT11 und DHT22 kannst du hier nachlesen. Demzufolge ist der DHT11 (blau) zwar günstiger, dafür der DHT22 (weiß) präziser und überdauert länger. Für Anwendungen in „extremen“ Gebieten (0-20% bzw. 80-100% Luftfeuchte) sollte auf den DHT22 zurückgegriffen werden, da er diese Bereiche im Gegensatz zum DHT11 auch unterstützt. Ich habe bspw. in meinem Kühlschrank einen DHT22 Sensor, um Temperatur und Luftfeuchtigkeit zu messen und zu loggen. In der Regel sollte das 11er Modell aber auch genügen.
Aufbau
Der Aufbau ist für DHT11 bzw. DHT22 identisch, da die Pins gleich vergeben sind.
Raspberry Pi Luftfeuchtigkeit Software installieren und Testen
Zunächst einmal müssen einige Pakete installiert werden:
sudo apt-get update sudo apt-get install build-essential python-dev python-openssl git
Nun kann die Bibliothek für die Sensoren geladen werden. Ich verwende hierfür eine vorgefertigte Bibliothek von Adafruit, welche verschiedene Sensoren unterstützt
sudo pip3 install adafruit-circuitpython-dht sudo apt-get install libgpiod2
Dann erstellen wir eine neue Datei mit unserem Code:
sudo nano dht_example.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
import time import board import adafruit_dht # Initial the dht device, with data pin connected to: # dhtDevice = adafruit_dht.DHT22(board.D4) # you can pass DHT22 use_pulseio=False if you wouldn't like to use pulseio. # This may be necessary on a Linux single board computer like the Raspberry Pi, # but it will not work in CircuitPython. dhtDevice = adafruit_dht.DHT22(board.D4, use_pulseio=False) while True: try: # Print the values to the serial port temperature_c = dhtDevice.temperature temperature_f = temperature_c * (9 / 5) + 32 humidity = dhtDevice.humidity print( "Temp: {:.1f} F / {:.1f} C Humidity: {}% ".format( temperature_f, temperature_c, humidity ) ) except RuntimeError as error: # Errors happen fairly often, DHT's are hard to read, just keep going print(error.args[0]) time.sleep(2.0) continue except Exception as error: dhtDevice.exit() raise error time.sleep(2.0) |
Beachte dabei, dass du adafruit_dht.DHT22
mit adafruit_dht.DHT11
ersetzt, falls du einen DHT11 Temperatursensor verwendest.
Die Datei speichern wir mittels STRG + O und beenden den Editor mit STRG + X. Anschließend führen wir unseren Code aus:
sudo python dht_example.py
Frühere Version
Daneben gibt es ein weiteres Repository von Adafruit, welches aber inzwischen nicht mehr verwendet werden sollte. Der Vollständigkeit halber zeige ich es hier dennoch an (du kannst diesen Teil überspringen, sofern davor alles funktioniert hat):
git clone https://github.com/adafruit/Adafruit_Python_DHT.git && cd Adafruit_Python_DHT sudo python setup.py install
Dadurch wird eine Python Bibliothek angelegt, die wir einfach in unsere Projekte einbinden können.
Hat alles geklappt können wir bereits die Temperatur und Luftfeuchtigkeit auslesen. Am Einfachsten ist das erst einmal mit den Demofiles:
cd examples sudo ./AdafruitDHT.py 11 4
Der erste Parameter (11) gibt an, welcher Sensor benutzt wurde (22 für den DHT22) und der zweite, an welchem GPIO er angeschlossen ist (Nicht die Pin Nummer, sondern die GPIO Nummer). Das erzeugt eine Ausgabe wie folgende:
$ sudo ./AdafruitDHT.py 11 4 Temp=24.0* Humidity=41.0%
Achtung: Die Sensoren sind nur alle zwei Sekunden bereit. Achte also darauf nicht direkt jede Sekunde eine Abfrage zu starten.
Um die Raspberry Pi Luftfeuchtigkeit Bibliothek in andere (Python) Projekte einzubinden, braucht man nur folgendes:
1 2 3 4 5 6 |
import Adafruit_DHT ... sensor = Adafruit_DHT.DHT11 pin = 4 humidity, temperature = Adafruit_DHT.read_retry(sensor, pin) ... |
Daten dauerhaft loggen
Für Wetterstationen und ähnliche Projekte zur Überwachung der Temperatur und Luftfeuchtigkeit bietet es sich an diese Werte in regelmäßigen Zeitintervallen zu speichern um diese dann später analysieren zu können. Eine Möglichkeit wäre das Speichern in lokaler Datenbank, allerdings hat das den Nachteil, dass unter Umständen die SD-Karte zu sehr belastet werden könnte.
Daher habe ich eine andere Methode gewählt, welche die Daten auf einem externen Server speichert. Dieser Service ist bei normaler Nutzung kostenlos und es können sehr einfach Daten gespeichert werden, wie hier zu sehen ist:
Das komplette Tutorial dazu findest du hier:
Raspberry Pi Sensordaten mit ThingSpeak loggen und auswerten
Komme bis CD examples.
Gebe ich: sudo ./AdafruitDHT.py 11 4 ein,
folgt die Meldung Failed to get reading. Try again. Verkabelung habe ich gemäß Bild vorgenommen.
Widerstand müsste auch der richtige sein.
Woran kann es liegen. Bis CD examples lief alles richtig. Habe den Raspberry Pi 2 Modell B
hast du auch den blauen DHT11 Sensor?
Du kannst mal einen anderen GPIO Pin versuchen. Evtl arbeitet auch der Sensor nicht richtig, falls du sicher bist alles richtig verbunden zu haben.
LG Felix
Mir geht’s genau so
Dieses Problem hatte ich auch wo ich mehrere Senoren probiert hatte, das Problem liegt an der Stromversorgung.
Könnte auch am Widerstand liegen. Ich habe jetzt einen 470er drin. Seitdem funktioniert es.
Hallo zusammen
Ich habe den Raspberry erst seit zwei Tagen. Deshalb bin ich auch noch ein Anfänger.
Ich habe das Problem, dass ich an der ersten Zeile schon scheitere: sudo apt-get update
Da kommt immer der Fehler SyntaxError: invalid syntax und markiert ist das Wort apt.
Kann mir jemand helfen?
Ich habe einen Fehler gemacht nun klappte es mit dem Update. Nun habe ich ein weiteres Problem: bis hier hat alles wunderbar geklappt: sudo ./AdafruitDHT.py 11 4
Ich erhalte sogar zwei Werte: Temp=1.0* Humidity=2.0%. Aber es ist bei mir im Raum weder so Kalt noch so trocken. Manchmal erhalte ich auch T=0.0* und 3.0% Feuchte. Weiss jemand was das Problem sein könnte?
Hallo Pascal dein Problem ist ganz einfach dein Rasperry benötigt eine Internetverbindung und da du diese nicht aufweisen kannst kann dein Rasperry dieses Package nicht herunterladen!
Mit freundlichen Grüßen
Dagmar Sieverding
Habe die gleiche Fehlermeldung erhalten. Lag aber an mir, hatte den falschen GPIO gewählt.
Am Pi2 ist GPIO4 Pin 5
Sorry Irrtum GPIO 4 ist Pin 7
Hi
ich wollte dein Tut probieren scheitere aber beim installieren des python.
Ich bekomm nach
„sudo python setup.py install“ angezeigt :
running build_ext
building ‚Adafruit_DHT.Raspberry_Pi_2_Driver‘ extension
gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototy pes -fPIC -I/usr/include/python2.7 -c source/_Raspberry_Pi_2_Driver.c -o build/t emp.linux-armv7l-2.7/source/_Raspberry_Pi_2_Driver.o -std=gnu99
unable to execute gcc: No such file or directory
error: command ‚gcc‘ failed with exit status 1
System auf dem Pi ist Wheezy.
Danke für hilfe 🙂
Grüße
Dir fehlt der C Kompiler 😉
Hi,
danke für deine schnelle Antwort.
Leider kommt :
„pi@raspberrypi ~ $ sudo apt-get gcc python-dev
E: Invalid operation gcc “
ich habe auch bereits versucht die entwickler tools zu installieren. Die sind drauf da sollte doch eigentlich alle C Kompiler dabei sein ?
noch ne idee was ich machen kann ?
Danke und Grüße
Deine Packages und Pfade sind auch aktuell?
Du knall kopf. sudo apt-get INSTALL …….. usw. Dein fehlendes Wort ist der install Parameter 😀 Aber is mir damals auch oft passiert