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.
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


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
#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
Hal-hal yang mungkin Anda butuhkan
-
AmazonPurchase DHT11 from Amazonamzn.to
-
BanggoodPurchase DHT11 module from Banggoodbanggood.com
Sumber daya & referensi
-
DokumentasiESP32 Tutorial 28/55 - SunFounder doc page for DHT temperature sensordocs.sunfounder.com
Berkas📁
File Fritzing
-
DHT11 Humitidy and Temperature Sensor (3 pins)
DHT11 Humitidy and Temperature Sensor (3 pins).fzpz0.20 MB
Panduan Pengguna
-
Manual Pengguna DHT11
robojax-DHT11_manual.pdf0.82 MB