In diesem Tutorial möchte ich beschreiben wie du den Sensor DHT11 am Raspberry PI mit Python programmierst und somit die aktuellen Werte für die Temperatur und die Luftfeuchtigkeit erhältst.
Dieses ist der erste Teil zum DHT11 Sensor am Raspberry Pi, zunächst wollen wir “nur” die Werte auf der Konsole / dem Terminal ausgeben.
Technische Daten des DHT11 Sensors
- Messbereich der relativen Luftfeuchtigkeit 20 % bis 90 %
- Toleranz des Messbereiches für die relative Luftfeuchtigkeit ±5 %
- Messbereich der Temperatur 0 bis 60 °C
- Toleranz des Messbereiches für die Temperatur ±2 °C
- Betriebsspannung 3.3V bis 5V
Wenn die Messgenauigkeit zu grob ist, kann auf zu einem DHT22 Sensor gegriffen werden, dieser wird genauso wie der DHT11 Sensor angesteuert, jedoch hat dieser einen deutlich besseren Messbereich / eine bessere Toleranz. Beide Sensoren habe ich mir bereits einmal genauer im Tutorial Arduino Lektion 29: DHT22 Sensor angeschaut.
Bezug der benötigten Komponenten für dieses Tutorial
Für den nachbau von diesem Tutorial benötigst du folgende elektronische Bauteile:
- 1x Raspberry Pi,
- 1x DHT11 Sensor,
- 1x 10 kOhm Widerstand,
- 1x Breadboard, 400 Pin,
- 3x Breadboardkabel, männlich – weiblich, 20 cm
T-Cobbler für das Breadboard
Ich habe mir für den Raspberry PI ein T-Cobbler für zbsp. ein 400 Pin Breadboard über ebay.de besorgt. Je nachdem welches Raspberry PI Modell man hat benötigt man ein 40 Pin oder 20 Pin T-Cobbler.
Bezug
Wie bereits erwähnt bekommt man den T-Cobbler bei ebay.de und natürlich auch bei amazon.de.
Modell | Shop | Preis |
---|---|---|
40 Pin für Raspberry PI ab Vers. 2 | ebay.de* | ab 4,20 € inkl. Versandkosten |
amazon.de* | ab 2,73 € inkl. Versandkosten |
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!
Für das Model 1 des Raspberry Pi wird ein 20 Pin T-Cobbler benötigt, leider konnte ich zum Zeitpunkt der Erstellung des Tutorials keines finden.
Aufbau des DHT11 Sensors
Der DHT11 Sensor (und auch der DHT22) verfügt über 4 Pins welche wie folgt belegt sind.
Der Pin “NC” ist nicht belegt und wird in der Schaltung nicht verwendet.
Aufbau & Schaltung
Aufbau
Schaltung
Da nicht jeder sich ein T-Cobbler besorgt, zeige ich die Schaltung wie diese ohne so ein Modul aufgebaut würde.
Programmierung
Wie bereits in den Tutorials zuvor und im Beitrag Raspberry PI Kit #1: Smart Plant Kit “Schlaue Pflanze” gezeigt, verwende ich die Skriptsprache Python.
Vorbereitung
Für den Quellcode sowie die später installierte Bibliothek erstelle ich mit dem Befehl
mkdir dht11
ein Verzeichnis im “home” des Benutzers “pi”.
Als Nächstes wird nun mit dem Befehl
cd dht11
in das erstelle Verzeichnis gewechselt.
aktualisieren der Pakete aus der Sourcelist
Damit wir sichergehen können, das unser System aktuell ist starten wir kurz ein Update mit dem Befehl
sudo apt-get update
Installieren von Python3-PIP
Für das spätere installieren der Bibliothek benötigen wir das Tool “python3 pip” dieses wird mit dem Befehl
sudo apt-get install python3-pip
installiert.
Danach werden noch einige zusätzliche Pakete mit dem Befehl
sudo python3 -m pip install --upgrade pip setuptools wheel
installiert.
benötigte Bibliothek installieren
Es gibt nun zwei Möglichkeiten wie die benötigte Adafruit Bibliothek installiert werden kann, einmal mit dem Befehl “pip3” und einmal läd man sich eine Kopie der Sourcen auf den Raspberry und installiert diese.
Installieren der Bibliothek mit pip3
Der wohl einfachste weg ist die Installation mit “pip3”.
sudo pip3 install Adafruit_DHT
Herunterladen aus dem Repository und Installieren
Möchte man sich die Sourcen und die zusätzlichen Beispiele herunterladen so benötigt man “git” dieses ist beim RaspianLinux bereits installiert so dass, man einfach nur den Befehl
git clone https://github.com/adafruit/Adafruit_Python_DHT.git
auf der Kommandozeile eingeben und mit Enter bestätigen muss.
Es wird nun eine Verbindung zum Git Repository aufgebaut und eine Kopie in den aktuellen Ordner abgelegt.
Quellcode
Den nachfolgenden Quellcode habe ich den Beispielen entnommen welcher der Adafruit DHT Bibliothek beiliegen.
import Adafruit_DHT sensor = Adafruit_DHT.DHT11 pin = 4 humidity, temperature = Adafruit_DHT.read_retry(sensor, pin) if humidity is not None and temperature is not None: print('Temperatur={0:0.1f}*C Luftfeuchtigkeit={1:0.1f}%'.format(temperature, humidity)) else: print('Fehler beim empfangen der Daten. Bitte versuche es erneut!')
Was machen wir im Quellcode?
Zeile 1 – import Adafruit_DHT
Mit dieser Zeile importieren wir die zuvor installierte Adafruit DHT Bibliothek.
Zeile 2 – sensor = Adafruit_DHT.DHT11
Um den Sensor auszuwerten, müssen wir zunächst eine Instanz von dem Objekt erzeugen.
Wenn man einen DHT22 oder AM2302 Sensor hat muss man dieses Objekt mit der entsprechenden Konstante erzeugen.
DHT11 – Adafruit_DHT.DHT11
DHT22 – Adafruit_DHT.DHT22
AM2302 – Adafruit_DHT.AM2302
Zeile 3 – pin = 4
Ich habe den Sensor am GPIO Pin 4 angeschlossen. Somit weise ich der Variable “pin” den Wert 4 zu.
Wenn du einen anderen GPIO Pin verwendest dann muss du hier den Wert anpassen.
Zeile 4 – humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)
In Python können wir bequem mehrere Werte von einer Funktion empfangen. Der Funktion “read_retry” wird eine Instanz des Sensors sowie die Pin Bezeichnung übergeben.
Zeile 5 – if humidity is not None and temperature is not None:
Wenn die Variablen “humidity” und “temperature” NICHT den Wert “None” hat dann.
Der Wert “None” ist ein DatenTyp welcher den Zustand “null” repräsentiert, d.h. der Wert ist nicht also nicht “0”.
Zeile 6 – print(‘Temperatur={0:0.1f}*C Luftfeuchtigkeit={1:0.1f}%’.format(temperature, humidity))
Wenn Werte empfangen wurden dann werden diese Formatiert auf der Kommandozeile ausgegeben.
Zeile 7 – else:
Wenn keine Daten empfangen wurden, also wenn eine der Variablen “humiduty” und / oder “temperature” den Wert “None” hat dann…
Zeile 8 – print(‘Fehler beim empfangen der Daten. Bitte versuche es erneut!’)
Ausgabe einer Fehlermeldung auf der Kommandozeile.
Ausgabe auf der Kommandozeile
Wir können nun das Skript mit dem Befehl
sudo python3 dht11_test.py
starten und erhalten nachfolgende Ausgabe.
Download
Hier nun das fertige Pythonskript zum download.