01 Juli 2026

Membuat Pintu Otomatis Menggunakan ESP32 dan Sensor Ultrasonik HC-SR04

Perkembangan teknologi Internet of Things (IoT) membuat berbagai sistem otomatis menjadi lebih mudah dibuat, bahkan hanya dengan menggunakan komponen sederhana dan biaya yang terjangkau. Salah satu proyek yang menarik untuk dipelajari adalah pintu otomatis berbasis ESP32 dan sensor ultrasonik HC-SR04. Proyek ini sangat cocok untuk pelajar, mahasiswa, maupun hobiis elektronika yang ingin belajar tentang sensor, mikrokontroler, dan sistem otomatisasi.

Membuat Pintu Otomatis Menggunakan ESP32 dan Sensor Ultrasonik HC-SR04

Pada proyek ini, ESP32 berperan sebagai pusat pengendali yang akan menerima data dari sensor ultrasonik HC-SR04. Sensor tersebut bertugas mengukur jarak objek yang berada di depannya. Ketika ada seseorang atau kendaraan yang mendekat hingga jarak tertentu, sistem akan memberikan perintah kepada servo motor untuk membuka pintu secara otomatis. Selain itu, indikator LED dan buzzer juga digunakan untuk memberikan informasi mengenai status pintu.

Sensor HC-SR04 bekerja dengan cara memancarkan gelombang ultrasonik melalui pin Trigger. Gelombang tersebut akan memantul ketika mengenai suatu objek dan kembali diterima oleh pin Echo. Berdasarkan waktu tempuh gelombang tersebut, ESP32 dapat menghitung jarak objek dengan cukup akurat. Pada proyek ini, jarak deteksi diatur sekitar 20 cm. Ketika ada objek yang terdeteksi pada jarak tersebut, sistem langsung membuka pintu tanpa perlu menekan tombol atau melakukan kontak fisik.

Untuk menggerakkan pintu, digunakan Micro Servo SG90 yang terkenal mudah digunakan dan memiliki ukuran yang kecil. Servo ini mampu bergerak pada sudut tertentu sesuai perintah yang diberikan oleh ESP32. Dalam kondisi normal, servo berada pada posisi tertutup. Ketika sensor mendeteksi adanya objek pada jarak yang ditentukan, servo akan bergerak ke posisi terbuka. Dengan demikian, pintu dapat terbuka secara otomatis saat ada orang atau kendaraan yang mendekat.

Sebagai indikator visual, proyek ini juga menggunakan dua buah LED. LED merah menunjukkan bahwa pintu dalam keadaan tertutup, sedangkan LED hijau menandakan bahwa pintu sedang terbuka. Penggunaan LED sangat membantu pengguna untuk mengetahui kondisi sistem tanpa harus melihat posisi servo secara langsung. Selain LED, buzzer juga ditambahkan sebagai indikator suara. Saat pintu pertama kali terbuka, buzzer akan berbunyi beberapa kali untuk memberikan notifikasi bahwa sistem telah mendeteksi objek dan pintu sedang beroperasi.

Salah satu fitur menarik dari proyek ini adalah sistem penutupan otomatis. Banyak proyek sederhana yang hanya membuka pintu selama beberapa detik kemudian langsung menutup kembali. Namun pada proyek ini, logika yang digunakan lebih realistis. Pintu akan tetap terbuka selama sensor masih mendeteksi adanya objek di area deteksi. Ketika objek sudah menjauh dari sensor, sistem akan mulai menghitung waktu. Jika selama 20 detik tidak ada objek yang terdeteksi kembali, maka pintu akan menutup secara otomatis. Logika ini membuat sistem lebih nyaman digunakan dan menyerupai pintu otomatis yang biasa ditemukan di pusat perbelanjaan, perkantoran, atau gedung modern.

