- Übersicht über den DHT11-Sensor:
- Voraussetzungen:
- Installieren der Adafruit LCD-Bibliothek auf Raspberry Pi:
- Installieren der Adafruit DHT11-Bibliothek auf Raspberry Pi:
- Schaltplan:
- Python-Programmierung für DHT11-Sensor:
- Messung von Luftfeuchtigkeit und Temperatur mit Raspberry Pi:
Temperatur und Luftfeuchtigkeit sind die häufigsten Parameter, die in jeder Umgebung überwacht werden. Für die Messung von Temperatur und Luftfeuchtigkeit stehen unzählige Sensoren zur Auswahl. Am häufigsten wird jedoch der DHT11 verwendet, da er einen angemessenen Messbereich und eine gute Genauigkeit aufweist. Es funktioniert auch mit einpoliger Kommunikation und ist daher sehr einfach mit Mikrocontrollern oder Mikroprozessoren zu verbinden. In diesem Tutorial lernen wir , wie Sie den beliebten DHT11-Sensor mit Raspberry Pi verbinden und den Wert von Temperatur und Luftfeuchtigkeit auf einem 16x2-LCD-Bildschirm anzeigen. Wir haben es bereits verwendet, um die IoT Raspberry Pi Weather Station zu bauen.
Übersicht über den DHT11-Sensor:
Der DHT11-Sensor kann die relative Luftfeuchtigkeit und Temperatur mit den folgenden Spezifikationen messen
Temperaturbereich: 0-50 ° C Temperaturgenauigkeit: ± 2 ° C Feuchtigkeitsbereich: 20-90% rF Feuchtigkeitsgenauigkeit: ± 5%
Der DHT11-Sensor ist entweder in Modulform oder in Sensorform erhältlich. In diesem Tutorial verwenden wir die Modulform des Sensors. Der einzige Unterschied zwischen beiden besteht darin, dass der Sensor in Modulform einen Filterkondensator und einen Pull-up-Widerstand hat, der am Ausgangsstift des Sensors angebracht ist. Wenn Sie also nur den Sensor verwenden, stellen Sie sicher, dass Sie diese beiden Komponenten hinzufügen. Lernen Sie auch die DHT11-Schnittstelle mit Arduino.
So funktioniert der DHT11-Sensor:
Der DHT11-Sensor wird mit einem blauen oder weißen Gehäuse geliefert. In diesem Gehäuse befinden sich zwei wichtige Komponenten, mit denen wir die relative Luftfeuchtigkeit und Temperatur erfassen können. Die erste Komponente ist ein Elektrodenpaar; Der elektrische Widerstand zwischen diesen beiden Elektroden wird durch ein feuchtigkeitsspeicherndes Substrat bestimmt. Der gemessene Widerstand ist also umgekehrt proportional zur relativen Luftfeuchtigkeit. Je höher die relative Luftfeuchtigkeit, desto niedriger der Widerstandswert und umgekehrt. Beachten Sie auch, dass sich die relative Luftfeuchtigkeit von der tatsächlichen Luftfeuchtigkeit unterscheidet. Die relative Luftfeuchtigkeit misst den Wassergehalt in der Luft im Verhältnis zur Lufttemperatur.
Die andere Komponente ist ein oberflächenmontierter NTC-Thermistor. Der Begriff NTC steht für Negativer Temperaturkoeffizient. Bei Temperaturerhöhung nimmt der Widerstandswert ab
Voraussetzungen:
Es wird davon ausgegangen, dass Ihr Raspberry Pi bereits mit einem Betriebssystem geflasht ist und eine Verbindung zum Internet herstellen kann. Wenn nicht, befolgen Sie das Tutorial Erste Schritte mit Raspberry Pi, bevor Sie fortfahren.
Es wird auch davon ausgegangen, dass Sie entweder über Terminalfenster oder über eine andere Anwendung, über die Sie Python-Programme schreiben und ausführen und das Terminalfenster verwenden können, Zugriff auf Ihr Pi haben.
Installieren der Adafruit LCD-Bibliothek auf Raspberry Pi:
Der Wert für Temperatur und Luftfeuchtigkeit wird auf einem 16 * 2-LCD-Display angezeigt. Adafruit bietet uns eine Bibliothek, mit der wir dieses LCD einfach im 4-Bit-Modus bedienen können. Fügen Sie es also unserem Raspberry Pi hinzu, indem Sie das Terminalfenster Pi öffnen und die folgenden Schritte ausführen.
Schritt 1: Installieren Sie git auf Ihrem Raspberry Pi, indem Sie die folgende Zeile verwenden. Mit Git können Sie alle Projektdateien auf Github klonen und auf Ihrem Raspberry Pi verwenden. Unsere Bibliothek befindet sich auf Github, daher müssen wir git installieren, um diese Bibliothek in pi herunterzuladen.
apt-get install git
Schritt 2: Die folgende Zeile verweist auf die GitHub-Seite, auf der sich die Bibliothek befindet. Führen Sie einfach die Zeile aus, um die Projektdatei im Pi-Ausgangsverzeichnis zu klonen
Git-Klon Git: //github.com/adafruit/Adafruit_Python_CharLCD
Schritt 3: Verwenden Sie den folgenden Befehl, um die Verzeichniszeile zu ändern und in die Projektdatei zu gelangen, die wir gerade heruntergeladen haben. Die Befehlszeile ist unten angegeben
cd Adafruit_Python_CharLCD
Schritt 4: Im Verzeichnis befindet sich eine Datei namens setup.py , die wir installieren müssen, um die Bibliothek zu installieren. Verwenden Sie den folgenden Code, um die Bibliothek zu installieren
sudo python setup.py installieren
Das heißt, die Bibliothek sollte erfolgreich installiert worden sein. Fahren wir nun in ähnlicher Weise mit der Installation der DHT-Bibliothek fort, die ebenfalls von Adafruit stammt.
Installieren der Adafruit DHT11-Bibliothek auf Raspberry Pi:
Der DHT11-Sensor arbeitet nach dem Prinzip eines Einleitersystems. Der Wert von Temperatur und Luftfeuchtigkeit wird vom Sensor erfasst und dann als serielle Daten über den Ausgangspin übertragen. Wir können diese Daten dann mithilfe des E / A-Pins einer MCU / MPU lesen. Um zu verstehen, wie diese Werte gelesen werden, müssten Sie das Datenblatt des DHT11-Sensors durchlesen. Um die Dinge einfach zu halten, verwenden wir zunächst eine Bibliothek, um mit dem DHT11-Sensor zu sprechen.
Die von Adafruit bereitgestellte DHT11-Bibliothek kann auch für DHT11-, DHT22- und andere Eindraht-Temperatursensoren verwendet werden. Das Verfahren zum Installieren der DHT11-Bibliothek ähnelt auch dem zum Installieren der LCD-Bibliothek. Die einzige Zeile, die sich ändern würde, ist der Link der GitHub-Seite, auf der die DHT-Bibliothek gespeichert ist.
Geben Sie die vier Befehlszeilen nacheinander auf dem Terminal ein, um die DHT-Bibliothek zu installieren
Git-Klon
cd Adafruit_Python_DHT sudo apt-get install build-essential python-dev sudo python setup.py install
Sobald dies erledigt ist, haben Sie beide Bibliotheken erfolgreich auf unserem Raspberry Pi installiert. Jetzt können wir mit der Hardwareverbindung fortfahren.
Schaltplan:
Das vollständige Schaltbild, das DH11 mit Raspberry pi verbindet, ist unten angegeben. Es wurde mit Fritzing erstellt. Folgen Sie den Verbindungen und machen Sie die Schaltung
Sowohl der LCD- als auch der DHT11-Sensor arbeiten mit einer + 5V-Versorgung, daher verwenden wir die 5V-Pins am Raspberry Pi, um beide mit Strom zu versorgen. Am Ausgangspin des DHT11-Sensors wird ein Pull-up-Widerstand mit dem Wert 1k verwendet. Wenn Sie ein Modul verwenden, können Sie diesen Widerstand vermeiden.
Ein Trimmer-Topf von 10k wird zum V-Pin des LCD hinzugefügt, um den Kontrastpegel des LCD zu steuern. Ansonsten sind alle Verbindungen ziemlich einfach. Notieren Sie sich jedoch, welche GPIO-Pins Sie zum Verbinden der Pins verwenden, da diese in unserem Programm benötigt werden. Die folgende Tabelle sollte es Ihnen ermöglichen, die GPIO-Pin-Nummern herauszufinden.
Verwenden Sie die Tabelle und stellen Sie Ihre Verbindungen gemäß dem Schaltplan her. Ich habe ein Steckbrett und Überbrückungskabel verwendet, um meine Verbindungen herzustellen. Da ich das DHT11-Modul verwendet habe, habe ich es direkt mit Raspberry Pi verbunden. Meine Hardware sah unten so aus
Python-Programmierung für DHT11-Sensor:
Wir müssen ein Programm schreiben, um den Wert von Temperatur und Luftfeuchtigkeit vom DHT11-Sensor zu lesen und ihn dann auf dem LCD anzuzeigen. Da wir Bibliotheken für LCD- und DHT11-Sensoren heruntergeladen haben, sollte der Code ziemlich einfach sein. Das vollständige Python-Programm finden Sie am Ende dieser Seite. Sie können jedoch weiterlesen, um zu verstehen, wie das Programm funktioniert.
Wir müssen die LCD-Bibliothek und die DHT11-Bibliothek in unser Programm importieren, um die damit verbundenen Funktionen nutzen zu können. Da wir sie bereits heruntergeladen und auf unserem Pi installiert haben, können wir sie einfach über die folgenden Zeilen importieren. Wir importieren auch die Zeitbibliothek, um die Verzögerungsfunktion zu verwenden.
Importzeit # Importzeit zum Erstellen einer Verzögerung Importieren von Adafruit_CharLCD als LCD # Importieren von LCD-Bibliotheken Importieren von Adafruit_DHT # Importieren von DHT-Bibliotheken für Sensoren
Als nächstes müssen wir angeben, an welche Pins der Sensor angeschlossen ist und welcher Typ von Temperatursensor verwendet wird. Die Variable sensor_name wird Adafruit_DHT.DHT11 zugewiesen, da wir hier den DHT11-Sensor verwenden. Der Ausgangspin des Sensors ist mit GPIO 17 des Raspberry Pi verbunden, und daher weisen wir der Variablen sensor_pin 17 zu, wie unten gezeigt.
sensor_name = Adafruit_DHT.DHT11 # Wir verwenden den DHT11-Sensor sensor_pin = 17 #Der Sensor ist an GPIO17 auf Pi angeschlossen
In ähnlicher Weise müssen wir auch definieren, an welche GPIO-Pins das LCD angeschlossen ist. Hier verwenden wir das LCD im 4-Bit-Modus, daher haben wir vier Datenpins und zwei Steuerpins, um sie mit den GPIO-Pins des Pi zu verbinden. Sie können den Hintergrundbeleuchtungs-Pin auch mit einem GPIO-Pin verbinden, wenn Sie auch die Hintergrundbeleuchtung steuern möchten. Aber im Moment benutze ich das nicht, also habe ich ihm 0 zugewiesen.
lcd_rs = 7 #RS des LCD ist mit GPIO 7 auf PI verbunden lcd_en = 8 #EN des LCD ist mit GPIO 8 auf PI verbunden lcd_d4 = 25 # D4 des LCD ist mit GPIO 25 auf PI verbunden lcd_d5 = 24 # D5 des LCD ist verbunden mit GPIO 24 auf PI lcd_d6 = 23 # D6 des LCD ist verbunden mit GPIO 23 auf PI lcd_d7 = 18 # D7 des LCD ist verbunden mit GPIO 18 auf PI lcd_backlight = 0 #LED ist nicht verbunden, daher weisen wir 0 zu
Sie können das LCD auch im 8-Bit-Modus mit Raspberry pi verbinden, aber dann werden die freien Pins reduziert.
Die von uns heruntergeladene LCD-Bibliothek von Adafruit kann für alle Arten charakteristischer LCD-Displays verwendet werden. Hier in unserem Projekt verwenden wir ein 16 * 2-LCD-Display, daher erwähnen wir die Anzahl der Zeilen und Spalten für eine Variable, wie unten gezeigt.
lcd_columns = 16 # für 16 * 2 LCD lcd_rows = 2 # für 16 * 2 LCD
Nachdem wir die LCD-Pins und die Anzahl der Zeilen und Spalten für das LCD deklariert haben, können wir die LCD-Anzeige mithilfe der folgenden Zeile initialisieren, die alle erforderlichen Informationen an die Bibliothek sendet.
lcd = LCD.Adafruit_CharLCD (lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6, lcd_d7, lcd_columns, lcd_rows, lcd_backlight) #Senden Sie alle Pin-Details an die Bibliothek
Um das Programm zu starten, zeigen wir mit der Funktion lcd.message () eine kleine Intro-Nachricht an und geben dann eine Verzögerung von 2 Sekunden an, um die Nachricht lesbar zu machen. Für den Druck auf der 2 nd Zeile den Befehl \ n können verwendet werden, wie unten gezeigt
lcd .message ('DHT11 mit Pi \ n -CircuitDigest') #Geben Sie eine Intro- Nachricht time.sleep (2) #Warten Sie 2 Sekunden lang
Schließlich sollten wir in unserer while- Schleife den Wert von Temperatur und Luftfeuchtigkeit vom Sensor ablesen und alle 2 Sekunden auf dem LCD-Bildschirm anzeigen. Das vollständige Programm innerhalb der while-Schleife ist unten dargestellt
während 1: # Endlosschleife
Luftfeuchtigkeit, Temperatur = Adafruit_DHT.read_retry (sensor_name, sensor_pin) #lesen Sie vom Sensor und speichern Sie die entsprechenden Werte in Temperatur- und Feuchtigkeitsvariablen
lcd.clear () #Löschen Sie den LCD-Bildschirm lcd.message ('Temp =%.1f C'% Temperatur) # Zeigen Sie den Wert der Temperatur an lcd.message ('\ nHum =%.1f %%'% Luftfeuchtigkeit) #Display Der Wert für Luftfeuchtigkeit time.sleep (2) #Warten Sie 2 Sekunden lang und aktualisieren Sie dann die Werte
Mit dieser einzelnen Zeile können wir den Wert von Temperatur und Luftfeuchtigkeit leicht vom Sensor abrufen. Wie Sie sehen können, werden zwei Werte zurückgegeben, die in der variablen Luftfeuchtigkeit und Temperatur gespeichert sind. Die Details sensor_name und sensor_pin werden als Parameter übergeben. Diese Werte wurden zu Beginn des Programms aktualisiert
Luftfeuchtigkeit, Temperatur = Adafruit_DHT.read_retry (sensor_name, sensor_pin)
Um einen Variablennamen auf dem LCD-Bildschirm anzuzeigen, können wir die Bezeichner wie & d,% c usw. verwenden. Da wir hier eine Gleitkommazahl mit nur einer Ziffer nach dem Dezimalpunkt anzeigen, verwenden wir den Bezeichner%.1f für die Anzeige des Werts in die variable Temperatur und Luftfeuchtigkeit
lcd .message ('Temp =%.1f C'% Temperatur) lcd .message ('\ nHum =%.1f %%'% Luftfeuchtigkeit)
Messung von Luftfeuchtigkeit und Temperatur mit Raspberry Pi:
Stellen Sie die Verbindungen gemäß Schaltplan her und installieren Sie die erforderlichen Bibliotheken. Starten Sie dann das Python-Programm am Ende dieser Seite. Ihr LCD sollte eine Intro-Meldung anzeigen und dann den aktuellen Temperatur- und Feuchtigkeitswert anzeigen, wie in der Abbildung unten gezeigt.
Wenn auf dem LCD nichts angezeigt wird, überprüfen Sie, ob im Python-Shell-Fenster Fehler angezeigt werden. Wenn kein Fehler angezeigt wird, überprüfen Sie Ihre Verbindungen erneut und stellen Sie das Potentiometer ein, um den Kontrast des LCD zu variieren, und prüfen Sie, ob etwas eingeschaltet ist der Bildschirm.
Ich hoffe, Sie haben das Projekt verstanden und es genossen, es zu erstellen. Wenn Sie Probleme haben, dies zu erledigen, melden Sie es im Kommentarbereich oder nutzen Sie das Forum für technische Hilfe. Ich werde mein Bestes geben, um auf alle Kommentare zu antworten.
Sie können unsere anderen Projekte auch mit DHT11 mit einem anderen Mikrocontroller überprüfen.