#define BLYNK_TEMPLATE_ID "TMPL6Z0oiQPRA"
#define BLYNK_TEMPLATE_NAME "Reynaldo Putra Abdi"
#define BLYNK_AUTH_TOKEN "wLjI23N3nc_O6_jIcL4RKdt2D7TPCguu"
#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
#include <Servo.h>
#include <DHT.h>
#include <Adafruit_Sensor.h>
#define LDR_PIN 34
#define SERVO_PIN 25
#define DHT_PIN 13
#define PIR_PIN 12
#define LED_PIN 4
Servo myservo;
DHT dht(DHT_PIN, DHT22);
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
BlynkTimer timer;
void setup() {
Serial.begin(115200);
Blynk.begin(auth, ssid, pass);
myservo.attach(SERVO_PIN);
dht.begin();
pinMode(PIR_PIN, INPUT);
pinMode(LED_PIN, OUTPUT);
timer.setInterval(1000L, sendSensorData); // Kirim data setiap 1 detik
}
void sendSensorData() {
int ldrValue = analogRead(LDR_PIN);
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
int pirValue = digitalRead(PIR_PIN);
// Sensor LDR mengontrol motor servo
int servoAngle = map(ldrValue, 0, 4095, 0, 180);
myservo.write(servoAngle);
// Sensor DHT mengirim suhu dan kelembaban ke Blynk
if (!isnan(humidity) && !isnan(temperature)) {
Blynk.virtualWrite(V1, temperature); // Widget Value Display V1
Blynk.virtualWrite(V2, humidity); // Widget Value Display V2
} else {
Serial.println("Gagal membaca data DHT.");
}
// Sensor PIR mengontrol LED
if (pirValue == HIGH) {
digitalWrite(LED_PIN, HIGH);
Blynk.virtualWrite(V3, "Gerakan Terdeteksi"); // Widget Terminal V3
} else {
digitalWrite(LED_PIN, LOW);
Blynk.virtualWrite(V3, "Tidak ada gerakan"); // Widget Terminal V3
}
}
void loop() {
Blynk.run();
timer.run();
}