#include <WiFi.h>
#include <WiFiClientSecure.h>
#include <UniversalTelegramBot.h>
#include <ArduinoJson.h>
// WiFi & Telegram Config
const char* ssid = "Wokwi-GUEST";
const char* password = "";
const char* botToken = "8072211330:AAGftCBh-8UQsICD40ExO_Ehe-0b7mGfhvU";
const char* chatID = "6750924550";
// Komponen
const int pirPin = 14; // PIR sensor di pin D14
const int trigPin = 12; // Ultrasonic Trig
const int echoPin = 13; // Ultrasonic Echo
const int ledPin = 27; // LED
const int buzzerPin = 26; // Buzzer
WiFiClientSecure client;
UniversalTelegramBot bot(botToken, client);
void setup() {
Serial.begin(115200);
pinMode(pirPin, INPUT);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(ledPin, OUTPUT);
pinMode(buzzerPin, OUTPUT);
// Nonaktifkan verifikasi sertifikat
client.setInsecure();
WiFi.begin(ssid, password);
Serial.print("Menghubungkan ke WiFi");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nWiFi Tersambung");
bot.sendMessage(chatID, "Sistem Keamanan Aktif", "");
}
void loop() {
bool motionDetected = digitalRead(pirPin);
// Ultrasonic - Hitung jarak
digitalWrite(trigPin, LOW); delayMicroseconds(2);
digitalWrite(trigPin, HIGH); delayMicroseconds(10);
digitalWrite(trigPin, LOW);
long duration = pulseIn(echoPin, HIGH);
int distance = duration * 0.034 / 2;
if (motionDetected || distance < 30) {
digitalWrite(ledPin, HIGH);
digitalWrite(buzzerPin, HIGH);
String message = "‼️ Deteksi Gerakan!";
if (motionDetected) message += "\n🔴 Gerakan Terdeteksi oleh PIR.";
if (distance < 30) message += "\n🔵 Objek Terdeteksi dalam " + String(distance) + " cm.";
bot.sendMessage(chatID, message, "");
delay(3000); // Hindari spam notifikasi
} else {
digitalWrite(ledPin, LOW);
digitalWrite(buzzerPin, LOW);
}
delay(500);
}