Tutorial ESP32 28/55 - Sensor Heerkul DHT11 oo leh LCD | Qalabka Barashada ESP32 IoT ee SunFounder
Cashigarkani, waxaan ku saabsan doonaa sida loo isku xiro dareemaha heerkulka iyo qoyaanka DHT11 ee kontoroolka ESP32. Iyadoo la adeegsanayo qaabkan, waxaan cabbiri doonnaa heerkulka iyo qoyaanka hawada, waxaanna ku muujin doonnaa natiijooyinka shaashadda serial-ka iyo shaashadda LCD-ga labadaba. Intaa waxaa dheer, waxaan hirgelin doonnaa qalabka buunka (buzzer) kaas oo shaqeeya marka heerkulku ka sarreeyo heer go'an.
Mashruucani ma muujinayo oo kaliya isticmaalka dareemaha DHT11, laakiin wuxuu kaloo muujinayaa kartida badan ee ESP32, kaas oo ay ku jiraan awoodaha Wi-Fi iyo Bluetooth-ka ee ku dhex jira. Markaad dhammaystirto cashar-kan, waxaad yeelan doontaa qaab shaqeeya oo si joogto ah ula socda xaaladaha deegaanka oo bixiya jawaab celin waqti-ku-ool ah.
Haddii aad rabto hagitaan muuqaal ah, fiiri fiidiyowga la socda cashar-kan (fiidiyowga 00:00). Aan dhex galno!
Qalabka La Sharaxay
Qaybaha ugu muhiimsan ee loo adeegsaday mashruucan waa kontoroolka ESP32, dareemaha DHT11, iyo shaashadda LCD-ga. ESP32 wuxuu u adeegi doonaa sida maskaxda hawlgalka, isagoo farsameynaya xogta ka timaadda dareemaha DHT11 oo xakameynaya wax soo saarka LCD-ga.
Dareemaha DHT11 wuxuu cabbiraa qoyaanka iyo heerkulka, isagoo bixinaya akhrin hal xariiq oo xog ah. Wuxuu u baahan yahay koronto 3.3V ilaa 5.5V wuxuuna leeyahay isticmaalka hadda hooseeya, taasoo ka dhigaysa mid ku habboon codsiyada ku shaqeeya baytariyada. LCD-ga wuxuu ku muujin doonaa qiimaha heerkulka iyo qoyaanka waqti-gaab ah.
Faahfaahinta Xaashida Xogta
| Soo saaraha | GROVE |
|---|---|
| Nambarka qaybta | DHT11 |
| Danabka Logic/IO | 3.3 – 5.5 V |
| Danabka sahayda | 3.3 V |
| Hadda soo saarista (kanal kasta) | 0.5 mA typ. |
| Hadda ugu sarreysa (kanal kasta) | 2.5 mA max. |
| Hagaha soo noqnoqoshada PWM | N/A |
| Heerarka xadka logic-ga | 0.3 VCC (hoose), 0.7 VCC (sare) |
| Hoos u dhaca danabka / RDS(on) / saturation | Ma khuseeyo |
| Xadka kulaylka | 0°C ilaa 60°C |
| Baakad | DIP-4 |
| Qoraalo / noocyo | Xallinta: 1°C / 1% RH |
- Isticmaal resistor-ka kor u qaada (5 kΩ lagu taliyay) ee xariiqda xogta.
- Ka ilaali fiilooyinka dareemaha inay gaaban yihiin (ka yar 20 m) si loo hubiyo akhrin sax ah.
- Ku shub DHT11 3.3V si waxqabadka ugu fiican.
- Muddada muunadayntu waa inaysan ka yarayn 1 ilbiriqsi.
- Hubi isku xirnaanta fiilooyinka haddii akhrintu fashilanto (tusaale, aan ku xirnayn, pin khaldan).
Tilmaamaha Fiilooyinka


