Lompat ke konten utama
Iklan

Cara Membuat Palang Pintu Otomatis dengan Arduino

Palang pintu (portal) otomatis yang terangkat sendiri saat kendaraan mendekat adalah proyek yang sering dijadikan simulasi sistem parkir otomatis di sekolah maupun kampus. Strukturnya mirip dengan tempat sampah otomatis yang sudah dibahas — sensor ultrasonik dan motor servo — tapi dengan tambahan logika supaya palang tidak turun saat kendaraan masih berada tepat di bawahnya.

Cara Kerja

Sensor ultrasonik dipasang menghadap ke arah kendaraan datang. Saat jarak terdeteksi cukup dekat, servo mengangkat palang. Palang tetap terbuka selama sensor masih mendeteksi objek di depannya, dan baru menurun setelah area di depan sensor benar-benar kosong selama beberapa detik — bukan langsung menurun begitu jarak sedikit menjauh.

Alat dan Bahan

KomponenJumlahCatatan
Arduino Uno / Nano1 
Sensor ultrasonik HC-SR041 
Motor servo (SG90 untuk prototipe, MG996R untuk palang lebih berat)1Lihat perbandingan torsi di artikel motor servo
Palang dari stik kayu / akrilik ringan1Untuk prototipe meja, bukan ukuran sungguhan
LED merah dan hijau (opsional)2Indikator status tertutup/terbuka

Skema Penyambungan

Arduino 5V/GND Pin 9 Pin 10 Pin 6 HC-SR04 VCC Trig Echo GND Servo + Palang VCC Signal GND Trig = pin 9, Echo = pin 10, Servo = pin 6

Kode Lengkap

#include <Servo.h>

const int pinTrig = 9;
const int pinEcho = 10;
const int pinServo = 6;

const int jarakDeteksi = 20;              // cm
const unsigned long waktuKosongkanArea = 2000; // 2 detik area harus kosong dulu

Servo servoPalang;
unsigned long waktuTerakhirAdaObjek = 0;
bool palangTerbuka = false;

long bacaJarakCm() {
  digitalWrite(pinTrig, LOW);
  delayMicroseconds(2);
  digitalWrite(pinTrig, HIGH);
  delayMicroseconds(10);
  digitalWrite(pinTrig, LOW);

  long durasi = pulseIn(pinEcho, HIGH, 30000);
  if (durasi == 0) return 999;
  return durasi * 0.034 / 2;
}

void setup() {
  pinMode(pinTrig, OUTPUT);
  pinMode(pinEcho, INPUT);
  servoPalang.attach(pinServo);
  servoPalang.write(0);   // posisi palang turun/tertutup
  Serial.begin(9600);
}

void loop() {
  long jarak = bacaJarakCm();
  bool adaObjek = jarak < jarakDeteksi;

  if (adaObjek) {
    waktuTerakhirAdaObjek = millis();
    if (!palangTerbuka) {
      servoPalang.write(90); // angkat palang
      palangTerbuka = true;
      Serial.println("Kendaraan terdeteksi, palang naik.");
    }
  }

  // turunkan HANYA jika area sudah kosong selama waktuKosongkanArea
  if (palangTerbuka && millis() - waktuTerakhirAdaObjek > waktuKosongkanArea) {
    servoPalang.write(0);
    palangTerbuka = false;
    Serial.println("Area kosong, palang turun.");
  }

  delay(100);
}

Bagian Terpenting: Kenapa Palang Tidak Boleh Langsung Turun

Ini yang membedakan palang pintu dari sekadar "buka tutup otomatis" biasa: keselamatan. Kalau palang menurun begitu jarak sedikit saja berubah — misalnya karena kendaraan bergerak pelan atau berhenti sesaat — palang berisiko menimpa kendaraan yang masih ada di bawahnya.

Kode di atas menyelesaikannya dengan mencatat waktuTerakhirAdaObjek setiap kali objek terdeteksi, dan hanya menurunkan palang jika sudah 2 detik penuh tanpa deteksi objek sama sekali. Untuk penggunaan sungguhan (bukan prototipe), jarak deteksi dan waktu tunggu ini sebaiknya diperbesar cukup jauh, dan idealnya ditambah sensor kedua di posisi berbeda sebagai pengaman ganda — prototipe di artikel ini disederhanakan untuk tujuan belajar, bukan untuk dipasang langsung di gerbang sungguhan tanpa pengujian menyeluruh.

Menambahkan Indikator LED

const int pinLedMerah = 4;
const int pinLedHijau = 5;

void setup() {
  // ...kode sebelumnya...
  pinMode(pinLedMerah, OUTPUT);
  pinMode(pinLedHijau, OUTPUT);
}

void loop() {
  // ...kode sebelumnya...

  digitalWrite(pinLedHijau, palangTerbuka ? HIGH : LOW);
  digitalWrite(pinLedMerah, palangTerbuka ? LOW : HIGH);
}

Operator ? : di atas adalah ternary operator — cara ringkas menulis if-else dalam satu baris. Baris pertama artinya: "kalau palangTerbuka bernilai true, nyalakan LED hijau (HIGH), kalau tidak, matikan (LOW)".

Masalah yang Sering Muncul

GejalaPenyebab dan Solusi
Palang naik-turun berulang saat kendaraan berhenti di bawahnya Waktu tunggu waktuKosongkanArea terlalu singkat. Perbesar nilainya.
Palang tidak naik sama sekali Jarak jarakDeteksi terlalu kecil untuk posisi sensor Anda, atau sensor menghadap arah yang salah.
Servo terlalu lemah mengangkat palang SG90 hanya untuk palang sangat ringan. Untuk palang lebih berat, pindah ke servo bertorsi lebih besar seperti MG996R, dengan catu daya terpisah.

Proyek Serupa Lainnya

Pola sensor-plus-aktuator yang sama dipakai juga di proyek penyiram tanaman otomatis dan tempat sampah otomatis — kalau proyek ini terasa cocok untuk Anda, keduanya layak dicoba berikutnya.

Penting: Ini Prototipe Belajar, Bukan Sistem Keselamatan

Palang pintu sungguhan yang menahan kendaraan bermotor perlu sensor pengaman berlapis, pengujian ekstensif, dan idealnya sertifikasi keselamatan — jauh melampaui cakupan tutorial ini. Proyek di atas ditujukan untuk pembelajaran logika sensor dan aktuator dalam skala prototipe meja atau simulasi maket, bukan untuk dipasang menggantikan portal parkir yang menahan beban sungguhan.

Iklan
0 Komentar

Berkomentarlah dengan sopan dan menggunakan bahasa yang semestinya.