Arduino DHT11 Temperatur- und Luftfeuchtigkeitssensor Projekt

DHT-Sensorleitung

Die DHT-Sensorreihe (DHT11/22) ist aufgrund ihrer Einfachheit und Kompaktheit als Temperatur-/Luftfeuchtigkeitssensor eine der am häufigsten verwendeten in vielen elektronischen Projekten, die von Wetterstationen für zu Hause bis hin zu Anlagenautomatisierungssystemen reichen. Obwohl der genauere und teurere DHT22 ersetzt werden kann (mit einigen Änderungen im Code), wird das DHT11 Sensormodul in diesem Projekt verwendet. Der DHT11-Sensor, der in diesem Projekt verwendet wird, verfügt über eine einfache 3-Pin-Schnittstelle und ist kein eigenständiger 4-Pin-Sensor, sondern ein 3-Pin-Modul mit eingebautem Kondensator und Pull-up-Widerstand, so dass beim Bau dieser Schaltung keine zusätzlichen Komponenten benötigt werden. Wenn das DHT11-Sensormodul mit einem Arduino-Board verbunden wird, kann es direkt an einen digitalen Pin angeschlossen werden, der die seriellen Daten des Sensors verarbeitet und an den Mikrocontroller weiterleitet, damit wir sie lesen können.

In diesem DIY PCBA Projektwerden die Temperatur- und Luftfeuchtigkeitsdaten des DHT11-Sensors auf einem 0,96″ 128×64 OLED-Display (organische Leuchtdiode) angezeigt, das wir gut ablesen können. Ein Vorteil der Verwendung eines i2c OLED-Displays im Vergleich zu anderen Displaytypen ist, dass es nur eine 4-Draht-Verbindung zum Arduino-Board benötigt und mit einer Vielzahl von Bibliotheken leicht programmiert werden kann. Ein bemerkenswertes Merkmal eines OLED-Displays ist seine Klarheit, Schärfe und visuelle Qualität der Texte, Zahlen und Bilder, die es anzeigen kann.

Alles in allem ist dies ein recht einfaches Schaltkreisprojekt, das sich für absolute Anfänger eignet, da es nur ein paar Komponenten und einige grundlegende Programmierkenntnisse erfordert. Für Fortgeschrittene kann dieses Projekt jedoch auf jeden Fall verbessert und um weitere Funktionen wie drahtlose Kommunikation (RF, LoRa) erweitert werden, Bluetooth-Leiterplatte, Wi-Fi, usw.), RTC-Daten (Echtzeituhr), zusätzliche Sensordaten (Höhe, Luftdruck, Gaskonzentrationen, usw.) und viele andere Funktionen. Um dieses Projekt zu realisieren, müssen Sie Komponenten kaufen:

  • Arduino Nano (andere Arduino-kompatible Boards funktionieren auch)
  • USB-Kabel (kompatibel mit dem Arduino-Board)
  • Brettchen
  • Stecker-Stecker-Überbrückungsdrähte (7)
  • 0.96″ 128×64 i2c OLED Display
  • DHT11 Sensor Modul

Verkabelung

Wenn Sie ein anderes Entwicklungsboard verwenden, benötigen Sie möglicherweise eine andere Art von Breadboard. Für dieses Projekt verwendet FS Technology einen Arduino Nano, der die Verwendung eines Breadboards erforderlich macht. Wenn Sie jedoch stattdessen einen Arduino Uno verwenden, können Sie die Überbrückungsdrähte direkt an die Pins der Platine anschließen und benötigen kein Breadboard. Trotz des Wechsels der Platine bleibt die Verkabelung des DHT11-Sensormoduls und des OLED-Displays mit der Arduino-Platine konsistent. Außerdem finden Sie unten den Schaltplan für den Schaltkreis des DHT11 Temperatur- und Feuchtigkeitssensors.

  • DHT11 Sensor-Modul: Verbinden Sie den Signalstift (S) des Sensors mit D2, den positiven (+) Stift mit +5v und den negativen (-) Stift mit GND.
  • OLED: Verbinden Sie SDA (serielle Daten) mit A4, SCL/SCK (serieller Takt) mit A5, VDD/VCC (Versorgungsspannung) mit +5v und GND mit GND.
  • Jetzt können Sie Ihr Arduino-Board über das USB-Kabel an den Computer anschließen.
DHT11 Temperatur- und Luftfeuchtigkeitssensor

Projekt-Code

1TP5Einschließlich <Wire.h> 

1TP5Einschließlich <Adafruit_GFX.h> 

1TP5Einschließlich <Adafruit_SSD1306.h> 

 

#definieren bildschirm_breite 128 

#definieren Bildschirm_Höhe 64

#definieren OLED_RESET 4 

Adafruit_SSD1306 anzeigen(screen_width, screen_height);

 

1TP5Einschließlich "DHT.h"

#definieren DHTPIN 2

#definieren DHTTYPE DHT11

