Cari Kode

Tutorial ESP32 28/55 - Sensor Suhu DHT11 dengan LCD | Kit Pembelajaran IoT ESP32 SunFounder

Tutorial ESP32 28/55 - Sensor Suhu DHT11 dengan LCD | Kit Pembelajaran IoT ESP32 SunFounder

Dalam tutorial ini, kita akan mempelajari cara menghubungkan sensor suhu dan kelembapan DHT11 dengan mikrokontroler ESP32. Dengan menggunakan pengaturan ini, kita akan mengukur suhu dan kelembapan lingkungan sekitar, menampilkan hasilnya baik pada monitor serial maupun layar LCD. Selain itu, kita akan menerapkan buzzer yang aktif ketika suhu melebihi ambang batas tertentu.

ESP32-28_dht_temperature-sensor-main

Proyek ini tidak hanya menunjukkan penggunaan sensor DHT11, tetapi juga menampilkan fleksibilitas ESP32, yang dilengkapi dengan kemampuan Wi-Fi dan Bluetooth bawaan. Di akhir tutorial ini, Anda akan memiliki pengaturan yang berfungsi untuk terus memantau kondisi lingkungan dan memberikan umpan balik secara real-time.

Untuk panduan visual, lihat video yang menyertai tutorial ini (di video pada 00:00). Mari kita mulai!

Penjelasan Perangkat Keras

Komponen utama yang digunakan dalam proyek ini adalah mikrokontroler ESP32, sensor DHT11, dan layar LCD. ESP32 akan berfungsi sebagai otak dari operasi ini, memproses data dari sensor DHT11 dan mengontrol keluaran LCD.

Sensor DHT11 mengukur kelembapan dan suhu, memberikan pembacaan melalui satu jalur data. Sensor ini memerlukan catu daya 3,3V hingga 5,5V dan memiliki konsumsi arus yang rendah, sehingga cocok untuk aplikasi bertenaga baterai. LCD akan menampilkan nilai suhu dan kelembapan secara real-time.

Detail Datasheet

Produsen GROVE
Nomor komponen DHT11
Tegangan logika/IO 3,3 – 5,5 V
Tegangan catu daya 3,3 V
Arus keluaran (per saluran) 0,5 mA tipikal
Arus puncak (per saluran) 2,5 mA maks.
Panduan frekuensi PWM Tidak berlaku
Ambang logika masukan 0,3 VCC (rendah), 0,7 VCC (tinggi)
Penurunan tegangan / RDS(on) / saturasi Tidak berlaku
Batas termal 0°C hingga 60°C
Kemasan DIP-4
Catatan / varian Resolusi: 1°C / 1% RH

 

  • Gunakan resistor pull-up (5 kΩ yang disarankan) pada jalur data.
  • Jaga kabel sensor tetap pendek (kurang dari 20 m) untuk memastikan pembacaan yang akurat.
  • Berikan daya 3,3V pada DHT11 untuk kinerja optimal.
  • Periode pengambilan sampel tidak boleh kurang dari 1 detik.
  • Periksa koneksi kabel jika pembacaan gagal (misalnya, tidak terhubung, pin salah).

Instruksi Pengkabelan

ESP32-28_dht_temperature-sensor-wiring
DHT11_with_buzzer

Untuk menghubungkan sensor DHT11 ke ESP32, mulailah dengan menghubungkan pin VCC DHT11 (pin paling kiri) ke keluaran 3,3V ESP32. Selanjutnya, hubungkan pin ground (pin keempat) ke pin ground (GND) pada ESP32. Pin data (pin kedua) harus dihubungkan ke pin GPIO 14 pada ESP32.

Untuk LCD, hubungkan pin VCC ke keluaran 5V ESP32. Pin ground harus dihubungkan ke pin ground pada ESP32. Pin SDA dan SCL pada LCD harus dihubungkan ke pin GPIO 21 dan 22, masing-masing. Pastikan semua koneksi aman untuk menghindari masalah saat membaca data.

Contoh Kode & Penjelasan

Pada bagian pertama kode, kita menginisialisasi sensor DHT dan mengatur nomor pin dengan #define DHTPIN 14. Pengidentifikasi ini memungkinkan kita untuk dengan mudah merujuk pin yang terhubung ke jalur data DHT11 di seluruh kode.

#include "DHT.h"

#define DHTPIN 14  // Mengatur pin yang terhubung ke pin data DHT11
#define DHTTYPE DHT11 // DHT 11 
DHT dht(DHTPIN, DHTTYPE);

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

Dalam fungsi setup(), kita menginisialisasi komunikasi serial untuk debugging dan memulai sensor DHT. Loop utama mencakup penundaan 2 detik untuk memastikan kita tidak membebani sensor dengan permintaan.

Selanjutnya, kita membaca nilai kelembapan dan suhu menggunakan float humidity = dht.readHumidity(); dan float temperature = dht.readTemperature();. Pengidentifikasi ini menyimpan nilai yang diukur untuk digunakan nanti.

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

Terakhir, kita memeriksa adanya kesalahan pembacaan dan mencetak nilai ke monitor serial menggunakan Serial.print(). Ini memungkinkan kita untuk mengamati pembacaan secara real-time.

if (isnan(humidity) || isnan(temperature)) {
  Serial.println("Gagal membaca dari sensor DHT!");
  return;
}
Serial.print("Kelembapan: "); 
Serial.print(humidity);
Serial.print(" %\t");
Serial.print("Suhu: "); 
Serial.print(temperature);
Serial.println(" *C");

Dalam kode LCD, kita menginisialisasi LCD dan menampilkan suhu serta kelembapan di layar menggunakan fungsi lcd.print(). Ini memberikan representasi visual dari data yang dikumpulkan oleh sensor DHT11.

Demonstrasi / Apa yang Diharapkan

Setelah semuanya terhubung dengan benar dan kode diunggah ke ESP32, Anda akan melihat pembacaan suhu dan kelembapan ditampilkan di monitor serial dan layar LCD. Jika suhu melebihi 30°C, buzzer akan aktif, memberikan peringatan yang dapat didengar.

Berhati-hatilah terhadap koneksi yang terbalik dan pastikan sensor tidak terkena kondisi ekstrem, karena hal ini dapat memengaruhi pembacaan. Anda mungkin perlu menyesuaikan ambang batas untuk buzzer tergantung pada kebutuhan Anda (di video pada menit 15:30).

Stempel Waktu Video

  • 00:00 Mulai
  • 1:57 Pengenalan DHT11
  • 6:18 Menghubungkan DHT11 dengan ESP32
  • 7:67 Penjelasan Kode Arduino
  • 11:49 Memilih board ESP32 dan port COM di Arduino IDE
  • 13:30 Demonstrasi proyek
  • 15:32 Mendapatkan Fahrenheit
  • 16:04 Menampilkan suhu pada LCD menggunakan ESP32
  • 17:20 Kode DHT11 dan LCD dengan ESP32
  • 19:49 Demo DHT11 LCD dengan ESP32
  • 21:33 Mengambil tindakan pada nilai suhu

Gambar

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

Hal-hal yang mungkin Anda butuhkan

Sumber daya & referensi

Berkas📁

File Fritzing

Panduan Pengguna