Návod na ESP32 28/55 - DHT11 teplotný senzor s LCD | SunFounder's ESP32 IoT výučbová súprava
V tomto návode si ukážeme, ako pripojiť DHT11 senzor teploty a vlhkosti k mikrokontroléru ESP32. Pomocou tohto zapojenia budeme merať okolitú teplotu a vlhkosť, pričom výsledky zobrazíme na sériovom monitore aj na LCD obrazovke. Okrem toho implementujeme bzučiak, ktorý sa aktivuje, keď teplota prekročí určitú hranicu.
Tento projekt nielenže demonštruje použitie DHT11 senzora, ale tiež ukazuje všestrannosť ESP32, ktorý obsahuje vstavané Wi-Fi a Bluetooth možnosti. Na konci tohto návodu budete mať funkčné zapojenie, ktoré nepretržite monitoruje podmienky prostredia a poskytuje spätnú väzbu v reálnom čase.
Pre vizuálny návod si pozrite video, ktoré sprevádza tento tutoriál (vo videu v čase 00:00). Poďme na to!
Vysvetlenie hardvéru
Hlavné komponenty použité v tomto projekte sú mikrokontrolér ESP32, senzor DHT11 a LCD displej. ESP32 bude slúžiť ako mozog operácie, spracovávať dáta zo senzora DHT11 a riadiť výstup na LCD.
Senzor DHT11 meria vlhkosť a teplotu, pričom poskytuje hodnoty cez jediný dátový vodič. Vyžaduje napájanie 3,3V až 5,5V a má nízku spotrebu prúdu, vďaka čomu je vhodný pre aplikácie napájané batériou. LCD zobrazí hodnoty teploty a vlhkosti v reálnom čase.
Podrobnosti z datasheetu
| Výrobca | GROVE |
|---|---|
| Označenie dielu | DHT11 |
| Logické/IO napätie | 3,3 – 5,5 V |
| Napájacie napätie | 3,3 V |
| Výstupný prúd (na kanál) | 0,5 mA typ. |
| Špičkový prúd (na kanál) | 2,5 mA max. |
| Odporúčanie pre PWM frekvenciu | N/A |
| Vstupné logické prahy | 0,3 VCC (nízka), 0,7 VCC (vysoká) |
| Pokles napätia / RDS(on) / saturácia | Nepoužiteľné |
| Tepelné limity | 0°C až 60°C |
| Puzdro | DIP-4 |
| Poznámky / varianty | Rozlíšenie: 1°C / 1% RH |
- Použite pull-up rezistor (odporúčaných 5 kΩ) na dátovom vodiči.
- Udržujte vodiče senzora krátke (menej ako 20 m), aby ste zabezpečili presné merania.
- Napájajte DHT11 napätím 3,3V pre optimálny výkon.
- Perióda vzorkovania by nemala byť kratšia ako 1 sekunda.
- Skontrolujte zapojenie, ak merania zlyhajú (napr. nie je pripojené, nesprávny pin).
Pokyny na zapojenie


Na zapojenie senzora DHT11 k ESP32 začnite pripojením pinu VCC senzora DHT11 (najľavejší pin) k 3,3V výstupu ESP32. Ďalej pripojte uzemňovací pin (štvrtý pin) k uzemňovaciemu (GND) pinu na ESP32. Dátový pin (druhý pin) by mal byť pripojený k GPIO pinu 14 na ESP32.
Pre LCD pripojte pin VCC k 5V výstupu ESP32. Uzemňovací pin by mal byť pripojený k uzemňovaciemu pinu na ESP32. Piny SDA a SCL LCD by mali byť pripojené k GPIO pinom 21 a 22. Uistite sa, že všetky spojenia sú pevné, aby ste predišli problémom pri čítaní dát.
Príklady kódu a vysvetlenie
V prvej časti kódu inicializujeme DHT senzor a nastavíme číslo pinu pomocou #define DHTPIN 14. Tento identifikátor nám umožňuje jednoducho odkazovať na pin pripojený k dátovému vodiču DHT11 v celom kóde.
#include "DHT.h"
#define DHTPIN 14 // Nastavte pin pripojený k dátovému pinu DHT11
#define DHTTYPE DHT11 // DHT 11
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(115200);
dht.begin();
}
Vo funkcii setup() inicializujeme sériovú komunikáciu pre ladenie a spustíme DHT senzor. Hlavná slučka obsahuje oneskorenie 2 sekundy, aby sme zabezpečili, že senzor nepreťažíme požiadavkami.
Ďalej čítame hodnoty vlhkosti a teploty pomocou float humidity = dht.readHumidity(); a float temperature = dht.readTemperature();. Tieto identifikátory ukladajú namerané hodnoty pre neskoršie použitie.
void loop() {
delay(2000);
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
}
Nakoniec skontrolujeme prípadné chyby čítania a vytlačíme hodnoty na sériový monitor pomocou Serial.print(). To nám umožňuje pozorovať hodnoty v reálnom čase.
if (isnan(humidity) || isnan(temperature)) {
Serial.println("Nepodarilo sa prečítať z DHT senzora!");
return;
}
Serial.print("Vlhkosť: ");
Serial.print(humidity);
Serial.print(" %\t");
Serial.print("Teplota: ");
Serial.print(temperature);
Serial.println(" *C");
V LCD kóde inicializujeme LCD a zobrazíme teplotu a vlhkosť na obrazovke pomocou funkcie lcd.print(). To poskytuje vizuálnu reprezentáciu dát zozbieraných senzorom DHT11.
Demonštrácia / Čo očakávať
Keď je všetko správne zapojené a kód je nahraný do ESP32, mali by ste vidieť hodnoty teploty a vlhkosti zobrazené na sériovom monitore a LCD obrazovke. Ak teplota prekročí 30°C, bzučiak sa aktivuje a poskytne zvukový alarm.
Buďte opatrní pri obrátených pripojeniach a zaistite, aby senzor nebol vystavený extrémnym podmienkam, pretože to môže ovplyvniť namerané hodnoty. Možno budete musieť upraviť prah pre bzučiak podľa vašich požiadaviek (vo videu v čase 15:30).
Časové značky videa
- 00:00 Začiatok
- 1:57 Úvod k DHT11
- 6:18 Zapojenie DHT11 s ESP32
- 7:67 Vysvetlenie kódu pre Arduino
- 11:49 Výber dosky ESP32 a COM portu v Arduino IDE
- 13:30 Ukážka projektu
- 15:32 Získanie hodnoty vo Fahrenheitoch
- 16:04 Zobrazenie teploty na LCD pomocou ESP32
- 17:20 Kód pre DHT11 a LCD s ESP32
- 19:49 Ukážka DHT11 LCD s ESP32
- 21:33 Reakcia na hodnotu teploty
#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
Veci, ktoré by ste mohli potrebovať
-
AmazonPurchase DHT11 from Amazonamzn.to
-
BanggoodPurchase DHT11 module from Banggoodbanggood.com
Zdroje a referencie
-
DokumentáciaESP32 Tutorial 28/55 - SunFounder doc page for DHT temperature sensordocs.sunfounder.com
Súbory📁
Súbor Fritzing
-
DHT11 Humitidy and Temperature Sensor (3 pins)
DHT11 Humitidy and Temperature Sensor (3 pins).fzpz0.20 MB
Používateľská príručka
-
DHT11 User's Manual
robojax-DHT11_manual.pdf0.82 MB