Suchcode

ESP32 Tutorial 28/55 - DHT11 Temperatursensor mit LCD | SunFounders ESP32 IoT Lernkit

ESP32 Tutorial 28/55 - DHT11 Temperatursensor mit LCD | SunFounders ESP32 IoT Lernkit

In diesem Tutorial werden wir untersuchen, wie man den DHT11 Temperatur- und Feuchtigkeitssensor mit dem ESP32 Mikrocontroller verbindet. Mit diesem Setup messen wir die Umgebungswärme und -feuchtigkeit und zeigen die Ergebnisse sowohl im seriellen Monitor als auch auf einem LCD-Bildschirm an. Darüber hinaus werden wir einen Summer implementieren, der aktiviert wird, wenn die Temperatur einen bestimmten Schwellenwert überschreitet.

ESP32-28_dht_temperatursensor-haupt

Dieses Projekt demonstriert nicht nur die Verwendung des DHT11-Sensors, sondern zeigt auch die Vielseitigkeit des ESP32, der über integrierte WLAN- und Bluetooth-Funktionen verfügt. Am Ende dieses Tutorials werden Sie eine funktionierende Einrichtung haben, die kontinuierlich die Umgebungsbedingungen überwacht und Echtzeit-Feedback gibt.

Für eine visuelle Anleitung, schauen Sie sich das Video zu diesem Tutorial an (im Video bei :00). Lassen Sie uns eintauchen!

Hardware erklärt

Die Hauptkomponenten, die in diesem Projekt verwendet werden, sind der ESP32-Mikrocontroller, der DHT11-Sensor und ein LCD-Display. Der ESP32 wird als das Gehirn des Betriebs dienen, Daten vom DHT11-Sensor verarbeiten und die LCD-Ausgabe steuern.

Der DHT11-Sensor misst die Luftfeuchtigkeit und Temperatur und liefert die Werte über eine einzelne Datenleitung. Er benötigt eine Stromversorgung von 3,3 V bis 5,5 V und hat einen niedrigen Stromverbrauch, was ihn für batteriebetriebene Anwendungen geeignet macht. Das LCD zeigt die Temperatur- und Feuchtigkeitswerte in Echtzeit an.

Datenblatt Einzelheiten

Hersteller GROVE
Teilenummer DHT11
Logik-/IO-Spannung 3,3 - 5,5 V
Versorgungsspannung 3,3 V
Ausgangsstrom (pro Kanal) 0,5 mA typ.
Spitzenstrom (pro Kanal) 2,5 mA max.
PWM-Frequenzrichtlinie N/A
Eingabelogikschwellen 0,3 VCC (niedrig), 0,7 VCC (hoch)
Spannungsabfall / RDS(on)/ Sättigung Nicht zutreffend
Thermische Grenzen 0°C bis 60°C
Paket DIP-4
Hinweise / Varianten Auflösung: 1°C / 1% RH

  • Verwenden Sie einen Pull-up-Widerstand (5 kΩ empfohlen) an der Datenleitung.
  • Halten Sie die Sensorleitungen kurz (weniger als 20 m), um genaue Messwerte zu gewährleisten.
  • Versorgen Sie den DHT11 mit 3,3 V für optimale Leistung.
  • Der Abtastzeitraum sollte nicht weniger als 1 Sekunde betragen.
  • Überprüfen Sie die Verdrahtungsverbindungen, wenn die Messwerte fehlschlagen (z. B. nicht angeschlossen, falscher Pin).

Verdrahtungsanweisungen

ESP32-28_dht_temperature-sensor-wiring
DHT11_with_buzzer

Um den DHT11-Sensor mit dem ESP32 zu verbinden, beginnen Sie damit, den VCC-Pin des DHT11 (den linken Pin) mit dem 3,3V-Ausgang des ESP32 zu verbinden. Anschließend verbinden Sie den Ground-Pin (den vierten Pin) mit einem Ground (GND)-Pin am ESP32. Der Datenpin (den zweiten Pin) sollte mit dem GPIO-Pin 14 am ESP32 verbunden werden.

