Suhu dan Kelembapan DHT22 ESP32 (dengan Layar LCD)
Proyek ini mengukur suhu dan kelembapan sekitar dengan sensor DHT22 dan menampilkan datanya secara real-time di LCD I2C 16x2. Data dibaca dari sensor dengan protokol satu kabel lewat library Adafruit DHT. Proyek ini menjadi dasar untuk stasiun cuaca IoT, otomasi rumah pintar, atau sistem pemantauan lingkungan di rumah kaca. Komunikasi dengan DHT22 dilakukan lewat pin GPIO 4 ESP32.

Video
Skema rangkaian

Kode sumber
1// ─────────────────────────────────────────
2// BlueGrays · bluegrays.com
3// Suhu dan Kelembapan DHT22 ESP32 (dengan Layar LCD)
4// ─────────────────────────────────────────
5// Membaca suhu dan kelembapan dari DHT22 setiap 2 s dan menampilkannya di
6// LCD I2C 16x2. Jika pembacaan gagal, layar menampilkan peringatan
7// pengkabelan dan pull-up.
8//
9// Pin:
10// GPIO 4 -> DATA DHT22
11// Pull-up 10k antara DATA dan VCC
12// GPIO 21 -> SDA LCD, GPIO 22 -> SCL LCD
13// DHT22 VCC -> 3V3, VCC LCD -> 5V (VIN)
14// Semua GND disambung bersama
15
16#include <Wire.h>
17#include <LiquidCrystal_I2C.h>
18#include <DHT.h>
19
20// Definisi pin
21const int DHT_PIN = 4;
22#define DHT_TYPE DHT22
23
24DHT dht(DHT_PIN, DHT_TYPE);
25
26// Alamat LCD 0x27 atau 0x3F
27LiquidCrystal_I2C lcd(0x27, 16, 2);
28
29// DHT22 butuh minimal 2 s antar pembacaan
30const unsigned long READ_INTERVAL = 2000;
31unsigned long lastRead = 0;
32
33void setup() {
34 // Pin I2C default DevKit V1
35 Wire.begin(21, 22);
36 lcd.init();
37 lcd.backlight();
38
39 // Layar pembuka 3 s
40 lcd.setCursor(3, 0);
41 lcd.print("BlueGrays");
42 lcd.setCursor(3, 1);
43 lcd.print("DHT22 v1.0");
44 delay(3000);
45 lcd.clear();
46
47 dht.begin();
48}
49
50void loop() {
51 // Baca setiap 2 s tanpa delay()
52 if (millis() - lastRead >= READ_INTERVAL) {
53 lastRead = millis();
54
55 float h = dht.readHumidity();
56 float t = dht.readTemperature();
57
58 lcd.clear();
59
60 // NaN = masalah pengkabelan/pullup
61 if (isnan(h) || isnan(t)) {
62 lcd.setCursor(0, 0);
63 lcd.print("Sensor okunamadi");
64 lcd.setCursor(0, 1);
65 lcd.print("Kablo+10k pullup");
66 } else {
67 // Suhu
68 lcd.setCursor(0, 0);
69 lcd.print("Sicaklik:");
70 lcd.print(t, 1);
71 lcd.print("C");
72 // Kelembapan, DHT22 memberi angka desimal
73 lcd.setCursor(0, 1);
74 lcd.print("Nem :");
75 lcd.print(h, 1);
76 lcd.print("%");
77 }
78 }
79}
80
FAQ
Apa beda DHT22 dan DHT11?
DHT22 lebih akurat (±0,5 °C, kelembapan ±2–5%), mengukur rentang yang lebih lebar (−40 sampai 80 °C), dan punya resolusi 0,1. DHT11 lebih murah tetapi terbatas pada ±2 °C dan resolusi bilangan bulat.
Apakah resistor pull-up 10 kΩ diperlukan?
Resistor pull-up 10 kΩ diperlukan untuk jalur data pada sensor DHT22 telanjang. Pada modul 3 pin yang terpasang di papan, resistornya biasanya sudah ada.
LCD 5 V, ESP32 3,3 V; apakah keduanya bisa bekerja bersama?
Modul LCD I2C menghasilkan gambar yang lebih jelas di 5 V. Jika resistor pull-up di jalur SDA/SCL modul yang diberi daya 5 V tersambung ke 5 V, memakai level shifter adalah cara paling aman; meskipun banyak orang menyambungkannya langsung, cara itu mendorong ESP32 sampai batasnya.
Bisakah aku mengirim datanya lewat internet?
Bisa, kamu bisa memakai Wi-Fi ESP32 untuk mengirim pengukuran ke ThingSpeak, Blynk, atau server-mu sendiri dan melihat grafiknya di ponsel.
