Sensor DHT22 (juga dikenal sebagai AM2302) adalah sensor digital yang digunakan untuk mengukur suhu dan kelembaban udara.Berikut adalah cara memprogramnyaa :
#include <Arduino.h>
#include "DHTesp.h"
const int dht22_esp_PIN = 4;
DHTesp dht22_esp;
float baca_suhu_dht22_esp() {
TempAndHumidity data = dht22_esp.getTempAndHumidity();
return data.temperature;
}
float baca_kelembaban_dht22_esp() {
TempAndHumidity data = dht22_esp.getTempAndHumidity();
return data.humidity;
}
void setup()
{
Serial.begin(9600);
dht22_esp.setup(dht22_esp_PIN, DHTesp::DHT22);
}
void loop(){
float suhu_dht22_esp = baca_suhu_dht22_esp();
float kelembaban_dht22_esp = baca_kelembaban_dht22_esp();
if (isnan(suhu_dht22_esp) || isnan(kelembaban_dht22_esp)) {
Serial.println("Gagal membaca sensor DHT22!");
} else {
// Menampilkan data kelembaban dan suhu
Serial.print("Kelembaban dht22_esp : ");
Serial.print(kelembaban_dht22_esp);
Serial.print("% ");
Serial.print("Suhu dht22_esp : ");
Serial.print(suhu_dht22_esp);
Serial.println("°C");
}
}
Berikut ini adalah penjelasan dari kode di atas :
Tujuan Kode
Membaca data suhu dan kelembaban dari sensor DHT22 yang terhubung ke pin GPIO 4 pada ESP32, lalu menampilkannya ke Serial Monitor.
Penjelasan Tiap Bagian Kode
1. Library dan Inisialisasi
#include <Arduino.h>
#include "DHTesp.h"
Arduino.h
adalah pustaka dasar dari platform Arduino.DHTesp.h
adalah library khusus untuk ESP32/ESP8266 agar bisa membaca data dari sensor DHT dengan lebih stabil dan mudah.
2. Deklarasi Pin dan Objek Sensor
const int dht22_esp_PIN = 4;
DHTesp dht22_esp;
dht22_esp_PIN
adalah pin digital tempat sensor DHT22 dihubungkan (GPIO 4).dht22_esp
adalah objek dari classDHTesp
untuk mengakses metode sensor.
Fungsi Pembaca Sensor
a. Membaca Suhu:
float baca_suhu_dht22_esp() {
TempAndHumidity data = dht22_esp.getTempAndHumidity();
return data.temperature;
}
- Fungsi
getTempAndHumidity()
mengembalikan objekTempAndHumidity
yang berisi suhu dan kelembaban. data.temperature
memberikan nilai suhu (dalam °C).
b. Membaca Kelembaban:
float baca_kelembaban_dht22_esp() {
TempAndHumidity data = dht22_esp.getTempAndHumidity();
return data.humidity;
}
data.humidity
memberikan nilai kelembaban relatif (% RH).
Fungsi setup()
void setup() {
Serial.begin(9600);
dht22_esp.setup(dht22_esp_PIN, DHTesp::DHT22);
}
Serial.begin(9600)
memulai komunikasi serial.dht22_esp.setup(...)
menginisialisasi sensor DHT22 yang terhubung ke pin 4.
Fungsi loop()
void loop(){
float suhu_dht22_esp = baca_suhu_dht22_esp();
float kelembaban_dht22_esp = baca_kelembaban_dht22_esp();
- Memanggil fungsi untuk membaca suhu dan kelembaban, lalu menyimpannya dalam dua variabel.
if (isnan(suhu_dht22_esp) || isnan(kelembaban_dht22_esp)) {
Serial.println("Gagal membaca sensor DHT22!");
} else {
- Mengecek apakah hasil pembacaan valid (tidak
NaN
= Not a Number). Jika gagal, tampilkan pesan error.
Serial.print("Kelembaban dht22_esp : ");
Serial.print(kelembaban_dht22_esp);
Serial.print("% ");
Serial.print("Suhu dht22_esp : ");
Serial.print(suhu_dht22_esp);
Serial.println("°C");
- Menampilkan data kelembaban dan suhu ke Serial Monitor.
Catatan Tambahan
- Kode ini tidak memiliki
delay()
di dalamloop()
, sehingga sensor dibaca terlalu cepat dan bisa menyebabkan masalah karena DHT22 butuh waktu sekitar 2 detik antar pembacaan.
Solusi:
Tambahkan delay(2000);
di akhir loop()
:
delay(2000); // delay 2 detik agar pembacaan stabil
Rangkuman Fungsi
Fungsi | Tujuan |
---|---|
baca_suhu_dht22_esp() | Mengembalikan nilai suhu dari DHT22 |
baca_kelembaban_dht22_esp() | Mengembalikan kelembaban dari DHT22 |
setup() | Inisialisasi komunikasi serial dan sensor |
loop() | Menjalankan pembacaan & menampilkan data |
untuk diskusi bisa kontak dibawah ini :

Sosial media :