19 Juni 2026

Pendeteksi Tamu di Depan Rumah (Smart Guest Detector) Menggunakan ESP32 di Wokwi

Pernahkah Anda sedang berada di kamar, dapur, atau bahkan di halaman belakang rumah, lalu ternyata ada tamu yang sudah berdiri cukup lama di depan pintu tanpa diketahui? Kejadian seperti ini cukup sering terjadi dalam kehidupan sehari-hari. Tidak semua tamu langsung menekan bel rumah. Ada yang memilih menunggu, memanggil pemilik rumah, atau sekadar berdiri di depan pintu sambil berharap ada penghuni yang melihat ke luar. Akibatnya, tamu harus menunggu lebih lama dan pemilik rumah pun baru menyadari kedatangan tamu setelah beberapa menit kemudian.

Pendeteksi Tamu di Depan Rumah (Smart Guest Detector) Menggunakan ESP32 di Wokwi

Berangkat dari masalah sederhana tersebut, dibuatlah sebuah proyek yang diberi nama Sistem Notifikasi Tamu Pintar Berbasis ESP32 dan Sensor Ultrasonik. Proyek ini dirancang untuk membantu penghuni rumah mengetahui secara otomatis ketika ada seseorang yang berada di depan pintu rumah. Sistem akan mendeteksi keberadaan tamu, memberikan notifikasi melalui lampu indikator dan buzzer, serta menampilkan informasi pada LCD. Tidak hanya itu, sistem juga dapat menghitung jumlah pengunjung dan lama waktu tamu menunggu sehingga memberikan informasi yang lebih lengkap dibandingkan bel rumah biasa.

Pada proyek ini digunakan ESP32 sebagai pusat pengendali sistem. ESP32 dipilih karena memiliki kemampuan yang cukup lengkap, mudah diprogram, dan mendukung pengembangan lebih lanjut seperti koneksi Wi-Fi maupun Internet of Things (IoT). Selain ESP32, digunakan juga sensor ultrasonik HC-SR04 yang berfungsi untuk mengukur jarak antara sensor dan objek yang berada di depannya.

Cara kerja sensor ultrasonik sebenarnya cukup sederhana. Sensor akan memancarkan gelombang suara berfrekuensi tinggi yang tidak dapat didengar oleh manusia. Gelombang tersebut akan memantul ketika mengenai suatu objek dan kembali ke sensor. Berdasarkan waktu pantulan tersebut, sistem dapat menghitung jarak objek dari sensor. Dalam proyek ini, objek yang dimaksud adalah tamu yang berdiri di depan pintu rumah.

Sensor ultrasonik dipasang menghadap ke area depan pintu. Ketika tidak ada orang di depan rumah, sensor akan membaca jarak yang relatif jauh sesuai kondisi lingkungan. Namun ketika seseorang datang dan berdiri pada jarak tertentu, misalnya kurang dari satu meter dari sensor, maka sistem akan mulai melakukan proses deteksi.

Agar sistem lebih cerdas, tidak setiap objek yang lewat langsung dianggap sebagai tamu. Hal ini penting karena di lingkungan rumah sering terdapat gangguan seperti hewan peliharaan, kendaraan yang melintas, daun yang bergerak tertiup angin, atau orang yang hanya lewat di depan rumah tanpa berniat berkunjung. Oleh karena itu, sistem menerapkan logika bahwa objek harus berada dalam jarak tertentu selama beberapa detik sebelum dinyatakan sebagai tamu.

Ketika sistem berhasil mendeteksi tamu, LCD akan menampilkan pesan bahwa terdapat pengunjung di depan rumah. Pada saat yang sama, buzzer akan mengeluarkan bunyi pendek sebagai notifikasi kepada penghuni rumah. Lampu indikator juga dapat berubah warna untuk menunjukkan status sistem secara visual.

Sebagai contoh, lampu hijau menyala ketika kondisi rumah normal dan tidak ada tamu. Ketika tamu terdeteksi, lampu kuning menyala sebagai tanda adanya pengunjung. Jika tamu sudah menunggu cukup lama dan belum ada respons dari penghuni rumah, lampu merah akan menyala sebagai peringatan tambahan.