DHT dht(DHTPIN, DHTTYPE);

 

 void Einrichtung() {

 dht.beginnen();

 

 anzeigen.beginnen(SSD1306_SWITCHCAPVCC, 0x3C);

 anzeigen.clearDisplay();

}

 

 void Schleife() {

 anzeigen.clearDisplay();

 anzeigen.setTextSize(1);

 anzeigen.setTextColor(SSD1306_WHITE);

 

 anzeigen.setCursor(0, 15);

 anzeigen.drucken("Temperatur:");

 anzeigen.setCursor(80, 15);

 anzeigen.drucken(dht.readTemperature());

 anzeigen.setCursor(110, 15);

 anzeigen.drucken(" C");

 

 anzeigen.setCursor(0, 35);

 anzeigen.drucken("Luftfeuchtigkeit:");

 anzeigen.setCursor(80, 35);

 anzeigen.drucken(dht.readHumidity());

 anzeigen.setCursor(110, 35);

 anzeigen.drucken(“%”);

 anzeigen.anzeigen();

 Verzögerung(2000);

Über den Code

  • Einer der Vorteile der Arbeit mit einem i2c-OLED-Display ist die unglaubliche Menge an Unterstützung, die online in Form von Open-Source-Bibliotheken verfügbar ist, die bei der Programmierung des Displays über die Arduino-IDE sehr hilfreich sein können. In diesem Projekt sind die Adafruit SSD1306- und GFX-Bibliotheken die beiden wichtigsten Bibliotheken, die verwendet werden, um das OLED-Display mit dem Arduino zu verbinden. Da alle Setup-Informationen bereits in den Bibliotheksdateien konfiguriert sind, werden grundlegende Befehle innerhalb der IDE verwendet, was die Verwendung des Displays vereinfacht. Wenn Sie diese Bibliotheken nicht heruntergeladen und in Ihrer IDE installiert haben, kann es zu Kompilierungsfehlern kommen. Stellen Sie daher sicher, dass Sie die neuesten Bibliotheksversionen in der Arduino IDE installiert haben.
  • Der Code beginnt mit der Definition der Bibliotheken, die zum Einrichten des OLED-Displays benötigt werden: Wire, Adafruit SSD1306 und Adafruit GFX. Diese sind notwendig, damit das OLED mit dem Arduino funktioniert.
  • Im zweiten Block werden mehrere Parameter in Bezug auf das OLED-Display definiert, darunter die Bildschirmbreite und -höhe (128 x 64 Pixel) und der OLED-Reset-Pin (A4).
  • Als nächstes werden die Bibliotheken definiert, die für den DHT11-Sensor zur Verbindung mit dem Arduino erforderlich sind. Der digitale Pin, an den der DHT-Sensor auf dem Arduino-Board angeschlossen ist (digitaler Pin 2 - D2), wird zusätzlich zu dem speziellen Modell des DHT-Sensors, den wir verwenden, dem DHT11-Sensor, definiert.
  • Jetzt wird der Abschnitt void setup eingeführt, eine der beiden wesentlichen Funktionen in jedem Arduino-Code. Hier starten wir den DHT11-Sensor (dht.begin()) und das OLED-Display. Bevor wir mit dem Abschnitt void loop fortfahren, wird das OLED-Display von allen vorherigen Darstellungen befreit (display.clearDisplay()).
  • Der Hauptteil des Codes, der sich ständig (in einer Schleife) wiederholt, solange das Arduino-Board mit Strom versorgt wird, besteht hauptsächlich aus OLED-spezifischen Funktionen, mit denen zunächst die Textgröße, die Textfarbe und der Cursor (d.h. die Stelle, an der der Text auf dem OLED gedruckt werden soll) eingestellt werden. Anschließend befehlen wir dem OLED, Textzeilen an verschiedenen Stellen auf dem Display zu drucken. Dabei handelt es sich hauptsächlich um die Informationen zur Temperatur (in Grad Celsius) und Luftfeuchtigkeit (%), die vom DHT11-Sensor gelesen werden. Mit Hilfe dieser einfachen Befehle, die aus den definierten Bibliotheken stammen, können wir ganz einfach jede beliebige Information auf das Display drucken.
  • Die Verzögerungsfunktion ganz am Ende des Codes ist so eingestellt, dass das OLED-Display alle 2000 Millisekunden mit den neuesten vom Sensor gelesenen Daten aktualisiert wird. Sie können dieses Timing jedoch ändern, je nachdem, wie oft Sie aktuelle Informationen direkt vom Sensor erhalten möchten.

Zusammenfassen

Mit einem grundlegenden Verständnis dieses Projekts und der grundlegenden Prinzipien, die bei der Kopplung eines Sensors mit einem OLED-Display eine Rolle spielen, gibt es sicherlich eine Vielzahl von Möglichkeiten, dieses Projekt zu erweitern und zu verbessern. In den meisten Fällen kann ein solches System in ein viel größeres Wetterstationsprojekt integriert werden, indem weitere Sensoren, ein größeres Display, drahtlose Funktionen, ein Gehäuse usw. hinzugefügt werden. Wie dieses Projekt zeigt, ist es relativ einfach, Ihre eigene Wetterstation zu programmieren, wenn Sie sich mit einigen der verfügbaren Arduino-Bibliotheken vertraut machen. Ein zukünftiges Projekt könnte die drahtlose Übertragung solcher Wetterdaten von einem Mikrocontroller-Board zu einem anderen beinhalten, um eine entfernte Umgebung zu überwachen oder ein autonomes System zentral zu steuern. Nichtsdestotrotz sind Projekte wie dieses hervorragend geeignet, um einen absoluten Anfänger in die Hobbyelektronik einzuführen und können auch sehr gut für einen erfahreneren Anfänger geeignet sein. PCBA-Hersteller die vielleicht andere Aspekte der Elektronik erforschen möchten. 

DIY Elektronik Projekt Blog