Si aad ugu xirto dareemaha DHT11 ee ESP32, ku bilow adigoo ku xira pin-ka VCC ee DHT11 (pin-ka ugu bidix) ee soo saarista 3.3V ee ESP32. Marka xigta, ku xir pin-ka dhulka (pin-ka afraad) ee pin-ka dhulka (GND) ee ESP32. Pin-ka xogta (pin-ka labaad) waa in lagu xiraa GPIO pin 14 ee ESP32.
LCD-ga, ku xir pin-ka VCC ee soo saarista 5V ee ESP32. Pin-ka dhulka waa in lagu xiraa pin-ka dhulka ee ESP32. Pin-yada SDA iyo SCL ee LCD-ga waa in lagu xiraa GPIO pin-yada 21 iyo 22, siday u kala horreeyaan. Hubi in dhammaan isku xirnaantu ay adag yihiin si looga fogaado dhibaatooyinka marka la akhrinayo xogta.
Tusaalooyinka Koodhka & Sharaxaad
Qaybta koowaad ee koodhka, waxaan bilaabaynaa dareemaha DHT oo waxaan dejinaynaa nambarka pin-ka iyadoo la adeegsanayo #define DHTPIN 14. Aqoonsigani wuxuu noo ogolaanayaa inaan si fudud u tixraacno pin-ka ku xiran xariiqda xogta DHT11 inta koodhka oo dhan.
#include "DHT.h"
#define DHTPIN 14 // Deji pin-ka ku xiran pin-ka xogta DHT11
#define DHTTYPE DHT11 // DHT 11
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(115200);
dht.begin();
}
Hawlaha setup(), waxaan bilaabaynaa isgaarsiinta serial-ka si loo ogaado khaladaadka waxaana bilaabaynaa dareemaha DHT. Loop-ka ugu weyn wuxuu ku darayaa dib u dhac 2 ilbiriqsi ah si loo hubiyo inaanaan ku cuslaanin dareemaha codsiyo badan.
Marka xigta, waxaan akhrinaynaa qiimaha qoyaanka iyo heerkulka iyadoo la adeegsanayo float humidity = dht.readHumidity(); iyo float temperature = dht.readTemperature();. Aqoonsiyadani waxay kaydiyaan qiimaha la cabbiray si loo isticmaalo markii dambe.
void loop() {
delay(2000);
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
}
Ugu dambeyntii, waxaan hubinaynaa khaladaadka akhrinta oo waxaan daabacaynaa qiimaha shaashadda serial-ka iyadoo la adeegsanayo Serial.print(). Tani waxay noo ogolaanaysaa inaan ku fiirino akhrinta waqti-gaab ah.
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");
Koodhka LCD-ga, waxaan bilaabaynaa LCD-ga oo waxaan ku muujinaynaa heerkulka iyo qoyaanka shaashadda iyadoo la adeegsanayo hawsha lcd.print(). Tani waxay bixisaa matalaad muuqaal ah oo xogta ay soo ururisay DHT11.
Muuujin / Waxa Laga Filan Karo
Marka dhammaan si sax ah loo xiro oo koodhka lagu shubo ESP32, waxaad arki doontaa akhrinta heerkulka iyo qoyaanka oo lagu muujiyay shaashadda serial-ka iyo shaashadda LCD-ga. Haddii heerkulku ka sarreeyo 30°C, buunku wuxuu shaqeyn doonaa, isagoo bixinaya digniin maqal ah.
Ka digtoonaanso isku xirnaanshaha rogaal ah oo hubi in dareenka (sensor) aan loo bandhigin xaalado aad u daran, sababtoo ah waxay saameyn karaan akhrinta. Waxaa laga yaabaa inaad u baahato inaad hagaajiso heerka (threshold) ee qalabka dhawaqa (buzzer) iyadoo ku xiran shuruudahaaga (fiidiyowga 15:30).Waqtiyada Fiidiyowga
- 00:00 Bilow
- 1:57 Hordhac ku saabsan DHT11
- 6:18 Ku xirista DHT11 ee ESP32
- 7:67 Sharaxaada koodka Arduino
- 11:49 Doorashada guddiga ESP32 iyo COM port ee Arduino IDE
- 13:30 Bandejiga mashruuca
- 15:32 Helista Fahrenheit
- 16:04 Muujinta heerkulka ee LCD iyadoo la isticmaalayo ESP32
- 17:20 Koodka DHT11 iyo LCD ee ESP32
- 19:49 Bandejiga DHT11 LCD ee ESP32
- 21:33 Qaadashada tallaabo ku saabsan qiimaha heerkulka
#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
Waad u baahan tahay
-
AmaazonPurchase DHT11 from Amazonamzn.to
-
BanggoodPurchase DHT11 module from Banggoodbanggood.com
Kheyraadka & Tixraacyada
-
DukumentiESP32 Tutorial 28/55- SunFounder doc page for DHT temperature sensordocs.sunfounder.com
Faylasha📁
Faylka Fritzing
-
DHT11 Humitidy and Temperature Sensor (3 pins)
DHT11 Humitidy and Temperature Sensor (3 pins).fzpz0.20 MB
Buugga Isticmaalaha
-
DHT11 Buugga Isticmaalka
robojax-DHT11_manual.pdf0.82 MB