Raspberry PI Tutorial #4: DHT11 Sensor ansteuern (Teil1)

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. 

Raspberry PI mit DHT11 Sensor
Raspberry PI mit DHT11 Sensor

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, 20cm

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.

Raspberry PI - T-Cobbler für ein Breadboard
Raspberry PI – T-Cobbler für ein Breadboard

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

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. 

DHT11 Sensor Pinout
DHT11 Sensor Pinout

Der Pin „NC“ ist nicht belegt und wird in der Schaltung nicht verwendet.

Aufbau & Schaltung

Aufbau

Aufbau der Schaltung - Raspberry PI mit DHT11 Sensor
Aufbau der Schaltung – Raspberry PI mit DHT11 Sensor

Schaltung

Da nicht jeder sich ein T-Cobbler besorgt zeige ich die Schaltung wie diese ohne so ein Modul aufgebaut würde.

Schaltung - Raspberry PI Model B mit DHT11 Sensor
Schaltung – Raspberry PI Model B mit DHT11 Sensor

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.

Raspberry PI - installieren und aktualieren von PIP3
Raspberry PI – installieren und aktualieren von PIP3

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
Raspberry PI - installieren der Adafruit DHT Bibliothekt mit pip3
Raspberry PI – installieren der Adafruit DHT Bibliothekt mit pip3

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.

Raspberry PI - herunterladen der Sourcen der Adafruit DHT Bibliothek mit "git clone"
Raspberry PI – herunterladen der Sourcen der Adafruit DHT Bibliothek mit „git clone“

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.

Raspberry PI - Ausgabe der Werte des DHT11 Sensors auf der Kommandozeile
Raspberry PI – Ausgabe der Werte des DHT11 Sensors auf der Kommandozeile

Download

Hier nun das fertige Pythonskript zum download.

 

Ein Gedanke zu „Raspberry PI Tutorial #4: DHT11 Sensor ansteuern (Teil1)

Schreibe einen Kommentar

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