#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
#include <DHT.h>
#include <ESP32Servo.h>
#define DHTPIN 5 // Pin DHT11
#define DHTTYPE DHT11 // Tipe DHT
#define TRIG_PIN 2 // Pin Trig Ultrasonik
#define ECHO_PIN 4 // Pin Echo Ultrasonik
#define LDR_PIN 34 // Pin LDR
#define SERVO_PIN 13 // Pin Servo
DHT dht(DHTPIN, DHTTYPE);
Servo windowServo;
#define BLYNK_TEMPLATE_ID "TMPL6zW5IkO3R"
#define BLYNK_TEMPLATE_NAME "SMART WINDOW"
#define BLYNK_AUTH_TOKEN "d-p44BSfj04fQTZFSyOdrCHwjhb1e4JV"
// Koneksi Wi-Fi
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
void setup() {
Serial.begin(115200);
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass); // Menghubungkan ke Blynk
dht.begin();
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
windowServo.attach(SERVO_PIN); // Menghubungkan motor servo
}
void loop() {
Blynk.run();
// Bacaan DHT11
float h = dht.readHumidity();
float t = dht.readTemperature();
// Bacaan LDR
int ldrValue = analogRead(LDR_PIN);
// Bacaan Ultrasonik
long duration, distance;
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
duration = pulseIn(ECHO_PIN, HIGH);
distance = (duration * 0.034) / 2; // Menghitung jarak dalam cm
// Kirim data ke Blynk
Blynk.virtualWrite(V0, h); // Kelembapan
Blynk.virtualWrite(V1, t); // Suhu
Blynk.virtualWrite(V2, ldrValue); // Nilai LDR
Blynk.virtualWrite(V3, distance); // Jarak
// Debugging
Serial.print("Suhu: ");
Serial.println(t);
Serial.print("Kelembapan: ");
Serial.println(h);
Serial.print("Nilai LDR: ");
Serial.println(ldrValue);
Serial.print("Jarak: ");
Serial.println(distance);
// Mengontrol motor servo berdasarkan jarak
if (distance < 30) { // Jika ada objek dalam jarak 30 cm
windowServo.write(0); // Tutup jendela
} else {
windowServo.write(90); // Buka jendela
}
delay(2000); // Pembacaan setiap 2 detik
}