#define BLYNK_TEMPLATE_ID "TMPL6uh0GWPRp"
#define BLYNK_TEMPLATE_NAME "project job2"
#define BLYNK_AUTH_TOKEN "e1skhQ3IP-3N00Rb9yTShPvLX3uPOciK"
#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
#include <DHT.h>
// WiFi credentials
char ssid[] = "Redmi 10C";
char pass[] = "12345678";
// Pin configurations
#define LAMP_PIN 2 // Pin untuk relay lampu
#define DHT_PIN 4 // Pin untuk sensor DHT22
#define GAS_SENSOR_PIN 34 // Pin untuk sensor gas
#define TRIG_PIN 14 // Pin untuk sensor ultrasonik
#define ECHO_PIN 27 // Pin untuk sensor ultrasonik
DHT dht(DHT_PIN, DHT22); // Inisialisasi sensor DHT
int gasValue = 0; // Variabel untuk nilai sensor gas
long distance = 0; // Variabel untuk jarak sensor ultrasonik
// Blynk virtual pins
#define VPIN_LAMP_VGARAGE V0 // Virtual Pin untuk Lampu & Garasi
#define VPIN_TEMP V1 // Virtual Pin untuk Suhu
#define VPIN_HUMIDITY V2 // Virtual Pin untuk Kelembapan
#define VPIN_GAS V3 // Virtual Pin untuk Gas
#define VPIN_ALERT V4 // Virtual Pin untuk Sensor Jarak
void setup() {
// Mulai komunikasi Serial Monitor
Serial.begin(115200);
// Blynk Initialization
Serial.println("Connecting to WiFi...");
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
// Memeriksa status koneksi WiFi
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("Connected to WiFi");
Serial.println(WiFi.localIP()); // Menampilkan alamat IP yang diperoleh
// Pin modes
pinMode(LAMP_PIN, OUTPUT); // Relay Lampu
pinMode(TRIG_PIN, OUTPUT); // Sensor Ultrasonik
pinMode(ECHO_PIN, INPUT); // Sensor Ultrasonik
dht.begin(); // Memulai sensor DHT
}
void loop() {
Blynk.run(); // Menjalankan Blynk
// Membaca suhu dan kelembapan dari sensor DHT
float temp = dht.readTemperature();
float humidity = dht.readHumidity();
// Mengirim data suhu dan kelembapan ke Blynk
Blynk.virtualWrite(VPIN_TEMP, temp);
Blynk.virtualWrite(VPIN_HUMIDITY, humidity);
// Membaca nilai gas sensor dan mengirimkan ke Blynk
gasValue = analogRead(GAS_SENSOR_PIN);
Blynk.virtualWrite(VPIN_GAS, gasValue);
// Membaca jarak dari sensor ultrasonik dan mengirimkan ke Blynk
distance = measureDistance();
Blynk.virtualWrite(VPIN_ALERT, distance);
}
// Fungsi untuk mengukur jarak dengan sensor ultrasonik
long measureDistance() {
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
long duration = pulseIn(ECHO_PIN, HIGH);
return (duration * 0.034 / 2); // Menghitung jarak dalam cm
}
// Kontrol Lampu dan Garasi dengan Blynk
BLYNK_WRITE(VPIN_LAMP_VGARAGE) {
int value = param.asInt();
if (value < 50) { // Mengontrol lampu (nilai < 50 berarti hidupkan lampu)
digitalWrite(LAMP_PIN, HIGH); // Nyalakan lampu
Serial.println("Lampu menyala");
} else { // Mengontrol garasi (nilai >= 50 berarti buka garasi)
digitalWrite(LAMP_PIN, LOW); // Matikan lampu
Serial.println("Lampu mati");
}
}