Für das LCD verbinden Sie den VCC-Pin mit dem 5V-Ausgang des ESP32. Der Ground-Pin sollte mit einem Ground-Pin am ESP32 verbunden werden. Die SDA- und SCL-Pins des LCD sollten an die GPIO-Pins 21 und 22 angeschlossen werden. Stellen Sie sicher, dass alle Verbindungen sicher sind, um Probleme beim Lesen von Daten zu vermeiden.

Codebeispiele und Anleitung

Im ersten Teil des Codes initialisieren wir den DHT-Sensor und setzen die Pin-Nummer mit#define DHTPIN 14Dieser Identifikator ermöglicht es uns, den mit der DHT11-Datenleitung verbundenen Pin im gesamten Code leicht zu referenzieren.

#include "DHT.h"

#define DHTPIN 14  // Set the pin connected to the DHT11 data pin
#define DHTTYPE DHT11 // DHT 11 
DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(115200);
  dht.begin();
}

In dersetup()Funktion, wir initialisieren die serielle Kommunikation zur Fehlersuche und beginnen mit dem DHT-Sensor. Die Hauptschleife umfasst eine Verzögerung von 2 Sekunden, um sicherzustellen, dass wir den Sensor nicht mit Anfragen überwältigen.

Als Nächstes lesen wir die Werte für die Luftfeuchtigkeit und die Temperatur aus.float humidity = dht.readHumidity();undfloat temperature = dht.readTemperature();Diese Identifikatoren speichern die gemessenen Werte zur späteren Verwendung.

void loop() {
  delay(2000);
  float humidity = dht.readHumidity();
  float temperature = dht.readTemperature();
}

Schließlich überprüfen wir auf etwaige LeseFehler und geben die Werte an den seriellen Monitor aus mitSerial.print(). Dies ermöglicht es uns, die Messwerte in Echtzeit zu beobachten.

if (isnan(humidity) || isnan(temperature)) {
  Serial.println("Failed to read from DHT sensor!");
  return;
}
Serial.print("Humidity: "); 
Serial.print(humidity);
Serial.print(" %\t");
Serial.print("Temperature: "); 
Serial.print(temperature);
Serial.println(" *C");

Im LCD-Code initialisieren wir das LCD und zeigen die Temperatur und Luftfeuchtigkeit auf dem Bildschirm an, indem wir daslcd.print()Funktion. Dies bietet eine visuelle Darstellung der Daten, die vom DHT11-Sensor erfasst wurden.

Demonstration / Was zu erwarten ist

Sobald alles korrekt verdrahtet ist und der Code auf den ESP32 hochgeladen wurde, sollten die Temperatur- und Feuchtigkeitswerte im seriellen Monitor und auf dem LCD-Bildschirm angezeigt werden. Wenn die Temperatur 30 °C überschreitet, wird der Summer aktiviert, um einen akustischen Alarm auszulösen.

Achten Sie auf umgekehrte Verbindungen und stellen Sie sicher, dass der Sensor nicht extremen Bedingungen ausgesetzt ist, da dies die Messwerte beeinflussen kann. Möglicherweise müssen Sie den Schwellenwert für den Summer je nach Ihren Anforderungen anpassen (im Video bei 15:30).

Video-Zeitstempel

  • 00:00 Start
  • 1:57 Einführung in den DHT11
  • 6:18 Verdrahtung DHT11 mit ESP32
  • 7:67 Arduino-Code erklärt
  • 11:49 Auswahl des ESP32-Boards und COM-Ports in der Arduino IDE
  • 13:30 Projektdemonstration
  • 15:32 Fahrenheit erhalten
  • 16:04 Temperaturanzeige auf LCD mit ESP32
  • 17:20 DHT11 und LCD mit ESP32-Code
  • 19:49 DHT11 LCD-Demo mit ESP32
  • 21:33 Maßnahmen zur Temperaturwert übernehmen

Bilder

ESP32-28_dht_temperature-sensor-library
ESP32-28_dht_temperature-sensor-library
ESP32-28_dht_temperature-sensor-schematic
ESP32-28_dht_temperature-sensor-schematic
ESP32-28_dht_temperature-sensor-wiring
ESP32-28_dht_temperature-sensor-wiring
DHT11_with_buzzer
DHT11_with_buzzer
ESP32-28_dht_temperature-sensor-main
ESP32-28_dht_temperature-sensor-main
828-ESP32 Tutorial 28/55- Arduino code for DHT Temperature sensor
Sprache: C++
#include "DHT.h"

