Search Code

ESP32 Eğitimi 28/55 - DHT11 Sıcaklık Sensörü ile LCD | SunFounder'ın ESP32 IoT Öğrenme Kiti

ESP32 Eğitimi 28/55 - DHT11 Sıcaklık Sensörü ile LCD | SunFounder'ın ESP32 IoT Öğrenme Kiti

Bu eğitimde, DHT11 sıcaklık ve nem sensörünü ESP32 mikrodenetleyicisiyle nasıl arayüzleyeceğimizi keşfedeceğiz. Bu kurulumu kullanarak ortam sıcaklığını ve nemini ölçecek, sonuçları hem seri monitörde hem de bir LCD ekranda görüntüleyeceğiz. Ayrıca, sıcaklık belirli bir eşiği aştığında etkinleşen bir buzzer uygulayacağız.

ESP32-28_dht_temperature-sensor-main

Bu proje yalnızca DHT11 sensörünün kullanımını göstermekle kalmaz, aynı zamanda yerleşik Wi-Fi ve Bluetooth özelliklerini içeren ESP32'nin çok yönlülüğünü de sergiler. Bu eğitimin sonunda, çevresel koşulları sürekli izleyen ve gerçek zamanlı geri bildirim sağlayan çalışan bir kuruluma sahip olacaksınız.

