#define BLYNK_TEMPLATE_ID "TMPL6tDc_WYHI"
#define BLYNK_TEMPLATE_NAME "Keamanan Pintu"
#define BLYNK_AUTH_TOKEN "_EkIC6enYr4p8pnQkorm8vpqRxGjtgcU"
#include <BlynkSimpleEsp32.h>
#include <WiFi.h>
#include <WiFiClient.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define sirine 15
#define relay 2
const int buttonPin1 = 32;
const int buttonPin2 = 33;
int buttonState1 = 0;
int buttonState2 = 0;
const int laser = 12;
const float GAMMA = 0.7;
const float RL10 = 50;
LiquidCrystal_I2C lcd(0x27, 16, 2);
int ldrPin = 34;
int ldrVal = 0;
int SW_relay = 0;
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
BLYNK_WRITE(V0)
{
SW_relay = param.asInt();
if (SW_relay ==1){
digitalWrite(relay, HIGH);
Serial.println("Terkunci");
Blynk.virtualWrite(V0, HIGH);
delay(1000);
}
else{
digitalWrite(relay, LOW);
Serial.println("Terbuka");
Blynk.virtualWrite(V0, LOW);
delay(1000);
}
}
BLYNK_CONNECTED() {
Blynk.syncAll();
}
void setup() {
Serial.begin(115200);
Blynk.begin(auth, ssid, pass);
pinMode(relay, OUTPUT);
pinMode(laser, OUTPUT);
pinMode(buttonPin1, INPUT_PULLUP);
pinMode(buttonPin2, INPUT_PULLUP);
pinMode(sirine, OUTPUT);
digitalWrite(sirine, LOW);
digitalWrite(laser, HIGH);
digitalWrite(relay, LOW);
lcd.init();
lcd.backlight();
}
void loop() {
delay(1000);
Blynk.run();
ldrVal = analogRead(ldrPin);
float voltage = ldrVal * (3.3 / 4095.0);
float resistance = 2000 * voltage / (3.3 - voltage);
float lux = pow(RL10 * 1e3 * pow(10, GAMMA) / resistance, (1 / GAMMA));
buttonState1 = digitalRead(buttonPin1);
buttonState2 = digitalRead(buttonPin2);
if (lux < 1500) {
Blynk.logEvent("ldr","Ada Pencuri....!!!");
digitalWrite(sirine, HIGH);
delay(2000);
} else {
digitalWrite(sirine, LOW);
}
if (buttonState1 == LOW) {
Blynk.logEvent("tombol","Ada tamu");
lcd.clear();
lcd.setCursor(0, 1);
lcd.print("Tunggu sebentar");
delay(2000);
} else if (buttonState2 == LOW) {
Blynk.logEvent("tombol","Ada tamu");
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Mohon maaf,");
delay(2000);
lcd.setCursor(0, 0);
lcd.print("penghuni rumah");
lcd.setCursor(0, 1);
lcd.print("sedang pergi ");
delay(2000);
lcd.setCursor(0, 0);
lcd.print("Hubungi nomor:");
lcd.setCursor(0, 1);
lcd.print("08xx-xxxx-xxxx");
delay(10000);
} else {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Selamat Datang");
delay(2000);
}
}