ESP32 Tutoriaal 28/55 - DHT11 Temperatuursensor met LCD | SunFounder se ESP32 IoT-leerkit
In hierdie tutoriaal gaan ons ondersoek hoe om die DHT11 temperatuur- en humiditeitsensor met die ESP32-mikrobeheerder te koppel. Deur hierdie opstelling te gebruik, sal ons die omgewingstemperatuur en humiditeit meet, en die resultate op beide die reeksmonitor en 'n LCD-skerm vertoon. Daarbenewens sal ons 'n gonser implementeer wat aktiveer wanneer die temperatuur 'n sekere drempel oorskry.
Hierdie projek demonstreer nie net die gebruik van die DHT11-sensor nie, maar wys ook die veelsydigheid van die ESP32, wat ingeboude Wi-Fi- en Bluetooth-vermoëns insluit. Teen die einde van hierdie tutoriaal sal jy 'n werkende opstelling hê wat deurlopend omgewingstoestande monitor en intydse terugvoer verskaf.
Vir 'n visuele gids, kyk na die video wat hierdie tutoriaal vergesel (in video by 00:00). Kom ons duik in!
Hardeware Verduidelik
Die hoofkomponente wat in hierdie projek gebruik word, is die ESP32-mikrobeheerder, die DHT11-sensor en 'n LCD-skerm. Die ESP32 sal dien as die brein van die operasie, wat data van die DHT11-sensor verwerk en die LCD-uitset beheer.
Die DHT11-sensor meet humiditeit en temperatuur, en verskaf lesings deur 'n enkele datalyne. Dit benodig 'n kragtoevoer van 3.3V tot 5.5V en het 'n lae stroomverbruik, wat dit geskik maak vir battery-aangedrewe toepassings. Die LCD sal die temperatuur- en humiditeitswaardes intyds vertoon.
Datablad Besonderhede
| Vervaardiger | GROVE |
|---|---|
| Deelnommer | DHT11 |
| Logika/IO-spanning | 3.3 – 5.5 V |
| Toevoerspanning | 3.3 V |
| Uitgangstroom (per kanaal) | 0.5 mA tip. |
| Piekstroom (per kanaal) | 2.5 mA maks. |
| PWM-frekwensie riglyne | N/A |
| Inset logika drempels | 0.3 VCC (laag), 0.7 VCC (hoog) |
| Spanningsval / RDS(on) / versadiging | Nie van toepassing nie |
| Termiese limiete | 0°C tot 60°C |
| Pakket | DIP-4 |
| Notas / variante | Resolusie: 1°C / 1% RH |
- Gebruik 'n optrekweerstand (5 kΩ aanbeveel) op die datalyne.
- Hou sensor-drade kort (minder as 20 m) om akkurate lesings te verseker.
- Krag die DHT11 met 3.3V vir optimale werkverrigting.
- Monsternemingstydperk moet nie minder as 1 sekonde wees nie.
- Kontroleer bedradingsverbindings as lesings misluk (bv. nie gekoppel nie, verkeerde pen).
Bedradingsinstruksies


