Mafunzo ya ESP32 28/55 - Sensor ya Joto DHT11 na LCD | Kifurushi cha Kujifunza cha IoT cha SunFounder cha ESP32
Katika mafunzo haya, tutachunguza jinsi ya kuunganisha kihisi cha joto na unyevu cha DHT11 na kidhibiti kidogo cha ESP32. Kwa kutumia mpangilio huu, tutapima joto na unyevu wa mazingira, na kuonyesha matokeo kwenye ufuatiliaji wa mfululizo na skrini ya LCD. Zaidi ya hayo, tutatekeleza buzzer inayowasha wakati joto linapozidi kiwango fulani.
Mradi huu hauonyeshi tu matumizi ya kihisi cha DHT11, bali pia unaonyesha uwezo mwingi wa ESP32, ambao unajumuisha uwezo wa Wi-Fi na Bluetooth uliojengewa ndani. Kufikia mwisho wa mafunzo haya, utakuwa na mpangilio unaofanya kazi unaofuatilia hali ya mazingira kila wakati na kutoa maoni ya wakati halisi.
Kwa mwongozo wa kuona, angalia video inayoandamana na mafunzo haya (katika video saa 00:00). Hebu tuanze!
Vifaa Vimeelezwa
Vipengele vikuu vinavyotumika katika mradi huu ni kidhibiti kidogo cha ESP32, kihisi cha DHT11, na skrini ya LCD. ESP32 itatumika kama ubongo wa operesheni, ikichakata data kutoka kwa kihisi cha DHT11 na kudhibiti matokeo ya LCD.
Kihisi cha DHT11 hupima unyevu na joto, kikitoa usomaji kupitia mstari mmoja wa data. Kinahitaji usambazaji wa nguvu wa 3.3V hadi 5.5V na kina matumizi ya chini ya sasa, na kuifanya kufaa kwa matumizi yanayotumia betri. LCD itaonyesha thamani za joto na unyevu kwa wakati halisi.
Maelezo ya Datasheet
| Mtengenezaji | GROVE |
|---|---|
| Nambari ya sehemu | DHT11 |
| Voltage ya Logic/IO | 3.3 – 5.5 V |
| Voltage ya usambazaji | 3.3 V |
| Sasa ya pato (kwa kila chaneli) | 0.5 mA typ. |
| Sasa ya kilele (kwa kila chaneli) | 2.5 mA max. |
| Mwongozo wa mzunguko wa PWM | N/A |
| Viwango vya kizingiti cha mantiki ya kuingiza | 0.3 VCC (chini), 0.7 VCC (juu) |
| Kushuka kwa voltage / RDS(on) / kueneza | Haifai |
| Mipaka ya joto | 0°C hadi 60°C |
| Kifurushi | DIP-4 |
| Vidokezo / lahaja | Azimio: 1°C / 1% RH |
- Tumia kontena la kuvuta-juu (5 kΩ inapendekezwa) kwenye mstari wa data.
- Weka waya za kihisi kuwa fupi (chini ya m 20) ili kuhakikisha usomaji sahihi.
- Washa DHT11 kwa 3.3V kwa utendaji bora.
- Kipindi cha sampuli haipaswi kuwa chini ya sekunde 1.
- Angalia miunganisho ya waya ikiwa usomaji unashindwa (kwa mfano, haijaunganishwa, pini isiyo sahihi).
Maagizo ya Uunganishaji wa Waya


