Samouczek ESP32 28/55 - Czujnik temperatury DHT11 z wyświetlaczem LCD | Zestaw do nauki IoT ESP32 od SunFounder
W tym samouczku pokażemy, jak podłączyć czujnik temperatury i wilgotności DHT11 do mikrokontrolera ESP32. Korzystając z tego zestawu, zmierzymy temperaturę otoczenia i wilgotność, wyświetlając wyniki zarówno na monitorze szeregowym, jak i na ekranie LCD. Dodatkowo zaimplementujemy brzęczyk, który aktywuje się, gdy temperatura przekroczy określony próg.
Ten projekt nie tylko demonstruje użycie czujnika DHT11, ale także pokazuje wszechstronność ESP32, który ma wbudowaną łączność Wi-Fi i Bluetooth. Po ukończeniu tego samouczka będziesz mieć działający układ, który stale monitoruje warunki środowiskowe i zapewnia informacje zwrotne w czasie rzeczywistym.
Aby uzyskać wizualny przewodnik, obejrzyj wideo towarzyszące temu samouczkowi (na wideo o 00:00). Zaczynajmy!
Objaśnienie sprzętu
Głównymi komponentami używanymi w tym projekcie są mikrokontroler ESP32, czujnik DHT11 i wyświetlacz LCD. ESP32 będzie pełnić rolę mózgu operacji, przetwarzając dane z czujnika DHT11 i sterując wyjściem LCD.
Czujnik DHT11 mierzy wilgotność i temperaturę, zapewniając odczyty przez pojedynczą linię danych. Wymaga zasilania od 3,3 V do 5,5 V i ma niski pobór prądu, co czyni go odpowiednim do zastosowań zasilanych bateryjnie. Wyświetlacz LCD będzie pokazywać wartości temperatury i wilgotności w czasie rzeczywistym.
Szczegóły z karty katalogowej
| Producent | GROVE |
|---|---|
| Numer części | DHT11 |
| Napięcie logiczne/IO | 3,3 – 5,5 V |
| Napięcie zasilania | 3,3 V |
| Prąd wyjściowy (na kanał) | 0,5 mA typ. |
| Prąd szczytowy (na kanał) | 2,5 mA maks. |
| Zalecenia dotyczące częstotliwości PWM | Nie dotyczy |
| Progi logiczne wejścia | 0,3 VCC (niski), 0,7 VCC (wysoki) |
| Spadek napięcia / RDS(on) / nasycenie | Nie dotyczy |
| Limity termiczne | 0°C do 60°C |
| Obudowa | DIP-4 |
| Uwagi / warianty | Rozdzielczość: 1°C / 1% RH |
- Użyj rezystora podciągającego (zalecane 5 kΩ) na linii danych.
- Trzymaj przewody czujnika krótkie (mniej niż 20 m), aby zapewnić dokładne odczyty.
- Zasilaj DHT11 napięciem 3,3 V dla optymalnej wydajności.
- Okres próbkowania nie powinien być krótszy niż 1 sekunda.
- Sprawdź połączenia przewodów, jeśli odczyty zawodzą (np. brak połączenia, nieprawidłowy pin).
Instrukcje podłączenia


