#define BLYNK_TEMPLATE_ID "TMPL6RWJxSm6Z"
#define BLYNK_TEMPLATE_NAME "IoT Suhu"
#define BLYNK_AUTH_TOKEN "8b34idfR-PMLBcq0JOWSVZNprhM9zrTm"
#define LEDM 5 // Definisi pin untuk LED Merah
#define LEDB 12 // Definisi pin untuk LED Biru
#define LEDK 14 // Definisi pin untuk LED Kuning
#define PIR 18 // Definisi pin untuk sensor PIR
#define DHT22_PIN 27 // Definisi pin untuk sensor DHT22
#include <DHT.h>
#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
#include <FirebaseClient.h>
#define DHTTYPE DHT22 // Tipe sensor yang digunakan adalah DHT22
DHT dht(DHT22_PIN, DHTTYPE);
char auth[] = BLYNK_AUTH_TOKEN; // Blynk Auth Token
char ssid[] = "Wokwi-GUEST"; // Nama WiFi
char pass[] = ""; // Password WiFi
void setup() {
pinMode(LEDM, OUTPUT);
pinMode(LEDB, OUTPUT);
pinMode(LEDK, OUTPUT);
pinMode(PIR, INPUT);
Serial.begin(9600);
dht.begin();
Blynk.begin(auth, ssid, pass); // Memulai koneksi Blynk
}
void loop() {
Blynk.run(); // Menjalankan Blynk
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
bool pirState = digitalRead(PIR);
// Mengendalikan LED Merah berdasarkan sensor PIR
if (pirState) {
digitalWrite(LEDM, HIGH); // LED Merah menyala
Blynk.virtualWrite(V1, 1); // Mengirimkan status LED Merah ke Blynk
Serial.println("Keberadaan objek terdeteksi");
} else {
digitalWrite(LEDM, LOW); // LED Merah mati
Blynk.virtualWrite(V1, 0); // Mengirimkan status LED Merah ke Blynk
Serial.println("Tidak ada objek terdeteksi");
}
// Mengendalikan LED Kuning dan Biru berdasarkan suhu
if (temperature < 20) {
digitalWrite(LEDK, HIGH); // LED Kuning menyala
digitalWrite(LEDB, LOW); // LED Biru mati
} else {
digitalWrite(LEDB, HIGH); // LED Biru menyala
digitalWrite(LEDK, LOW); // LED Kuning mati
}
// Mengirimkan suhu dan kelembapan ke Blynk
Blynk.virtualWrite(V3, temperature);
Blynk.virtualWrite(V2, humidity);
// Menampilkan hasil deteksi suhu dan kelembapan di Serial Monitor
Serial.print("Suhu: ");
Serial.print(temperature);
Serial.println(" °C");
Serial.print("Kelembapan: ");
Serial.print(humidity);
Serial.println(" %");
// Tunggu 1 detik sebelum mengulang kembali
delay(1000);
}