Om die DHT11-sensor aan die ESP32 te bedraad, begin deur die VCC-pen van die DHT11 (die mees linkse pen) aan die 3.3V-uitset van die ESP32 te koppel. Koppel dan die grondpen (die vierde pen) aan 'n grond- (GND) pen op die ESP32. Die datapen (die tweede pen) moet aan GPIO-pen 14 op die ESP32 gekoppel word.
Vir die LCD, koppel die VCC-pen aan die 5V-uitset van die ESP32. Die grondpen moet aan 'n grondpen op die ESP32 gekoppel word. Die SDA- en SCL-penne van die LCD moet aan GPIO-penne 21 en 22 onderskeidelik gekoppel word. Verseker dat alle verbindings veilig is om enige probleme te vermy terwyl data gelees word.
Kode Voorbeelde & Deurloop
In die eerste deel van die kode initialiseer ons die DHT-sensor en stel die penommer met #define DHTPIN 14. Hierdie identifiseerder stel ons in staat om maklik na die pen te verwys wat aan die DHT11-datalyn gekoppel is deur die hele kode.
#include "DHT.h"
#define DHTPIN 14 // Stel die pen gekoppel aan die DHT11-datapen
#define DHTTYPE DHT11 // DHT 11
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(115200);
dht.begin();
}
In die setup()-funksie initialiseer ons reekskommunikasie vir ontfouting en begin die DHT-sensor. Die hoof-lus sluit 'n vertraging van 2 sekondes in om te verseker dat ons nie die sensor met versoeke oorweldig nie.
Volgende lees ons die humiditeits- en temperatuurwaardes met float humidity = dht.readHumidity(); en float temperature = dht.readTemperature();. Hierdie identifiseerders stoor die gemete waardes vir latere gebruik.
void loop() {
delay(2000);
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
}
Laastens kontroleer ons vir enige leesfoute en druk die waardes na die reeksmonitor met Serial.print(). Dit stel ons in staat om die lesings intyds waar te neem.
if (isnan(humidity) || isnan(temperature)) {
Serial.println("Kon nie van DHT-sensor lees nie!");
return;
}
Serial.print("Humiditeit: ");
Serial.print(humidity);
Serial.print(" %\t");
Serial.print("Temperatuur: ");
Serial.print(temperature);
Serial.println(" *C");
In die LCD-kode initialiseer ons die LCD en vertoon die temperatuur en humiditeit op die skerm met die lcd.print()-funksie. Dit verskaf 'n visuele voorstelling van die data wat deur die DHT11-sensor versamel is.
Demonstrasie / Wat om te VerwAg
Sodra alles korrek bedraad is en die kode na die ESP32 opgelaai is, behoort jy die temperatuur- en humiditeitslesings op die reeksmonitor en die LCD-skerm te sien vertoon. As die temperatuur 30°C oorskry, sal die gonser aktiveer en 'n hoorbare waarskuwing verskaf.
Wees versigtig vir omgekeerde verbindings en verseker dat die sensor nie aan uiterste toestande blootgestel word nie, aangesien dit die lesings kan beïnvloed. Jy mag dalk die drempel vir die gonser moet aanpas na gelang van jou vereistes (in video by 15:30).Video Tydstempels
- 00:00 Begin
- 1:57 Inleiding tot DHT11
- 6:18 Bedrading van DHT11 met ESP32
- 7:67 Arduino-kode verduidelik
- 11:49 Kies ESP32-bord en COM-poort in Arduino IDE
- 13:30 Projekdemonstrasie
- 15:32 Kry Fahrenheit
- 16:04 Vertoon temperatuur op LCD met ESP32
- 17:20 DHT11 en LCD met ESP32-kode
- 19:49 DHT11 LCD-demo met ESP32
- 21:33 Aksie neem op Temperatuurwaarde
#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);
Serial.println("DHT11 test!");
dht.begin();
}
void loop() {
// Wait a few seconds between measurements.
delay(2000);
// Reading temperature or humidity takes about 250 milliseconds!
// Sensor readings may also be up to 2 seconds 'old' (it's a very slow sensor)
float humidity = dht.readHumidity();
// Read temperature as Celsius (the default)
float temperature = dht.readTemperature();
// Check if any reads failed and exit early (to try again).
if (isnan(humidity) || isnan(temperature)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
// Print the humidity and temperature
Serial.print("Humidity: ");
Serial.print(humidity);
Serial.print(" %\t");
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.println(" *C");
}
/*
This is Arduino code to measure temperature and humidity using DHT11/DHT22 and displays it on LCD screen
written by Ahmad Shamshiri for SunFounder's ESP32 IoT learning kit
watch full video https://youtu.be/qRUFZX4eDJg
Full code, wiring diagram and other resources for this tutorial is at https://robojax.com/RJT711
*/
#include "DHT.h"
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define DHTPIN 14 // Set the pin connected to the DHT11 data pin
#define DHTTYPE DHT11 // DHT 11
DHT dht(DHTPIN, DHTTYPE);
// Initialize the LCD object with I2C address 0x27, 16 columns, and 2 rows
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
// Begin serial communication at 115200 baud
Serial.begin(115200);
// Initialize the dht11
dht.begin();
// Initialize the LCD
lcd.init();
lcd.backlight();
// Clear the LCD
lcd.clear();
}
void loop() {
// Wait a few seconds between measurements.
delay(2000);
// Reading temperature or humidity takes about 250 milliseconds!
// Sensor readings may also be up to 2 seconds 'old' (it's a very slow sensor)
float humidity = dht.readHumidity();
// Read temperature as Celsius (the default)
float temperature = dht.readTemperature();
// Check if any reads failed and exit early (to try again).
if (isnan(humidity) || isnan(temperature)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
// Display temperature and humidity on the LCD
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(temperature);
lcd.write(223); // Degree symbol
lcd.print("C");
lcd.setCursor(0, 1);
lcd.print("Humi: ");
lcd.print(humidity);
lcd.print("%");
}
Common Course Links
Common Course Files
Goedere wat jy dalk nodig het
-
AmazonPurchase DHT11 from Amazonamzn.to
-
BanggoodPurchase DHT11 module from Banggoodbanggood.com
Hulpbronne en verwysings
-
DokumentasieESP32 Tutorial 28/55 - SunFounder doc page for DHT temperature sensordocs.sunfounder.com
Lêers📁
Fritzing-lêer
-
DHT11 Humitidy and Temperature Sensor (3 pins)
DHT11 Humitidy and Temperature Sensor (3 pins).fzpz0.20 MB
Gebruikershandleiding
-
DHT11 User's Manual
robojax-DHT11_manual.pdf0.82 MB