
Seberapa hangat kamarmu, dan apakah udaranya lembap atau kering? Sensor DHT11 mengukur suhu dan kelembapan, dan Arduino menulis nilainya di layar LCD dua baris, diperbarui setiap beberapa detik. Jika ada masalah dengan sensor, pesan error muncul; inilah langkah pertama menuju stasiun cuaca kecilmu sendiri.
Video
Skema rangkaian

Kode sumber
C++ (Arduino IDE)
1// ─────────────────────────────────────────
2// BlueGrays · bluegrays.com
3// Suhu dan Kelembapan dengan DHT11
4// ─────────────────────────────────────────
5// Sensor DHT11 mengukur suhu dan kelembapan ruangan; LCD I2C menampilkan
6// suhu di baris pertama dan kelembapan di baris kedua. Pembacaan
7// diperbarui setiap 2 s. Jika pembacaan gagal layar menampilkan "Sensor
8// Error!" (sensor gagal dibaca).
9//
10// Pin:
11// D3 -> Data DHT11
12// (resistor 10k antara data dan 5V, pull-up)
13// A4 -> SDA LCD
14// A5 -> SCL LCD
15// DHT11 dan LCD: VCC ke 5V, GND ke GND
16
17#include <LiquidCrystal_I2C.h>
18#include <Wire.h>
19#include <DHT.h>
20
21#define DHTPIN 3 // Pin data DHT11
22#define DHTTYPE DHT11 // Jenis sensor yang dipakai
23
24LiquidCrystal_I2C lcd(0x27, 16, 2); // Alamat I2C 0x27, LCD 16x2
25DHT dht(DHTPIN, DHTTYPE);
26
27void setup() {
28 dht.begin();
29 // Library modern lebih memilih init() daripada begin()
30 lcd.init();
31 lcd.backlight();
32}
33
34void loop() {
35 // Baca kelembapan dan suhu (C)
36 float humidity = dht.readHumidity();
37 float temperature = dht.readTemperature();
38
39 // Cek apakah pembacaan gagal
40 if (isnan(humidity) || isnan(temperature)) {
41 lcd.setCursor(0, 0);
42 lcd.print("Sensor Error! ");
43 return;
44 }
45
46 // Baris 1: suhu
47 lcd.setCursor(0, 0);
48 lcd.print("Temp: ");
49 lcd.print(temperature);
50 lcd.print((char)223); // Simbol derajat (°)
51 lcd.print("C ");
52
53 // Baris 2: kelembapan
54 lcd.setCursor(0, 1);
55 lcd.print("Humidity: %");
56 lcd.print((int)humidity); // Tampilkan sebagai bilangan bulat (45)
57 lcd.print(" "); // Spasi di akhir untuk menghapus data lama
58
59 delay(2000); // DHT11 lambat, 2 detik lebih stabil
60}
61
FAQ
Seberapa akurat pengukuran DHT11?
DHT11 mengukur suhu dengan akurasi ±2 °C dan kelembapan dengan akurasi ±5%, dan bekerja di rentang 0–50 °C. Untuk pengukuran yang lebih akurat, disarankan DHT22 (±0,5 °C) atau BME280.
Aku melihat "nan" atau pesan error di layar. Kenapa?
Sensor tidak bisa dibaca. Cek resistor pull-up 10 kΩ di pin data, jenis sensor (DHT11) di pengaturan library, dan pastikan kamu memberi jeda minimal 1–2 detik di antara pembacaan.
Kenapa bacaannya lambat diperbarui?
DHT11 paling banyak bisa mengukur sekali per detik. Mencoba membaca lebih sering menghasilkan nilai yang salah atau lama; disarankan memberi jeda 2 detik di antara pengukuran.
Bisakah aku menghitung suhu yang dirasakan?
Bisa, fungsi computeHeatIndex() di library DHT menghitung suhu yang dirasakan berdasarkan suhu dan kelembapan.