Görsel bir rehber için, bu eğitime eşlik eden videoyu izleyin (videoda 00:00'da). Hadi başlayalım!

Donanım Açıklaması

Bu projede kullanılan ana bileşenler ESP32 mikrodenetleyicisi, DHT11 sensörü ve bir LCD ekrandır. ESP32, DHT11 sensöründen gelen verileri işleyerek ve LCD çıktısını kontrol ederek işlemin beyni olarak görev yapacaktır.

DHT11 sensörü, tek bir veri hattı üzerinden okumalar sağlayarak nemi ve sıcaklığı ölçer. 3.3V ile 5.5V arasında bir güç kaynağı gerektirir ve düşük akım tüketimine sahiptir, bu da onu pille çalışan uygulamalar için uygun hale getirir. LCD, sıcaklık ve nem değerlerini gerçek zamanlı olarak görüntüleyecektir.

Veri Sayfası Detayları

Üretici GROVE
Parça numarası DHT11
Mantık/G/Ç voltajı 3.3 – 5.5 V
Besleme voltajı 3.3 V
Çıkış akımı (kanal başına) 0.5 mA tip.
Tepe akımı (kanal başına) 2.5 mA maks.
PWM frekans kılavuzu Yok
Giriş mantık eşikleri 0.3 VCC (düşük), 0.7 VCC (yüksek)
Gerilim düşümü / RDS(on) / doyum Uygulanamaz
Termal sınırlar 0°C ila 60°C
Paket DIP-4
Notlar / varyantlar Çözünürlük: 1°C / %1 RH

 

  • Veri hattında bir pull-up direnci (5 kΩ önerilir) kullanın.
  • Doğru okumalar sağlamak için sensör kablolarını kısa tutun (20 m'den az).
  • Optimum performans için DHT11'i 3.3V ile besleyin.
  • Örnekleme periyodu 1 saniyeden az olmamalıdır.
  • Okumalar başarısız olursa kablo bağlantılarını kontrol edin (örn. bağlı değil, yanlış pin).

Bağlantı Talimatları

ESP32-28_dht_temperature-sensor-wiring
DHT11_with_buzzer

DHT11 sensörünü ESP32'ye bağlamak için, DHT11'in VCC pinini (en soldaki pin) ESP32'nin 3.3V çıkışına bağlayarak başlayın. Ardından, toprak pinini (dördüncü pin) ESP32 üzerindeki bir toprak (GND) pinine bağlayın. Veri pini (ikinci pin) ESP32 üzerindeki GPIO pin 14'e bağlanmalıdır.

LCD için, VCC pinini ESP32'nin 5V çıkışına bağlayın. Toprak pini, ESP32 üzerindeki bir toprak pinine bağlanmalıdır. LCD'nin SDA ve SCL pinleri sırasıyla GPIO pin 21 ve 22'ye bağlanmalıdır. Veri okurken herhangi bir sorun yaşamamak için tüm bağlantıların güvenli olduğundan emin olun.

Kod Örnekleri ve Açıklama

Kodun ilk bölümünde, DHT sensörünü başlatıyor ve pin numarasını #define DHTPIN 14 ile ayarlıyoruz. Bu tanımlayıcı, kod boyunca DHT11 veri hattına bağlı pini kolayca referans almamızı sağlar.

#include "DHT.h"

#define DHTPIN 14  // DHT11 veri pinine bağlı pini ayarla
#define DHTTYPE DHT11 // DHT 11 
DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(115200);
  dht.begin();
}

setup() fonksiyonunda, hata ayıklama için seri iletişimi başlatıyor ve DHT sensörünü başlatıyoruz. Ana döngü, sensörü isteklerle boğmamak için 2 saniyelik bir gecikme içerir.

Ardından, float humidity = dht.readHumidity(); ve float temperature = dht.readTemperature(); kullanarak nem ve sıcaklık değerlerini okuyoruz. Bu tanımlayıcılar, ölçülen değerleri daha sonra kullanmak üzere saklar.

void loop() {
  delay(2000);
  float humidity = dht.readHumidity();
  float temperature = dht.readTemperature();
}

Son olarak, herhangi bir okuma hatası olup olmadığını kontrol ediyor ve Serial.print() kullanarak değerleri seri monitöre yazdırıyoruz. Bu, okumaları gerçek zamanlı olarak gözlemlememizi sağlar.

if (isnan(humidity) || isnan(temperature)) {
  Serial.println("DHT sensöründen okuma başarısız!");
  return;
}
Serial.print("Nem: "); 
Serial.print(humidity);
Serial.print(" %\t");
Serial.print("Sıcaklık: "); 
Serial.print(temperature);
Serial.println(" *C");

LCD kodunda, LCD'yi başlatıyor ve lcd.print() fonksiyonunu kullanarak sıcaklık ve nemi ekranda görüntülüyoruz. Bu, DHT11 sensörü tarafından toplanan verilerin görsel bir temsilini sağlar.

Gösterim / Beklentiler

Her şey doğru şekilde bağlandığında ve kod ESP32'ye yüklendiğinde, sıcaklık ve nem okumalarının seri monitörde ve LCD ekranda görüntülendiğini görmelisiniz. Sıcaklık 30°C'yi aşarsa, buzzer etkinleşerek sesli bir uyarı sağlayacaktır.

Ters bağlantılara dikkat edin ve sensörün aşırı koşullara maruz kalmadığından emin olun, çünkü bu okumaları etkileyebilir. Gereksinimlerinize bağlı olarak buzzer için eşik değerini ayarlamanız gerekebilir (videoda 15:30'da).

Video Zaman Damgaları

  • 00:00 Başlangıç
  • 1:57 DHT11'e Giriş
  • 6:18 DHT11'in ESP32 ile Bağlanması
  • 7:67 Arduino Kodu Açıklaması
  • 11:49 Arduino IDE'de ESP32 kartı ve COM portunun seçilmesi
  • 13:30 Proje gösterimi
  • 15:32 Fahrenheit Değerini Alma
  • 16:04 ESP32 kullanarak sıcaklığı LCD'de görüntüleme
  • 17:20 ESP32 ile DHT11 ve LCD kodu
  • 19:49 ESP32 ile DHT11 LCD gösterimi
  • 21:33 Sıcaklık değerine göre işlem yapma

Görseller

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
Dil: 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
Dil: 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("%");
}

İhtiyacın olabileceğini düşünüyor

Kaynaklar ve referanslar

Dosyalar📁

Fritzing Dosyası

Kullanım Kılavuzu