Cara Memprogram Sensor Suhu DHT 22 Pada ESP32

Cara Memprogram Sensor Suhu DHT 22 Pada ESP32

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 class DHTesp 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 objek TempAndHumidity 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 dalam loop(), 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

FungsiTujuan
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 :

Apa itu ESP32?