Aby podłączyć czujnik DHT11 do ESP32, zacznij od połączenia pinu VCC czujnika DHT11 (najbardziej lewego pinu) z wyjściem 3,3 V ESP32. Następnie podłącz pin masy (czwarty pin) do pinu masy (GND) na ESP32. Pin danych (drugi pin) powinien być podłączony do pinu GPIO 14 na ESP32.
Dla wyświetlacza LCD podłącz pin VCC do wyjścia 5 V ESP32. Pin masy powinien być podłączony do pinu masy na ESP32. Piny SDA i SCL wyświetlacza LCD powinny być podłączone odpowiednio do pinów GPIO 21 i 22. Upewnij się, że wszystkie połączenia są pewne, aby uniknąć problemów podczas odczytu danych.
Przykłady kodu i omówienie
W pierwszej części kodu inicjalizujemy czujnik DHT i ustawiamy numer pinu za pomocą #define DHTPIN 14. Ten identyfikator pozwala nam łatwo odwoływać się do pinu podłączonego do linii danych DHT11 w całym kodzie.
#include "DHT.h"
#define DHTPIN 14 // Ustaw pin podłączony do pinu danych DHT11
#define DHTTYPE DHT11 // DHT 11
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(115200);
dht.begin();
}
W funkcji setup() inicjalizujemy komunikację szeregową do debugowania i uruchamiamy czujnik DHT. Główna pętla zawiera opóźnienie 2 sekund, aby zapewnić, że nie przeciążymy czujnika żądaniami.
Następnie odczytujemy wartości wilgotności i temperatury za pomocą float humidity = dht.readHumidity(); i float temperature = dht.readTemperature();. Te identyfikatory przechowują zmierzone wartości do późniejszego użycia.
void loop() {
delay(2000);
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
}
Na koniec sprawdzamy, czy nie wystąpiły błędy odczytu, i drukujemy wartości na monitorze szeregowym za pomocą Serial.print(). Pozwala nam to obserwować odczyty w czasie rzeczywistym.
if (isnan(humidity) || isnan(temperature)) {
Serial.println("Nie udało się odczytać z czujnika DHT!");
return;
}
Serial.print("Wilgotność: ");
Serial.print(humidity);
Serial.print(" %\t");
Serial.print("Temperatura: ");
Serial.print(temperature);
Serial.println(" *C");
W kodzie LCD inicjalizujemy wyświetlacz i pokazujemy temperaturę oraz wilgotność na ekranie za pomocą funkcji lcd.print(). Zapewnia to wizualną reprezentację danych zebranych przez czujnik DHT11.
Demonstracja / Czego się spodziewać
Po prawidłowym podłączeniu wszystkiego i wgraniu kodu do ESP32 powinieneś zobaczyć odczyty temperatury i wilgotności wyświetlane na monitorze szeregowym i ekranie LCD. Jeśli temperatura przekroczy 30°C, brzęczyk aktywuje się, zapewniając sygnał dźwiękowy.
Zachowaj ostrożność przy odwróconych połączeniach i upewnij się, że czujnik nie jest narażony na ekstremalne warunki, ponieważ może to wpłynąć na odczyty. Może być konieczne dostosowanie progu dla brzęczyka w zależności od Twoich wymagań (na wideo w 15:30).
Znaczniki czasowe wideo
- 00:00 Start
- 1:57 Wprowadzenie do DHT11
- 6:18 Podłączanie DHT11 z ESP32
- 7:67 Wyjaśnienie kodu Arduino
- 11:49 Wybór płytki ESP32 i portu COM w Arduino IDE
- 13:30 Demonstracja projektu
- 15:32 Uzyskiwanie temperatury w Fahrenheitach
- 16:04 Wyświetlanie temperatury na LCD za pomocą ESP32
- 17:20 Kod DHT11 i LCD z ESP32
- 19:49 Demo DHT11 LCD z ESP32
- 21:33 Podejmowanie działań na podstawie wartości temperatury
#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
Rzeczy, których możesz potrzebować
-
AmazonPurchase DHT11 from Amazonamzn.to
-
BanggoodPurchase DHT11 module from Banggoodbanggood.com
Zasoby i odniesienia
-
DokumentacjaESP32 Tutorial 28/55 - SunFounder doc page for DHT temperature sensordocs.sunfounder.com
Pliki📁
Plik Fritzing
-
DHT11 Humitidy and Temperature Sensor (3 pins)
DHT11 Humitidy and Temperature Sensor (3 pins).fzpz0.20 MB
Instrukcja obsługi
-
Podręcznik użytkownika DHT11
robojax-DHT11_manual.pdf0.82 MB