#define BLYNK_PRINT Serial
#define BLYNK_TEMPLATE_ID "TMPL6Y_nCuBKe"
#define BLYNK_TEMPLATE_NAME "UASRIFKI"
#define BLYNK_AUTH_TOKEN "pU61Z0DgP_whB9S7PS56kyBMxYALKn9Y"
#include <ESP32Servo.h>
#include <Keypad.h>
#include <DHT.h>
#include <BlynkSimpleEsp32.h>
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
#define DHTPIN 4
#define DHTTYPE DHT22
const int trigPin = 2;
const int echoPin = 3;
const int servoPin = 5;
const int buzzerPin = 4;
Servo portalServo;
const byte ROWS = 4;
const byte COLS = 4;
char keys[ROWS][COLS] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte rowPins[ROWS] = {34, 35, 32, 33};
byte colPins[COLS] = {16, 17, 18, 19};
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(115200);
dht.begin();
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(buzzerPin, OUTPUT);
portalServo.attach(servoPin);
portalServo.write(90);
// Koneksi ke WiFi
WiFi.begin(ssid, pass);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("WiFi connected");
// Koneksi ke Blynk
Blynk.begin(auth, ssid, pass);
}
void loop() {
long duration, distance;
// Mengirim sinyal ultrasonik
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Menerima waktu pantulan
duration = pulseIn(echoPin, HIGH);
// Menghitung jarak dalam cm
distance = duration * 0.034 / 2;
Serial.print("Jarak: ");
Serial.print(distance);
Serial.println(" cm");
// Jika mobil mendekati portal, buka dan tutup otomatis
if (distance < 50) {
Serial.println("Mobil mendekati, membuka portal.");
openPortal();
delay(5000); // Tunggu 5 detik sebelum menutup portal
closePortal();
}
// Cek input dari keypad
char key = keypad.getKey();
if (key != NO_KEY) {
checkPassword(key);
}
// Baca suhu dan kelembaban dari sensor DHT22
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
// Print data suhu dan kelembaban pada Serial Monitor
Serial.print("Suhu: ");
Serial.print(temperature);
Serial.print(" C, Kelembaban: ");
Serial.print(humidity);
Serial.println(" %");
// Kirim data suhu dan kelembaban ke Blynk
Blynk.virtualWrite(V1, temperature);
Blynk.virtualWrite(V2, humidity);
Blynk.run();
delay(1000); // Tunggu 1 detik sebelum membaca sensor lagi
}
void openPortal() {
portalServo.write(0);
}
void closePortal() {
portalServo.write(90);
}
void checkPassword(char key) {
static char password[] = "1234";
static byte index = 0;
if (key == password[index]) {
index++;
if (index == strlen(password)) {
Serial.println("Password Benar.");
index = 0;
}
} else {
Serial.println("Password Salah.");
index = 0;
activateBuzzer();
}
}
void activateBuzzer() {
tone(buzzerPin, 1000, 500);
}
esp:0
esp:2
esp:4
esp:5
esp:12
esp:13
esp:14
esp:15
esp:16
esp:17
esp:18
esp:19
esp:21
esp:22
esp:23
esp:25
esp:26
esp:27
esp:32
esp:33
esp:34
esp:35
esp:3V3
esp:EN
esp:VP
esp:VN
esp:GND.1
esp:D2
esp:D3
esp:CMD
esp:5V
esp:GND.2
esp:TX
esp:RX
esp:GND.3
esp:D1
esp:D0
esp:CLK
ultrasonic1:VCC
ultrasonic1:TRIG
ultrasonic1:ECHO
ultrasonic1:GND
servo1:GND
servo1:V+
servo1:PWM
keypad1:R1
keypad1:R2
keypad1:R3
keypad1:R4
keypad1:C1
keypad1:C2
keypad1:C3
keypad1:C4
bz1:1
bz1:2
dht1:VCC
dht1:SDA
dht1:NC
dht1:GND