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
| Komponen | Jumlah | Catatan |
|---|---|---|
| Arduino Uno / Nano | 1 | |
| Sensor ultrasonik HC-SR04 | 1 | |
| Motor servo (SG90 untuk prototipe, MG996R untuk palang lebih berat) | 1 | Lihat perbandingan torsi di artikel motor servo |
| Palang dari stik kayu / akrilik ringan | 1 | Untuk prototipe meja, bukan ukuran sungguhan |
| LED merah dan hijau (opsional) | 2 | Indikator status tertutup/terbuka |
Skema Penyambungan
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
| Gejala | Penyebab 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.
0 Komentar
Berkomentarlah dengan sopan dan menggunakan bahasa yang semestinya.