#include <DHT.h>
#define DHTPIN 2 // Pin data DHT22 terhubung ke pin 4 pada ESP32
#define DHTTYPE DHT22 // Tipe sensor DHT yang digunakan
#define TRIGGER_PIN 5 // Pin trigger HC-SR04 terhubung ke pin 12 pada ESP32
#define ECHO_PIN 18 // Pin echo HC-SR04 terhubung ke pin 14 pada ESP32
#define RELAY_PIN 26 // Pin output yang terhubung ke relay
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);
dht.begin();
pinMode(TRIGGER_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(RELAY_PIN, OUTPUT); // Tentukan pin relay sebagai OUTPUT
}
void loop() {
// Membaca suhu dalam Celsius (default)
float temperature = dht.readTemperature();
// Membaca kelembaban relatif
float humidity = dht.readHumidity();
// Memeriksa apakah pembacaan berhasil atau tidak
if (isnan(temperature) || isnan(humidity)) {
Serial.println("Gagal membaca dari sensor DHT!");
return;
}
// Mencetak nilai suhu dan kelembaban
Serial.print("Suhu: ");
Serial.print(temperature);
Serial.print(" °C\t");
Serial.print("Kelembaban: ");
Serial.print(humidity);
Serial.println("%");
// Membaca jarak menggunakan sensor ultrasonik HC-SR04
digitalWrite(TRIGGER_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIGGER_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIGGER_PIN, LOW);
long duration = pulseIn(ECHO_PIN, HIGH);
// Mengubah waktu menjadi jarak (dalam cm)
float distance_cm = duration * 0.034 / 2;
// Mencetak jarak yang terdeteksi
Serial.print("Jarak: ");
Serial.print(distance_cm);
Serial.println(" cm");
// Kontrol relay berdasarkan suhu
if (temperature > 25) {
digitalWrite(RELAY_PIN, HIGH); // Hidupkan relay jika suhu melebihi 25°C
Serial.println("Relay: ON");
} else {
digitalWrite(RELAY_PIN, LOW); // Matikan relay jika suhu tidak melebihi 25°C
Serial.println("Relay: OFF");
}
delay(2000); // Delay untuk menjaga interval pembacaan sensor
}