
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
KOMPONEN | JUMLAH |
ESP32 Dev Board | 1 buah |
Sensor Proximity Infrared E18-D80NK | 1 buah |
Relay 2 Channel | 1 buah |
Buzzer + Strobo 12V | 1 buah |
Adaptor DC 12V + Modul Step Down (5V) | 1 buah |
Kabel jumper, konektor terminal, breadboard | secukupnya |
Koneksi Wi-Fi + Akun Telegram |
Diagram Wiring

Pin Komponen
Komponen | Pin |
ESP 32 | VIN GND |
SENSOR E18-D80NK | Kabel Coklat : VCC/VIN Kabel Biru : GND Kabel Hitam : Output to D4 |
BUZZER STROBO | Kabel Hitam : GND Kabel Merah : NO K1 Relay |
RELAY | VCC to VIN IN 1 to D5 IN 2 to D18 |
LED | Kaki Positif : Resistor dan NO K2 Relay Kaki Negatif : GND |
Kode Program
#include <WiFi.h>
#include <HTTPClient.h>
#include <ArduinoJson.h>
#include <WiFiClientSecure.h>
/* ===== 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<long>());
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.
- Install library
- 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


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!