#define DHTPIN 14 // Setzen Sie den Pin, der mit dem DHT11-Datenpin verbunden ist.
#define DHTTYPE DHT11 // DHT 11

DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(115200);
  Serial.println("DHT11 test!");
  dht.begin();
}

void loop() {
 // Warten Sie ein paar Sekunden zwischen den Messungen.
  delay(2000);

 // Die Messung der Temperatur oder Luftfeuchtigkeit dauert etwa 250 Millisekunden!
 // Sensorablesungen können auch bis zu 2 Sekunden 'alt' sein (es ist ein sehr langsamer Sensor).
  float humidity = dht.readHumidity();
 // Temperatur in Celsius lesen (der Standard)
  float temperature = dht.readTemperature();

 // Überprüfen Sie, ob fehlgeschlagene Reads vorliegen, und beenden Sie frühzeitig (um es erneut zu versuchen).
  if (isnan(humidity) || isnan(temperature)) {
    Serial.println("Failed to read from DHT sensor!");
    return;
  }
 // Drucken Sie die Luftfeuchtigkeit und die Temperatur
  Serial.print("Humidity: ");
  Serial.print(humidity);
  Serial.print(" %\t");
  Serial.print("Temperature: ");
  Serial.print(temperature);
  Serial.println(" *C");
}

829-ESP32 Tutorial 28/55- Arduino code for DHT Temperature sensor with LCD
Sprache: C++
/*
 * Dies ist Arduino-Code, um Temperatur und Luftfeuchtigkeit mit DHT11/DHT22 zu messen und auf einem LCD-Bildschirm anzuzeigen, geschrieben von Ahmad Shamshiri für das ESP32 IoT-Lernset von SunFounder. Sehen Sie sich das vollständige Video an: https://youtu.be/qRUFZX4eDJg. Vollständiger Code, Schaltplan und weitere Ressourcen für dieses Tutorial finden Sie unter https://robojax.com/RJT711.
 */
#include "DHT.h"
#include <Wire.h>
#include <LiquidCrystal_I2C.h>


#define DHTPIN 14 // Setze den Pin, der mit dem DHT11-Datenpin verbunden ist.
#define DHTTYPE DHT11 // DHT 11

DHT dht(DHTPIN, DHTTYPE);

 // Initialisieren Sie das LCD-Objekt mit der I2C-Adresse 0x27, 16 Spalten und 2 Zeilen.
LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup() {

 // Beginne die serielle Kommunikation bei 115200 Baud.
  Serial.begin(115200);

 // Initialisieren Sie den DHT11
  dht.begin();

 // Initialisiere das LCD
  lcd.init();
  lcd.backlight();

 // LCD zurücksetzen
  lcd.clear();
}

void loop() {
 // Warten Sie ein paar Sekunden zwischen den Messungen.
  delay(2000);

 // Die Messung der Temperatur oder Luftfeuchtigkeit dauert etwa 250 Millisekunden!
 // Sensormessungen können auch bis zu 2 Sekunden 'alt' sein (es ist ein sehr langsamer Sensor).
  float humidity = dht.readHumidity();
 // Temperatur als Celsius lesen (der Standard)
  float temperature = dht.readTemperature();

 // Überprüfen Sie, ob fehlgeschlagene Lesevorgänge vorliegen, und beenden Sie frühzeitig (um es erneut zu versuchen).
  if (isnan(humidity) || isnan(temperature)) {
    Serial.println("Failed to read from DHT sensor!");
    return;
  }

 // Anzeige von Temperatur und Luftfeuchtigkeit auf dem LCD
  lcd.setCursor(0, 0);
  lcd.print("Temp: ");
  lcd.print(temperature);
  lcd.write(223); // Gradzeichen
  lcd.print("C");

  lcd.setCursor(0, 1);
  lcd.print("Humi: ");
  lcd.print(humidity);
  lcd.print("%");
}

Dinge, die Sie vielleicht brauchen

Ressourcen & Referenzen

Dateien📁

Fritzing-Datei

|||Benutzerhandbuch