Search Code

ESP32 Tutorial 28/55 - DHT11 Temperatuursensor met LCD | SunFounder's ESP32 IoT-leerkit

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.

ESP32-28_dht_temperatuursensor-hoofd

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

ESP32-28_dht_temperature-sensor-wiring
DHT11_with_buzzer

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

Afbeeldingen

ESP32-28_dht_temperature-sensor-library
ESP32-28_dht_temperature-sensor-library
ESP32-28_dht_temperature-sensor-schematic
ESP32-28_dht_temperature-sensor-schematic
ESP32-28_dht_temperature-sensor-wiring
ESP32-28_dht_temperature-sensor-wiring
DHT11_with_buzzer
DHT11_with_buzzer
ESP32-28_dht_temperature-sensor-main
ESP32-28_dht_temperature-sensor-main
828-ESP32 Tutorial 28/55- Arduino code for DHT Temperature sensor
Taal: C++
#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");
}
829-ESP32 Tutorial 28/55- Arduino code for DHT Temperature sensor with LCD
Taal: 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("%");
}

Dingen die je misschien nodig hebt

Hulpmiddelen en referenties

Bestanden📁

Fritzing-bestand

Gebruikershandleiding