ESP32 Tutorial 28/55 - DHT11 Temperatuursensor met LCD | SunFounder's ESP32 IoT-leerkit
In deze tutorial verkennen we hoe we de DHT11 temperatuur- en luchtvochtigheidssensor kunnen koppelen aan de ESP32-microcontroller. Met deze opstelling meten we de omgevingstemperatuur en luchtvochtigheid en tonen we de resultaten op zowel de seriële monitor als een LCD-scherm. Daarnaast implementeren we een zoemer die activeert wanneer de temperatuur een bepaalde drempel overschrijdt.
Dit project demonstreert niet alleen het gebruik van de DHT11-sensor, maar toont ook de veelzijdigheid van de ESP32, die ingebouwde Wi-Fi- en Bluetooth-mogelijkheden heeft. Aan het einde van deze tutorial heb je een werkende opstelling die continu omgevingsomstandigheden bewaakt en realtime feedback geeft.
Voor een visuele handleiding, bekijk de video die bij deze tutorial hoort (in video op 00:00). Laten we beginnen!
Hardware Uitgelegd
De belangrijkste componenten die in dit project worden gebruikt, zijn de ESP32-microcontroller, de DHT11-sensor en een LCD-display. De ESP32 fungeert als het brein van de operatie, verwerkt gegevens van de DHT11-sensor en stuurt de LCD-uitvoer aan.
De DHT11-sensor meet luchtvochtigheid en temperatuur en geeft metingen via een enkele datalijn. Hij vereist een voedingsspanning van 3,3V tot 5,5V en heeft een laag stroomverbruik, waardoor hij geschikt is voor batterijgevoede toepassingen. Het LCD-scherm toont de temperatuur- en luchtvochtigheidswaarden in realtime.
Datasheet Details
| Fabrikant | GROVE |
|---|---|
| Onderdeelnummer | DHT11 |
| Logica/IO-spanning | 3,3 – 5,5 V |
| Voedingsspanning | 3,3 V |
| Uitgangsstroom (per kanaal) | 0,5 mA typ. |
| Piekstroom (per kanaal) | 2,5 mA max. |
| PWM-frequentierichtlijn | N/B |
| Ingangslogische drempels | 0,3 VCC (laag), 0,7 VCC (hoog) |
| Spanningsval / RDS(on) / verzadiging | Niet van toepassing |
| Thermische limieten | 0°C tot 60°C |
| Behuizing | DIP-4 |
| Opmerkingen / varianten | Resolutie: 1°C / 1% RV |
- Gebruik een pull-up weerstand (5 kΩ aanbevolen) op de datalijn.
- Houd sensor draden kort (minder dan 20 m) om nauwkeurige metingen te garanderen.
- Voed de DHT11 met 3,3V voor optimale prestaties.
- De bemonsteringsperiode mag niet minder dan 1 seconde zijn.
- Controleer de bedrading als metingen mislukken (bijv. niet aangesloten, verkeerde pin).
Bedradingsinstructies


Om de DHT11-sensor op de ESP32 aan te sluiten, begin je met het verbinden van de VCC-pin van de DHT11 (de meest linkse pin) met de 3,3V-uitgang van de ESP32. Verbind vervolgens de aardingspin (de vierde pin) met een aardingspin (GND) op de ESP32. De datapin (de tweede pin) moet worden verbonden met GPIO-pin 14 op de ESP32.
Voor het LCD-scherm, verbind de VCC-pin met de 5V-uitgang van de ESP32. De aardingspin moet worden verbonden met een aardingspin op de ESP32. De SDA- en SCL-pinnen van het LCD-scherm moeten respectievelijk worden verbonden met GPIO-pinnen 21 en 22. Zorg ervoor dat alle verbindingen stevig zijn om problemen bij het lezen van gegevens te voorkomen.
Codevoorbeelden & Uitleg
In het eerste deel van de code initialiseren we de DHT-sensor en stellen we het pinnummer in met #define DHTPIN 14. Deze identifier stelt ons in staat om gemakkelijk naar de pin te verwijzen die is verbonden met de DHT11-datalijn in de hele code.
#include "DHT.h"
#define DHTPIN 14 // Stel de pin in die is verbonden met de DHT11-datapin
#define DHTTYPE DHT11 // DHT 11
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(115200);
dht.begin();
}
In de setup()-functie initialiseren we seriële communicatie voor debugging en starten we de DHT-sensor. De hoofdloop bevat een vertraging van 2 seconden om ervoor te zorgen dat we de sensor niet overweldigen met verzoeken.
Vervolgens lezen we de luchtvochtigheids- en temperatuurwaarden met float humidity = dht.readHumidity(); en float temperature = dht.readTemperature();. Deze identifiers slaan de gemeten waarden op voor later gebruik.
void loop() {
delay(2000);
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
}
Tot slot controleren we op leesfouten en printen we de waarden naar de seriële monitor met Serial.print(). Dit stelt ons in staat om de metingen in realtime te observeren.
if (isnan(humidity) || isnan(temperature)) {
Serial.println("Kan niet lezen van DHT-sensor!");
return;
}
Serial.print("Luchtvochtigheid: ");
Serial.print(humidity);
Serial.print(" %\t");
Serial.print("Temperatuur: ");
Serial.print(temperature);
Serial.println(" *C");
In de LCD-code initialiseren we het LCD-scherm en tonen we de temperatuur en luchtvochtigheid op het scherm met de lcd.print()-functie. Dit biedt een visuele weergave van de gegevens die door de DHT11-sensor zijn verzameld.
Demonstratie / Wat te Verwachten
Zodra alles correct is bedraad en de code naar de ESP32 is geüpload, zou je de temperatuur- en luchtvochtigheidsmetingen op de seriële monitor en het LCD-scherm moeten zien. Als de temperatuur 30°C overschrijdt, activeert de zoemer en geeft een hoorbaar alarm.
Wees voorzichtig met omgekeerde aansluitingen en zorg ervoor dat de sensor niet wordt blootgesteld aan extreme omstandigheden, aangezien dit de metingen kan beïnvloeden. Mogelijk moet u de drempelwaarde voor de zoemer aanpassen aan uw vereisten (in video op 15:30).
Videotijdstippen
- 00:00 Start
- 1:57 Introductie tot DHT11
- 6:18 Bedrading van DHT11 met ESP32
- 7:67 Arduino-code uitgelegd
- 11:49 ESP32-board en COM-poort selecteren in Arduino IDE
- 13:30 Projectdemonstratie
- 15:32 Fahrenheit verkrijgen
- 16:04 Temperatuur weergeven op LCD met ESP32
- 17:20 DHT11 en LCD met ESP32-code
- 19:49 DHT11 LCD-demo met ESP32
- 21:33 Actie ondernemen op temperatuurwaarde
#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
Dingen die je misschien nodig hebt
-
AmazonPurchase DHT11 from Amazonamzn.to
-
BanggoodPurchase DHT11 module from Banggoodbanggood.com
Hulpmiddelen en referenties
-
DocumentatieESP32 Tutorial 28/55- SunFounder doc page for DHT temperature sensordocs.sunfounder.com
Bestanden📁
Fritzing-bestand
-
DHT11 Humitidy and Temperature Sensor (3 pins)
DHT11 Humitidy and Temperature Sensor (3 pins).fzpz0.20 MB
Gebruikershandleiding
-
DHT11 Gebruikershandleiding
robojax-DHT11_manual.pdf0.82 MB