Ili kuunganisha kihisi cha DHT11 kwenye ESP32, anza kwa kuunganisha pini ya VCC ya DHT11 (pini ya kushoto kabisa) kwenye pato la 3.3V la ESP32. Ifuatayo, unganisha pini ya ardhi (pini ya nne) kwenye pini ya ardhi (GND) kwenye ESP32. Pini ya data (pini ya pili) inapaswa kuunganishwa kwenye pini ya GPIO 14 kwenye ESP32.
Kwa LCD, unganisha pini ya VCC kwenye pato la 5V la ESP32. Pini ya ardhi inapaswa kuunganishwa kwenye pini ya ardhi kwenye ESP32. Pini za SDA na SCL za LCD zinapaswa kuunganishwa kwenye pini za GPIO 21 na 22, mtawalia. Hakikisha miunganisho yote ni salama ili kuepuka matatizo yoyote wakati wa kusoma data.
Mifano ya Msimbo na Mwongozo
Katika sehemu ya kwanza ya msimbo, tunaanzisha kihisi cha DHT na kuweka nambari ya pini na #define DHTPIN 14. Kitambulisho hiki kinaturuhusu kurejelea kwa urahisi pini iliyounganishwa na mstari wa data wa DHT11 katika msimbo wote.
#include "DHT.h"
#define DHTPIN 14 // Weka pini iliyounganishwa na pini ya data ya DHT11
#define DHTTYPE DHT11 // DHT 11
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(115200);
dht.begin();
}
Katika kazi ya setup(), tunaanzisha mawasiliano ya mfululizo kwa ajili ya utatuzi na kuanza kihisi cha DHT. Kitanzi kikuu kinajumuisha kuchelewa kwa sekunde 2 ili kuhakikisha hatulemei kihisi na maombi mengi.
Ifuatayo, tunasoma thamani za unyevu na joto kwa kutumia float humidity = dht.readHumidity(); na float temperature = dht.readTemperature();. Vitambulisho hivi huhifadhi thamani zilizopimwa kwa matumizi ya baadaye.
void loop() {
delay(2000);
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
}
Hatimaye, tunaangalia makosa yoyote ya usomaji na kuchapisha thamani kwenye ufuatiliaji wa mfululizo kwa kutumia Serial.print(). Hii inaturuhusu kuona usomaji kwa wakati halisi.
if (isnan(humidity) || isnan(temperature)) {
Serial.println("Imeshindwa kusoma kutoka kwa kihisi cha DHT!");
return;
}
Serial.print("Unyevu: ");
Serial.print(humidity);
Serial.print(" %\t");
Serial.print("Joto: ");
Serial.print(temperature);
Serial.println(" *C");
Katika msimbo wa LCD, tunaanzisha LCD na kuonyesha joto na unyevu kwenye skrini kwa kutumia kazi ya lcd.print(). Hii inatoa uwakilishi wa kuona wa data iliyokusanywa na kihisi cha DHT11.
Maonyesho / Nini cha Kutarajia
Mara tu kila kitu kitakapounganishwa kwa usahihi na msimbo kupakiwa kwenye ESP32, unapaswa kuona usomaji wa joto na unyevu ukionyeshwa kwenye ufuatiliaji wa mfululizo na skrini ya LCD. Ikiwa joto litazidi 30°C, buzzer itawasha, ikitoa tahadhari ya sauti.
Kuwa makini na miunganisho iliyogeuzwa na hakikisha sensor haijawekwa wazi kwa hali mbaya, kwani inaweza kuathiri usomaji. Huenda ukahitaji kurekebisha kiwango cha buzzer kulingana na mahitaji yako (katika video saa 15:30).
Vidokezo vya Muda wa Video
- 00:00 Mwanzo
- 1:57 Utangulizi wa DHT11
- 6:18 Kuunganisha DHT11 na ESP32
- 7:67 Maelezo ya Msimbo wa Arduino
- 11:49 Kuchagua bodi ya ESP32 na COM port katika Arduino IDE
- 13:30 Maonyesho ya Mradi
- 15:32 Kupata Fahrenheit
- 16:04 Kuonyesha joto kwenye LCD kwa kutumia ESP32
- 17:20 Msimbo wa DHT11 na LCD na ESP32
- 19:49 Maonyesho ya DHT11 LCD na ESP32
- 21:33 Kuchukua hatua kwenye thamani ya Joto
#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
Tänker att du kanske behöver
-
AmazonPurchase DHT11 from Amazonamzn.to
-
BanggoodPurchase DHT11 module from Banggoodbanggood.com
Resurser och referenser
-
DokumentationESP32 Tutorial 28/55- SunFounder doc page for DHT temperature sensordocs.sunfounder.com
Filer📁
Fritzing-fil
-
DHT11 Humitidy and Temperature Sensor (3 pins)
DHT11 Humitidy and Temperature Sensor (3 pins).fzpz0.20 MB
Användarhandbok
-
DHT11 Användarmanual
robojax-DHT11_manual.pdf0.82 MB