Keunggulan utama dari proyek ini adalah kemampuannya untuk memantau lama waktu tunggu tamu. Sistem tidak hanya mendeteksi kedatangan seseorang, tetapi juga menghitung berapa lama tamu tersebut berada di depan rumah. Informasi ini ditampilkan secara langsung pada LCD sehingga penghuni rumah dapat mengetahui apakah tamu baru datang atau sudah menunggu cukup lama.
Sebagai contoh, layar LCD dapat menampilkan informasi seperti berikut:

Ada Tamu
Menunggu 25 dtk

Ketika waktu tunggu semakin lama, sistem dapat memberikan notifikasi ulang melalui buzzer agar penghuni rumah tidak melewatkan kedatangan tamu tersebut.
Selain menghitung waktu tunggu, proyek ini juga mampu mencatat jumlah tamu yang datang. Setiap kali sistem mendeteksi kedatangan pengunjung baru, penghitung otomatis akan bertambah satu. Data ini dapat ditampilkan pada LCD sehingga pengguna dapat melihat jumlah pengunjung yang datang dalam satu hari.

Contoh tampilan LCD:
Pengunjung
Hari Ini: 8

Fitur penghitung pengunjung ini mungkin terlihat sederhana, tetapi cukup menarik untuk diterapkan pada berbagai kebutuhan. Misalnya pada rumah, ruang tamu kantor, perpustakaan, ruang pelayanan, maupun ruang tunggu lainnya.
Karena proyek ini langsung menggunakan konsep Level 5, sistem juga memiliki fitur peringatan khusus jika tamu menunggu terlalu lama. Misalnya setelah satu menit tidak ada respons dari penghuni rumah, buzzer akan berbunyi kembali sebagai pengingat tambahan. LCD akan menampilkan pesan khusus seperti:

PERINGATAN
Tamu Menunggu

Dengan adanya fitur ini, kemungkinan tamu terabaikan menjadi lebih kecil.
Dari sisi perangkat keras, proyek ini cukup sederhana dan cocok untuk pemula yang sedang belajar mikrokontroler. Komponen yang digunakan tidak terlalu banyak, yaitu ESP32, sensor ultrasonik HC-SR04, LCD I2C, buzzer, serta beberapa LED indikator. Meskipun sederhana, hasil akhirnya terlihat seperti sistem keamanan dan monitoring yang cukup profesional.

Keunggulan lain dari proyek ini adalah kemudahan pengembangannya. Setelah sistem dasar berhasil dibuat, pengguna dapat menambahkan berbagai fitur baru sesuai kebutuhan. Misalnya menambahkan modul Wi-Fi bawaan ESP32 untuk mengirim notifikasi ke smartphone ketika ada tamu datang. Dengan cara ini, penghuni rumah tetap dapat mengetahui adanya pengunjung meskipun sedang berada di luar rumah.

Pengembangan lainnya adalah menyimpan data jumlah tamu ke dalam memori atau server sehingga riwayat kunjungan dapat dipantau setiap hari. Bahkan sistem dapat dikombinasikan dengan kamera untuk mengambil foto ketika ada tamu yang datang.

Dari sisi pembelajaran, proyek ini sangat baik karena menggabungkan berbagai konsep penting dalam dunia elektronika dan pemrograman. Pengguna dapat mempelajari cara membaca sensor, mengolah data jarak, menggunakan LCD sebagai media tampilan, mengendalikan buzzer dan LED, serta membuat logika keputusan berdasarkan kondisi tertentu. Semua konsep tersebut merupakan dasar yang sangat penting untuk proyek-proyek yang lebih kompleks di masa depan.

Selain bermanfaat sebagai media belajar, proyek ini juga memiliki nilai praktis dalam kehidupan sehari-hari. Sistem membantu penghuni rumah mengetahui keberadaan tamu secara otomatis tanpa harus terus-menerus memperhatikan pintu depan. Dengan adanya notifikasi, penghuni rumah dapat memberikan respons lebih cepat sehingga tamu tidak perlu menunggu terlalu lama.

Secara keseluruhan, Sistem Notifikasi Tamu Pintar Berbasis ESP32 dan Sensor Ultrasonik merupakan proyek yang sederhana, menarik, dan memiliki manfaat nyata. Dengan memanfaatkan sensor ultrasonik sebagai alat pendeteksi keberadaan tamu, sistem mampu memberikan informasi secara otomatis mengenai kedatangan pengunjung, waktu tunggu, serta jumlah tamu yang datang. Kombinasi ESP32, LCD, LED, dan buzzer membuat proyek ini tidak hanya edukatif tetapi juga terlihat modern dan siap untuk dikembangkan menjadi sistem smart home yang lebih canggih di masa mendatang.

