Sistem ini dirancang untuk memberikan peringatan otomatis saat ada objek terdeteksi oleh sensor infrared (proximity E18-D80NK). Saat sensor mendeteksi gerakan atau objek mendekat, sistem akan mengaktifkan buzzer strobo, dan secara bersamaan mengirimkan notifikasi ke Telegram pengguna melalui koneksi Wi-Fi ESP32. Sistem ini cocok untuk keamanan rumah, kantor, gudang, atau pintu masuk penting, disamping itu juga bisa digunakan untuk pemantauan lansia atau anak-anak. Klik untuk membuat bot Telegram : https://telegram.me/BotFather Daftar Isi Komponen Diagram Wiring Pin Komponen Implementasi Kode Program Langkah-langkah Hasil Akhir FAQ Kesimpulan Komponen KOMPONENJUMLAHESP32 Dev Board1 buahSensor Proximity Infrared E18-D80NK1 buahRelay 2 Channel1 buahBuzzer + Strobo 12V1 buahAdaptor DC 12V + Modul Step Down (5V)1 buahKabel jumper, konektor terminal, breadboardsecukupnyaKoneksi Wi-Fi + Akun Telegram Diagram Wiring Pin Komponen KomponenPinESP 32VINGNDSENSOR E18-D80NKKabel Coklat : VCC/VINKabel Biru : GNDKabel Hitam : Output to D4BUZZER STROBOKabel Hitam : GNDKabel Merah : NO K1 RelayRELAYVCC to VININ 1 to D5IN 2 to D18LEDKaki Positif : Resistor dan NO K2 RelayKaki Negatif : GND Kode Program #include #include #include #include /* ===== WIFI ===== */ const char* ssid = "ganti nama wifi kamu"; const char* password = "ganti passwordnya"; /* ===== TELEGRAM ===== */ String botToken = "ganti dengan bot token yang kamu buat"; String chatId = "1879857707"; String lastUpdateId = ""; /* ===== PIN ===== */ #define SENSOR_PIN 4 // IR output (HIGH = objek) #define RELAY_BUZZ 5 // buzzer (low‑trigger) #define RELAY_LED 18 // strobo (low‑trigger) /* ===== VAR ===== */ bool buzzerMute = false; // true = buzzer disenyapkan int lastSensorState = HIGH; // simpan status IR terakhir /* ---------- SETUP ---------- */ void setup() { Serial.begin(115200); pinMode(SENSOR_PIN, INPUT); pinMode(RELAY_BUZZ, OUTPUT); pinMode(RELAY_LED, OUTPUT); digitalWrite(RELAY_BUZZ, HIGH); // keduanya OFF di awal digitalWrite(RELAY_LED, HIGH); WiFi.begin(ssid, password); Serial.print("WiFi"); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(" ✅ connected"); sendControlButtons(); // kirim tombol “Nyalakan / Matikan Buzzer” delay(800); } /* ---------- LOOP ---------- */ void loop() { int sensorState = digitalRead(SENSOR_PIN); // HIGH = ada objek if (sensorState == HIGH) { // objek terdeteksi digitalWrite(RELAY_LED, LOW); // strobo ON if (!buzzerMute) { digitalWrite(RELAY_BUZZ, LOW); // buzzer ON } else { digitalWrite(RELAY_BUZZ, HIGH); // buzzer OFF (mute) } if (sensorState != lastSensorState) { sendTelegram("🚨 Objek terdeteksi! " + String(buzzerMute ? "Buzzer dimute." : "Alarm berbunyi.")); } } else { // tidak ada objek digitalWrite(RELAY_LED, HIGH); // strobo OFF digitalWrite(RELAY_BUZZ, HIGH); // buzzer OFF if (sensorState != lastSensorState) sendTelegram("✅ Area aman."); } lastSensorState = sensorState; readTelegram(); // cek perintah setiap loop delay(1500); } /* ---------- KIRIM PESAN ---------- */ void sendTelegram(String txt) { WiFiClientSecure c; c.setInsecure(); HTTPClient http; String url = "https://api.telegram.org/bot"+botToken+"/sendMessage"; String data= "chat_id="+chatId+"&text="+txt; http.begin(c,url); http.addHeader("Content-Type","application/x-www-form-urlencoded"); http.POST(data); http.end(); } /* ---------- KIRIM TOMBOL ---------- */ void sendControlButtons() { WiFiClientSecure c; c.setInsecure(); HTTPClient http; String url="https://api.telegram.org/bot"+botToken+"/sendMessage"; String kb = "{"inline_keyboard":[" "[{"text":"Nyalakan Buzzer","callback_data":"nyala"}]," "[{"text":"Matikan Buzzer","callback_data":"mati"}]]}"; String data = "chat_id="+chatId+"&text=🎛️ Kontrol Buzzer:&reply_markup="+kb; http.begin(c,url); http.addHeader("Content-Type","application/x-www-form-urlencoded"); http.POST(data); http.end(); } /* ---------- BACA PERINTAH ---------- */ void readTelegram() { WiFiClientSecure c; c.setInsecure(); HTTPClient http; String url = "https://api.telegram.org/bot"+botToken+"/getUpdates"; http.begin(c,url); int code = http.GET(); if (code==200){ DynamicJsonDocument doc(4096); deserializeJson(doc,http.getString()); auto arr = doc["result"]; if (arr.size()){ JsonObject upd = arr[arr.size()-1]; String updId = String(upd["update_id"]); if (updId==lastUpdateId){ http.end(); return; } // sudah diproses lastUpdateId = updId; String data = upd["callback_query"]["data"]|""; String from = String(upd["callback_query"]["from"]["id"].as()); if (from!=chatId) { http.end(); return; } // abaikan user lain if (data=="nyala"){ buzzerMute = false; sendTelegram("🔔 Buzzer diaktifkan lagi."); } if (data=="mati"){ buzzerMute = true; digitalWrite(RELAY_BUZZ, HIGH); // pastikan OFF sendTelegram("🔕 Buzzer dimatikan."); } } } http.end(); } Langkah-langkah Siapkan Hardware Pasang sensor, ESP32, dan relay di breadboard atau konektor. Hubungkan kabel sesuai wiring diagram. Buat Bot Telegram Cari “BotFather” di Telegram, buat bot baru, lalu salin API Token. Catat juga chat ID untuk menerima notifikasi. Program ESP32 di Arduino IDE Install library WiFi.h, UniversalTelegramBot.h, WiFiClientSecure.h Gunakan kode program diatas. Upload dan Uji Coba Upload program ke ESP32, buka Serial Monitor. Arahkan tangan ke depan sensor → periksa apakah buzzer menyala dan notifikasi Telegram terkirim. Hasil Akhir Ketika objek mendekat ke sensor: 🔊 Buzzer strobo menyala otomatis 📲 Notifikasi terkirim ke Telegram pengguna Ketika tidak ada objek: Sistem standby, relay tidak aktif, tidak ada alarm Tampilan pada bot Telegram Link Reels Instagram https://www.instagram.com/reel/DL6MA30Pdzq/?igsh=MXNtZnNvM2F4NGs0aQ== FAQ Apakah saya butuh internet untuk menjalankan proyek ini? Ya, ESP32 harus terkoneksi ke Wi-Fi untuk mengirim pesan Telegram. Apakah bisa dikembangkan menjadi sistem dengan kamera? Ya, kamu bisa integrasikan ESP32-CAM untuk foto real-time ke Telegram. Berapa jarak maksimal deteksi dari sensor? Sensor E18-D80NK memiliki jarak deteksi yang bisa diatur antara 3 cm hingga 80 cm, tergantung objek dan kondisi pencahayaan. Apakah saya bisa mengubah isi pesan yang dikirim ke Telegram? Ya, kamu bisa mengubah isi pesan sesuai kebutuhan dengan mengedit bagian bot.sendMessage(...) pada kode Arduino IDE. Kamu juga bisa menambahkan emoji, timestamp, atau bahkan lokasi (dengan sensor GPS tambahan). Apakah Telegram bisa membalas atau mengontrol sistem ini? Bisa. Kamu bisa membuat sistem dua arah di mana pengguna mengirim perintah lewat Telegram, lalu ESP32 membalas atau melakukan tindakan (misal: menyalakan/mematikan alarm secara manual). Kesimpulan Proyek alarm otomatis ini merupakan solusi keamanan murah, fleksibel, dan pintar. Dengan bantuan ESP32 dan sensor IR, kamu bisa mendeteksi gerakan dan langsung mendapat notifikasi real-time lewat Telegram. Selain itu, sistem ini bisa dikembangkan menjadi smart door, anti-maling otomatis, atau integrasi smart home lainnya. Cocok untuk tugas akhir, KKN, maupun prototipe produk komersial. Jadi, tunggu apalagi? Yuk, coba sekarang dan bikin sistem monitoring yang bisa kamu kontrol dan lihat kapanpun kamu mau! Kalau kamu mau nambah pengalaman seru, coba deh proyek Membuat Running Text dengan ESP32 dan P10 untuk Pemula!