ESP32 dipilih sebagai mikrokontroler utama karena memiliki banyak keunggulan dibandingkan mikrokontroler lainnya. Selain memiliki performa yang lebih tinggi, ESP32 juga dilengkapi dengan fitur WiFi dan Bluetooth bawaan. Dengan adanya fitur tersebut, proyek ini masih dapat dikembangkan lebih lanjut menjadi sistem IoT. Misalnya, pengguna dapat memantau status pintu melalui smartphone, menerima notifikasi ketika pintu terbuka, atau bahkan mengendalikan sistem dari jarak jauh menggunakan aplikasi Telegram maupun platform IoT lainnya.

Dari sisi pembelajaran, proyek ini memberikan banyak manfaat. Pengguna dapat mempelajari cara kerja sensor ultrasonik, pengendalian servo motor, penggunaan LED dan buzzer sebagai indikator, serta penerapan logika pemrograman berbasis waktu menggunakan fungsi millis(). Semua konsep tersebut merupakan dasar yang sangat penting dalam dunia elektronika dan IoT.

Selain digunakan sebagai media pembelajaran, proyek pintu otomatis ini juga dapat dijadikan sebagai miniatur sistem keamanan atau simulasi gerbang otomatis. Dengan desain yang menarik menggunakan bahan sederhana seperti kardus, proyek ini mampu memberikan gambaran nyata tentang bagaimana teknologi otomatisasi bekerja dalam kehidupan sehari-hari. Oleh karena itu, proyek pintu otomatis berbasis ESP32 dan HC-SR04 merupakan pilihan yang sangat baik bagi siapa saja yang ingin belajar sekaligus berkreasi dalam bidang teknologi dan Internet of Things.


Kode yang saya gunakan 

Membuat Pintu Otomatis Menggunakan ESP32 dan Sensor Ultrasonik HC-SR04
#include 

// =========================
// HC-SR04
// =========================
#define TRIG_PIN   12
#define ECHO_PIN   14

// =========================
// LED
// =========================
#define LED_MERAH  25
#define LED_HIJAU  26

// =========================
// Servo SG90
// =========================
#define SERVO_PIN  19

// =========================
// Buzzer
// =========================
#define BUZZER_PIN 18

Servo pintu;

// Status pintu
bool pintuTerbuka = false;

// Menyimpan waktu terakhir ada objek terdeteksi
unsigned long waktuTerakhirDeteksi = 0;

// ======================================
// Fungsi Membaca Jarak HC-SR04
// ======================================
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);

  if (durasi == 0) {
    return 999; // tidak ada pantulan
  }

  float jarak = durasi * 0.0343 / 2.0;

  return jarak;
}

// ======================================
// Bunyi Buzzer 3 Kali
// ======================================
void bunyiBuzzer() {

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

    digitalWrite(BUZZER_PIN, HIGH);
    delay(150);

    digitalWrite(BUZZER_PIN, LOW);
    delay(150);
  }
}

void setup() {

  Serial.begin(115200);

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

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

  pinMode(BUZZER_PIN, OUTPUT);

  // Servo
  pintu.attach(SERVO_PIN);

  // Kondisi awal
  pintu.write(0); // pintu tertutup

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

  Serial.println("================================");
  Serial.println(" SISTEM PINTU OTOMATIS ESP32");
  Serial.println("================================");
}

void loop() {

  float jarak = bacaJarak();

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

  // ======================================
  // ADA ORANG TERDETEKSI
  // ======================================
  if (jarak <= 20) {

    // Jika pintu masih tertutup
    if (!pintuTerbuka) {

      Serial.println(">>> PINTU TERBUKA");

      pintu.write(90);

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

      bunyiBuzzer();

      pintuTerbuka = true;
    }

    // Update waktu deteksi terakhir
    waktuTerakhirDeteksi = millis();
  }

  // ======================================
  // TUTUP SETELAH 5 DETIK
  // TIDAK ADA DETEKSI
  // ======================================
  if (pintuTerbuka &&
      (millis() - waktuTerakhirDeteksi >= 5000)) {

    Serial.println(">>> PINTU TERTUTUP");

    pintu.write(0);

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

    pintuTerbuka = false;
  }

  delay(100);
}
  
Comments


EmoticonEmoticon