Masalah yang Diselesaikan
Kadang penghuni rumah:
  1. Tidak mendengar bel.
  2. Sedang berada di kamar belakang.
  3. Sedang bekerja atau belajar.
  4. Tidak menyadari ada tamu yang datang.
Cara Kerja
Sensor ultrasonik dipasang di teras atau dekat pintu masuk.
Ketika seseorang berada dalam jarak tertentu, misalnya 50–150 cm dari pintu selama beberapa detik, sistem menganggap ada tamu.

Pendeteksi Tamu di Depan Rumah (Smart Guest Detector) Menggunakan ESP32 di Wokwi


Pendeteksi Tamu di Depan Rumah
#include 
#include 

#define TRIG_PIN   5
#define ECHO_PIN   18

#define LED_HIJAU  25
#define LED_KUNING 26
#define LED_MERAH  27

#define BUZZER     19

LiquidCrystal_I2C lcd(0x27, 16, 2);

bool tamuTerdeteksi = false;
bool alarmAktif = false;

unsigned long waktuMulaiTamu = 0;
unsigned long jumlahPengunjung = 0;

float bacaJarak() {
  digitalWrite(TRIG_PIN, LOW);
  delayMicroseconds(2);

  digitalWrite(TRIG_PIN, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIG_PIN, LOW);

  long durasi = pulseIn(ECHO_PIN, HIGH, 30000);

  float jarak = durasi * 0.0343 / 2.0;

  return jarak;
}

void bunyiPendek() {
  tone(BUZZER, 2000);
  delay(200);
  noTone(BUZZER);
}

void setup() {

  Serial.begin(115200);

  pinMode(TRIG_PIN, OUTPUT);
  pinMode(ECHO_PIN, INPUT);

  pinMode(LED_HIJAU, OUTPUT);
  pinMode(LED_KUNING, OUTPUT);
  pinMode(LED_MERAH, OUTPUT);

  pinMode(BUZZER, OUTPUT);

  lcd.init();
  lcd.backlight();

  lcd.setCursor(0,0);
  lcd.print("SMART VISITOR");
  lcd.setCursor(0,1);
  lcd.print("SYSTEM");

  delay(3000);
  lcd.clear();
}

void loop() {

  float jarak = bacaJarak();

  Serial.print("Jarak: ");
  Serial.println(jarak);

  // Tidak ada tamu
  if (jarak > 100 || jarak == 0) {

    tamuTerdeteksi = false;
    alarmAktif = false;

    digitalWrite(LED_HIJAU, HIGH);
    digitalWrite(LED_KUNING, LOW);
    digitalWrite(LED_MERAH, LOW);

    noTone(BUZZER);

    lcd.setCursor(0,0);
    lcd.print("Tidak Ada Tamu");

    lcd.setCursor(0,1);
    lcd.print("Total:");
    lcd.print(jumlahPengunjung);
    lcd.print("      ");

    delay(500);
    return;
  }

  // Tamu baru datang
  if (!tamuTerdeteksi) {

    tamuTerdeteksi = true;
    waktuMulaiTamu = millis();

    jumlahPengunjung++;

    bunyiPendek();

    Serial.println("Tamu Datang");
  }

  unsigned long waktuTunggu =
      (millis() - waktuMulaiTamu) / 1000;

  digitalWrite(LED_HIJAU, LOW);
  digitalWrite(LED_KUNING, HIGH);

  lcd.setCursor(0,0);
  lcd.print("Ada Tamu      ");

  lcd.setCursor(0,1);
  lcd.print("Tunggu:");
  lcd.print(waktuTunggu);
  lcd.print(" dtk   ");

  // Alarm jika >30 detik
  if (waktuTunggu >= 30) {

    digitalWrite(LED_KUNING, LOW);
    digitalWrite(LED_MERAH, HIGH);

    if (!alarmAktif) {

      alarmAktif = true;

      for (int i = 0; i < 3; i++) {

        tone(BUZZER, 2500);
        delay(300);

        noTone(BUZZER);
        delay(200);
      }
    }

    lcd.setCursor(0,0);
    lcd.print("PERINGATAN!   ");

    lcd.setCursor(0,1);
    lcd.print("Tamu Menunggu ");
  }

  delay(200);
}
  
Comments


EmoticonEmoticon