Bis jetzt hast du schon LEDs zum Leuchten gebracht, Schleifen mit Programmcode gebunden, Daten in Variablen gespeichert und dir somit schon einen Katzen-Smiley verdient. Wir wollten hier noch einmal anmerken, wie cool du bist und wie viel praktische und tolle Dinge du schon gelernt hast. In der Zeit, in der du dieses Buch höchst konzentriert durch gearbeitet hast, hat dein Kopf bestimmt ein wenig begonnen zu dampfen. Das Resultat eines dampfenden Kopfes ist eine erhöhte Umgebungstemperatur. Diese Umgebungstemperatur wirst du im folgenden Kapitel zu messen lernen, damit du rechtzeitig Pause machen kannst, bevor es zu warm wird.
DHT11 – Luftfeuchtigkeit und Temperatur messen
Da nicht jeder Mensch mit seinem Raspberry Pi die Temperatur messen möchte, ist die Bibliothek und die benötigte Software leider nicht vorinstalliert. Du musst diese Bibliothek also selber aus dem Internet laden. Wenn dein Pi schon eine Internetverbindung hat, dann mach hier einfach weiter. Wenn dein Pi noch keine Internetverbindung hat, kannst du den Pi einfach über ein LAN-Kabel an den Router ins Netz bringen. Mehr wie immer online!
sudo apt update
Mit den apt Befehlen verwalten wir die Programme, welche auf unserem Computer oder Raspberry Pi installiert sind. Speziell bei diesen Quellen werden die Softwarequellen aktualisiert, damit wir auch immer nur die neusten Programme installieren.
sudo apt install python3-dev
Hiermit installieren wir jetzt das Programm, das wir brauchen. Was es wirklich kann, zeigt sich gleich.
Und mit folgendem Befehl lädst du dir die Bibliothek herunter:
git clone https://github.com/coding-world/DHT11_Python
Das besondere ist dabei, dass die Bibliothek in den Ordner DHT11_Python runtergeladen wird und deinem Computer noch nicht bekannt ist. Deswegen müssen wir erst einmal in den Ordner der Bibliothek wechseln.
cd Python_DHT
Dann installieren wir die Bibliothek auf dem Raspberry Pi:
sudo python3 setup.py install
Jetzt können sie jetzt auch mit import
in unserem Programm benutzen. In der nächsten Einheit werden wir dann den Sensor anschließen.
Schließe zunächst, wie immer, alles richtig an den Pi an. Die Vorderseite des DHT11 erkennst du an dem Gitter.
Anschließen
Anschlüsse am Pi | Anschlüsse am DHT |
3,3V | 1. Pin DHT |
GPIO4 | 2. Pin DHT |
Widerstand 4,7kOhm | Zwischen 1. Pin DHt und 2. Pin DHT |
GND (Ground) | 4. Pin DHT |
Zwischen dem 1. und 2. Pin am DHT musst du noch einen Widerstand anschließen. Das dient nicht nur zur Stromversorgung des Sensors, sondern auch dazu, dass dieser Messwerte liefern kann, die akkurater sind. Am besten eignet sich dafür der Widerstand mit 4,7kOhm. Widerstände erkennst du an ihrem aufgemalten Farbcode. Beim 4,7kOhm lautet dieser: Gelb, Lila, Schwarz, Braun und Gold.
Bitte achte genau darauf, den Sensor in dieser Reihenfolge anzuschließen! Wenn du den 3,3V und den GND Pin verwechselst, kommt es zu einem Kurzschluss und der Sensor kann dadurch kaputt gehen und sehr sehr warm werden. Achte darauf! Solltest du bemerken, dass der Sensor unnnormal warm wird oder sich sogar das Plastik verbiegt, schalte sofort deinen Raspberry Pi aus oder entferne die Verbindung zwischen dem Breadboard und dem Sensor!
Wie dir hoffentlich aufgefallen ist, benutzen wir nicht den 3. Pin am DHT Sensor. Diesen kannst du sonst benutzen, um die Daten analog auszulesen.
Jetzt, da alles richtig angeschlossen und installiert ist, können wir uns endlich in der nächsten Einheit daran machen, die Daten auszulesen.
Nun ist alles fertig eingerichtet und du kannst mit dem Programmieren anfangen. Wie immer einfach eine neue Datei anlegen und los:
nano dht11_einfach.py
Das unbeschriebene Blatt mit Code füllen…
import RPi.GPIO as GPIO
import dht11
GPIO.setmode(GPIO.BCM)
sensor = dht11.DHT11(pin=4)
indoor = sensor.read()
if indoor.is_valid():
print("Temperatur: " + str(indoor.temperature))
print("Luftfeuchtigkeit: " + str(indoor.humidity))
GPIO.cleanup()
Am Anfang binden wir wie immer die benötigten Bibliotheken ein. In Zeile 4 setzen wir das Pinout der library auf BCM (das entspricht der GPIO Nummerrierung). In Zeile 5 sagen wir der library dann welchen GPIO-Pin wir für den Senesor nutzen möchten (4). In Zeile 7 werden die Senesorwerte ausgelesen, welche wir als Objekt erhalten und dieses in der Variable indoor
speichern.
Danach geben wir wie gewohnt alle Informationen in der Konsole aus.
Das Script kannst du so ausführen:
python3 dht11_einfach.py
Jetzt bist du dran: Kriegst du es hin, dass ab einer bestimmten Temperatur, z.B. 25°C, eine LED anfängt zu leuchten? Tipp: Mit einem Atemhauch lässt sich die Temperatur erhöhen und logische Operatoren sind bestimmt auch nicht verkehrt.
Hier steht nichts zu auftretenden Fehlern.
Ich habe hier das Problem, dass der Code nicht funktioniert.
Wenn ich „python3 dht11_einfach.py“ aufrufe (ob als normaler Benutzer oder root), bleibt das ganze Miniprojekt schon stecken letztlich mit der folgenden Fehlermeldung:
NameError: name ‚result‘ is not defined
Was fehlt oder wo liegt _mein_(?) Denkfehler?
(Und wie kommt Ihr auf PIN17 (und warum nicht 7?)
Hallo Sven, da ist uns bei der Dokumentation ein kleiner Fehler unterlaufen. Der Variablen-Name in Zeile 8 muss natürlich `indoor` heißen, da wir ja auch in Zeile 7 die Messdaten in dieser Variable speichern. Wir haben den Artikel darufhingehend angepasst.