Tutorial ESP32 28/55 - Senzor de temperatură DHT11 cu LCD | Kitul de învățare IoT ESP32 de la SunFounder
În acest tutorial, vom explora cum să interfajăm senzorul de temperatură și umiditate DHT11 cu microcontrolerul ESP32. Folosind această configurație, vom măsura temperatura și umiditatea ambientală, afișând rezultatele atât pe monitorul serial, cât și pe un ecran LCD. În plus, vom implementa un buzzer care se activează atunci când temperatura depășește un anumit prag.
Acest proiect nu demonstrează doar utilizarea senzorului DHT11, ci evidențiază și versatilitatea ESP32, care include capacități Wi-Fi și Bluetooth integrate. Până la sfârșitul acestui tutorial, veți avea o configurație funcțională care monitorizează continuu condițiile de mediu și oferă feedback în timp real.
Pentru un ghid vizual, urmăriți videoclipul care însoțește acest tutorial (în videoclip la 00:00). Să începem!
Hardware Explicat
Principalele componente utilizate în acest proiect sunt microcontrolerul ESP32, senzorul DHT11 și un afișaj LCD. ESP32 va servi drept creier al operațiunii, procesând datele de la senzorul DHT11 și controlând ieșirea LCD.
Senzorul DHT11 măsoară umiditatea și temperatura, oferind citiri printr-o singură linie de date. Necesită o sursă de alimentare de 3.3V până la 5.5V și are un consum redus de curent, făcându-l potrivit pentru aplicații alimentate cu baterii. LCD-ul va afișa valorile de temperatură și umiditate în timp real.
Detalii din Fișa Tehnică
| Producător | GROVE |
|---|---|
| Număr de piesă | DHT11 |
| Tensiune logică/IO | 3.3 – 5.5 V |
| Tensiune de alimentare | 3.3 V |
| Curent de ieșire (pe canal) | 0.5 mA tip. |
| Curent de vârf (pe canal) | 2.5 mA max. |
| Ghid de frecvență PWM | N/A |
| Praguri logice de intrare | 0.3 VCC (jos), 0.7 VCC (sus) |
| Cădere de tensiune / RDS(on) / saturație | Nu se aplică |
| Limite termice | 0°C până la 60°C |
| Pachet | DIP-4 |
| Note / variante | Rezoluție: 1°C / 1% RH |
- Utilizați un rezistor de pull-up (5 kΩ recomandat) pe linia de date.
- Păstrați firele senzorului scurte (mai puțin de 20 m) pentru a asigura citiri precise.
- Alimentați DHT11 cu 3.3V pentru performanță optimă.
- Perioada de eșantionare nu trebuie să fie mai mică de 1 secundă.
- Verificați conexiunile de cablare dacă citirile eșuează (de exemplu, neconectat, pin incorect).
Instrucțiuni de Cablare


Pentru a cabla senzorul DHT11 la ESP32, începeți prin conectarea pinului VCC al DHT11 (pinul din stânga) la ieșirea de 3.3V a ESP32. Apoi, conectați pinul de masă (al patrulea pin) la un pin de masă (GND) pe ESP32. Pinul de date (al doilea pin) ar trebui conectat la pinul GPIO 14 pe ESP32.
Pentru LCD, conectați pinul VCC la ieșirea de 5V a ESP32. Pinul de masă ar trebui conectat la un pin de masă pe ESP32. Pinii SDA și SCL ai LCD-ului ar trebui conectați la pinii GPIO 21 și, respectiv, 22. Asigurați-vă că toate conexiunile sunt sigure pentru a evita orice probleme în timpul citirii datelor.
Exemple de Cod & Explicații
În prima parte a codului, inițializăm senzorul DHT și setăm numărul pinului cu #define DHTPIN 14. Acest identificator ne permite să referim ușor pinul conectat la linia de date DHT11 pe tot parcursul codului.
#include "DHT.h"
#define DHTPIN 14 // Setează pinul conectat la pinul de date DHT11
#define DHTTYPE DHT11 // DHT 11
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(115200);
dht.begin();
}
În funcția setup(), inițializăm comunicarea serială pentru depanare și pornim senzorul DHT. Bucla principală include o întârziere de 2 secunde pentru a ne asigura că nu supraîncărcăm senzorul cu cereri.
În continuare, citim valorile de umiditate și temperatură folosind float humidity = dht.readHumidity(); și float temperature = dht.readTemperature();. Acești identificatori stochează valorile măsurate pentru utilizare ulterioară.
void loop() {
delay(2000);
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
}
În final, verificăm dacă există erori de citire și imprimăm valorile pe monitorul serial folosind Serial.print(). Acest lucru ne permite să observăm citirile în timp real.
if (isnan(humidity) || isnan(temperature)) {
Serial.println("Eroare la citirea senzorului DHT!");
return;
}
Serial.print("Umiditate: ");
Serial.print(humidity);
Serial.print(" %\t");
Serial.print("Temperatură: ");
Serial.print(temperature);
Serial.println(" *C");
În codul LCD, inițializăm LCD-ul și afișăm temperatura și umiditatea pe ecran folosind funcția lcd.print(). Aceasta oferă o reprezentare vizuală a datelor colectate de senzorul DHT11.
Demonstrație / Ce să Așteptați
Odată ce totul este cablat corect și codul este încărcat pe ESP32, ar trebui să vedeți citirile de temperatură și umiditate afișate pe monitorul serial și pe ecranul LCD. Dacă temperatura depășește 30°C, buzzerul se va activa, oferind o alertă sonoră.
Fiți precauți în privința conexiunilor inversate și asigurați-vă că senzorul nu este expus la condiții extreme, deoarece acestea pot afecta citirile. S-ar putea să fie necesar să ajustați pragul pentru buzzer în funcție de cerințele dumneavoastră (în video la 15:30).
Marcaje temporale video
- 00:00 Început
- 1:57 Introducere în DHT11
- 6:18 Conectarea DHT11 cu ESP32
- 7:67 Explicarea codului Arduino
- 11:49 Selectarea plăcii ESP32 și a portului COM în Arduino IDE
- 13:30 Demonstrația proiectului
- 15:32 Obținerea valorii în Fahrenheit
- 16:04 Afișarea temperaturii pe LCD folosind ESP32
- 17:20 Codul DHT11 și LCD cu ESP32
- 19:49 Demonstrație DHT11 LCD cu ESP32
- 21:33 Acțiune asupra valorii temperaturii
#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
Lucruri de care ai putea avea nevoie
-
AmazonPurchase DHT11 from Amazonamzn.to
-
BanggoodPurchase DHT11 module from Banggoodbanggood.com
Resurse și referințe
-
DocumentațieESP32 Tutorial 28/55- SunFounder doc page for DHT temperature sensordocs.sunfounder.com
Fișiere📁
Fișier Fritzing
-
DHT11 Humitidy and Temperature Sensor (3 pins)
DHT11 Humitidy and Temperature Sensor (3 pins).fzpz0.20 MB
Manualul utilizatorului
-
Manualul utilizatorului DHT11
robojax-DHT11_manual.pdf0.82 MB