#define BLYNK_TEMPLATE_ID "TMPL6tDc_WYHI"
#define BLYNK_TEMPLATE_NAME "Keamanan Pintu"
#define BLYNK_AUTH_TOKEN "_EkIC6enYr4p8pnQkorm8vpqRxGjtgcU"
#include <Wire.h>
#include <PCF8574.h>
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <LiquidCrystal_I2C.h>
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
const int buttonPin1 = 2;
const int buttonPin2 = 4;
int buttonState1 = 0;
int buttonState2 = 0;
const float GAMMA = 0.7;
const float RL10 = 50;
int ldrPin = 34;
int ldrVal = 0;
LiquidCrystal_I2C lcd(0x27, 16, 2);
PCF8574 pcf8574(0x20);
BLYNK_WRITE(V0) {
int pinValue = param.asInt();
if (pinValue == 1) {
pcf8574.digitalWrite(P0, LOW);
pcf8574.digitalWrite(P1, LOW);
pcf8574.digitalWrite(P2, LOW);
pcf8574.digitalWrite(P3, LOW);
Serial.println("Terkunci");
} else {
pcf8574.digitalWrite(P0, HIGH);
pcf8574.digitalWrite(P1, HIGH);
pcf8574.digitalWrite(P2, HIGH);
pcf8574.digitalWrite(P3, HIGH);
Serial.println("Terbuka");
}
}
BLYNK_CONNECTED() {
Blynk.syncAll();
}
void setup() {
Blynk.begin(auth, ssid, pass);
Serial.begin(9600);
Wire.begin();
pcf8574.begin();
lcd.init();
lcd.backlight();
pcf8574.pinMode(P0, OUTPUT);
pcf8574.pinMode(P1, OUTPUT);
pcf8574.pinMode(P2, OUTPUT);
pcf8574.pinMode(P3, OUTPUT);
pcf8574.pinMode(P4, OUTPUT);
pcf8574.pinMode(P5, OUTPUT);
pinMode(buttonPin1, INPUT_PULLUP);
pinMode(buttonPin2, INPUT_PULLUP);
pcf8574.digitalWrite(P0, LOW);
pcf8574.digitalWrite(P1, LOW);
pcf8574.digitalWrite(P2, LOW);
pcf8574.digitalWrite(P3, LOW);
pcf8574.digitalWrite(P4, HIGH);
pcf8574.digitalWrite(P5, LOW);
}
void loop() {
Blynk.run();
delay(1000);
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....!!!");
pcf8574.digitalWrite(P5, HIGH);
delay(2000);
} else {
pcf8574.digitalWrite(P5, 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);
}
}