DC
Kelas Digital Creative
Robotika · IoT · Scratch · Canva · CapCut · AI
← kembali ke Home

Membuat Palang Pintu Parkir Otomatis dengan Sensor Ultrasonik dan Servo (Simulasi Arduino UNO di Wokwi)

⏱ 40 Menit Arduino August 2026 🔧

Pada tutorial ini, kita akan membuat sistem palang pintu parkir otomatis, mirip seperti yang biasa kamu lihat di gerbang mall atau apartemen. Sistem ini menggunakan Arduino UNO, sensor jarak HC-SR04 (sensor ultrasonik) untuk mendeteksi kendaraan, motor servo sebagai palang pintu, dan dua LED (merah & hijau) sebagai lampu indikator status. Semua ini disimulasikan di Wokwi.

Apa yang Akan Kita Pelajari?

Bagian Komponen Fungsi
Board Arduino UNO Pusat kendali sistem
Sensor (Input) HC-SR04 Mengukur jarak kendaraan ke sensor
Aktuator (Output gerak) Micro Servo Menggerakkan palang pintu
Output LED merah & hijau Indikator status palang (tertutup/terbuka)
Library Servo Memudahkan pengontrolan sudut motor servo

Panduan ini dibuat untuk praktik simulasi gerbang otomatis. Sistem akan membaca jarak kendaraan, membuka palang saat kendaraan berada dekat, lalu mengembalikan palang ke posisi tertutup saat area kembali aman (tidak ada kendaraan di dekat sensor).

Gambaran Proyek

Proyek ini mensimulasikan gerbang parkir otomatis seperti pintu masuk area parkir atau gerbang akses kendaraan. Sensor ultrasonik HC-SR04 membaca jarak kendaraan. Arduino UNO menghitung jarak tersebut, lalu mengatur servo sebagai palang pintu dan LED sebagai lampu status.

Manfaat Praktik Ini

  • Belajar membaca input sensor (jarak dari HC-SR04).
  • Belajar mengontrol output servo (gerakan buka-tutup palang).
  • Belajar memakai LED sebagai indikator status sistem.

Hasil Akhir yang Diharapkan

  • Mobil dekat → palang terbuka.
  • Mobil jauh → palang tertutup.
  • Status sistem selalu terlihat lewat nyala LED (merah = tertutup, hijau = terbuka).

Konsep Utama yang Dipakai

  • Jarak dan kondisi if-else (percabangan logika: “jika … maka …, kalau tidak maka …”).
  • Kontrol servo di 0 dan 90 derajat (posisi tertutup dan terbuka).
  • Pemakaian Serial Monitor untuk melihat status sistem.

Kegunaan di Dunia Nyata

  • Gerbang parkir mobil/motor.
  • Miniatur palang tol.
  • Sistem kontrol akses sederhana (misalnya di gudang atau kompleks perumahan).

Logika Batas Jarak Kendaraan

Batas jarak yang dipakai dalam proyek ini adalah 20 cm:

  • 0–20 cm → palang terbuka, LED hijau menyala.
  • Lebih dari 20 cm → palang tertutup, LED merah menyala.

Tujuan Pembelajaran

Setelah mencoba proyek ini, kamu diharapkan bisa:

  • Menjelaskan cara kerja sensor ultrasonik.
  • Menentukan pin komponen dengan benar.
  • Membaca logika kondisi berdasarkan jarak.
  • Menggerakkan servo sesuai kondisi tertentu.
  • Menggunakan LED sebagai indikator status sebuah sistem.

Langkah 1: Menyiapkan Komponen

Komponen yang dipakai adalah Arduino UNO, HC-SR04, Micro Servo, dua LED, dua resistor 220 Ohm, dan breadboard.

Komponen Fungsi Utama Catatan Praktik
Arduino UNO Mengolah input sensor dan mengendalikan output Pusat kendali rangkaian
HC-SR04 Mengukur jarak kendaraan ke sensor TRIG di pin 3, ECHO di pin 2
Micro Servo Menggerakkan palang pintu PWM di pin 10
LED Merah Tanda palang tertutup Anoda ke pin 8
LED Hijau Tanda palang terbuka Anoda ke pin 9
Breadboard Membagi jalur 5V dan GND Memudahkan kabel daya ke semua komponen
💡 Apa itu Anoda pada LED, dan kenapa perlu resistor?

LED punya dua kaki: anoda (kaki positif, biasanya lebih panjang) dan katoda (kaki negatif, lebih pendek). Anoda disambungkan ke pin Arduino (lewat pin 8 atau 9 di proyek ini), sedangkan katoda disambungkan ke ground lewat sebuah resistor. Resistor 220 Ohm ini penting untuk membatasi arus listrik yang masuk ke LED — tanpa resistor, arus yang terlalu besar bisa membuat LED cepat rusak atau bahkan langsung putus saat pertama kali dinyalakan.

Langkah 2: Memasang Library yang Dibutuhkan

Library yang perlu dipasang di Wokwi untuk proyek ini hanya satu: Servo. Library ini dipakai agar Arduino dapat mengirim sudut gerak ke motor servo dengan perintah yang sederhana, cukup dengan memanggil fungsi seperti write(90) tanpa perlu mengatur sinyal PWM secara manual.

Buka tab Library Manager di Wokwi, lalu pastikan library Servo sudah muncul di daftar Installed Libraries.

Langkah 3: Merangkai Wiring (Jalur Kabel)

Rangkaian ini memakai breadboard sebagai pembagi daya 5V dan GND. Sensor ultrasonik mendeteksi jarak, servo menjadi palang pintu, sementara LED merah dan hijau menjadi indikator status.

Pin Arduino Fungsi
Pin 2 ECHO (sensor HC-SR04)
Pin 3 TRIG (sensor HC-SR04)
Pin 8 LED merah
Pin 9 LED hijau
Pin 10 Servo (PWM)

Ikuti sambungan berikut berdasarkan tabel detail di bawah. Jalur 5V dan GND dibagi melalui breadboard, supaya sensor, servo, dan LED semuanya punya referensi listrik yang sama:

Komponen / Kaki Tujuan Sambungan Warna Kabel
HC-SR04 VCC 5V melalui breadboard (+) Merah
HC-SR04 GND GND melalui breadboard (−) Hitam
HC-SR04 TRIG Pin digital 3 Hijau
HC-SR04 ECHO Pin digital 2 Hijau
Servo V+ 5V melalui breadboard (+) Merah
Servo GND GND melalui breadboard (−) Hitam
Servo PWM Pin digital 10 Hijau
LED Merah (Anoda) Pin digital 8 Hijau
LED Merah (Katoda) Resistor 220 Ohm → GND Hijau
LED Hijau (Anoda) Pin digital 9 Hijau
LED Hijau (Katoda) Resistor 220 Ohm → GND Hijau

💡 Bagaimana cara kerja sensor HC-SR04 mengukur jarak?

HC-SR04 punya dua “mata”: pin TRIG (trigger, pemancar) dan pin ECHO (penerima pantulan). Cara kerjanya mirip seperti kelelawar atau sonar kapal selam: sensor memancarkan gelombang ultrasonik (suara berfrekuensi sangat tinggi, tidak terdengar telinga manusia) lewat TRIG, lalu gelombang itu memantul saat mengenai benda (misalnya mobil), dan pantulannya diterima kembali lewat ECHO. Dengan mengukur berapa lama waktu dari gelombang dipancarkan sampai pantulannya diterima kembali, sensor (dibantu Arduino) bisa menghitung seberapa jauh jarak benda tersebut.

Langkah 4: Memahami Alur Kerja Sistem

  1. Sensor HC-SR04 membaca jarak benda di depannya.
  2. Arduino menghitung jarak tersebut dalam satuan sentimeter (cm).
  3. Keputusan: apakah jarak ≤ 20 cm?
  4. Aksi: servo dan LED berubah status sesuai hasil keputusan tersebut.

Langkah 5: Memahami Logika Utama Program

Saat jarak lebih dari 0 dan kurang dari atau sama dengan 20 cm, Arduino menganggap kendaraan berada dekat palang. LED hijau menyala, LED merah mati, dan servo bergerak ke 90 derajat (membuka). Saat tidak ada kendaraan dekat, servo kembali ke 0 derajat (menutup), LED merah menyala, dan LED hijau mati.

Kondisi Jarak Servo LED Merah LED Hijau Pesan di Serial Monitor
0 < jarak ≤ 20 cm 90 derajat (palang terbuka) Mati Nyala “Mobil terdeteksi!”
Jarak > 20 cm 0 derajat (palang tertutup) Nyala Mati “Sistem menunggu”

Langkah 6: Menulis Kode Program (sketch.ino)

Buka file sketch.ino di Wokwi, lalu salin kode berikut:

#include <Servo.h>

// Menyiapkan colokan komponen
int trigPin = 3;
int echoPin = 2;
int pinLampuMerah = 8;
int pinLampuHijau = 9;

Servo palangPintu; // Memberi nama motor servonya "palangPintu"

void setup() {
  Serial.begin(9600);

  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  pinMode(pinLampuMerah, OUTPUT);
  pinMode(pinLampuHijau, OUTPUT);

  palangPintu.attach(10);  // Servo dicolok ke angka 10
  palangPintu.write(0);    // Posisi Awal: Palang Tertutup (0 derajat)

  // Menyalakan lampu merah pertama kali
  digitalWrite(pinLampuMerah, HIGH);
  digitalWrite(pinLampuHijau, LOW);

  Serial.println("Sistem Parkir Aktif. Palang Tertutup.");
}

void loop() {
  // 1. Membaca Jarak (Mendeteksi Mobil)
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);

  long duration = pulseIn(echoPin, HIGH);
  int jarak = duration * 0.034 / 2;

  // 2. Logika Buka Tutup Palang Pintu
  if (jarak > 0 && jarak <= 20) {
    // JIKA ADA MOBIL MENDEKAT (Jarak 20 cm atau kurang)
    Serial.println("Mobil terdeteksi! Silakan masuk.");

    // Lampu Hijau Nyala, Merah Mati
    digitalWrite(pinLampuMerah, LOW);
    digitalWrite(pinLampuHijau, HIGH);

    // Buka palang pintu (gerak ke 90 derajat)
    palangPintu.write(90);

    // Tahan palang tetap terbuka selama 3 detik untuk mobil lewat
    delay(3000);

  } else {
    // JIKA TIDAK ADA MOBIL (Jarak lebih dari 20 cm)
    // Palang menutup otomatis (0 derajat)
    palangPintu.write(0);

    // Lampu Merah Nyala, Hijau Mati
    digitalWrite(pinLampuMerah, HIGH);
    digitalWrite(pinLampuHijau, LOW);
  }

  delay(200); // Jeda sebelum membaca sensor lagi
}

Langkah 7: Memahami Setiap Bagian Kode

Klik masing-masing bagian di bawah ini untuk memahami fungsinya satu per satu:

📦 Bagian Library dan Variabel Pin
  • #include <Servo.h> — memanggil library untuk mengontrol motor servo.
  • int trigPin = 3; — membuat variabel trigPin berisi angka 3, menandai bahwa pin TRIG sensor terhubung ke pin digital 3 Arduino.
  • int echoPin = 2; — sama seperti di atas, tapi untuk pin ECHO yang terhubung ke pin digital 2.
  • int pinLampuMerah = 8; dan int pinLampuHijau = 9; — menandai pin LED merah dan hijau.
  • Servo palangPintu; — membuat objek (perwakilan) servo di dalam program, diberi nama palangPintu supaya mudah dipanggil sesuai fungsinya.

Kenapa pakai nama variabel, bukan langsung angka? Supaya kode lebih mudah dibaca dan diubah. Kalau suatu saat servo dipindah ke pin lain, kita cukup ubah satu baris int trigPin = ..., tanpa perlu mencari-cari angka pin di semua bagian program.

🚀 Bagian setup() — Dijalankan Sekali di Awal
  • Serial.begin(9600); — mengaktifkan komunikasi Serial Monitor.
  • pinMode(trigPin, OUTPUT); — mengatur pin TRIG sebagai output (pin ini yang mengirim sinyal ultrasonik keluar).
  • pinMode(echoPin, INPUT); — mengatur pin ECHO sebagai input (pin ini yang menerima sinyal pantulan).
  • pinMode(pinLampuMerah, OUTPUT); dan pinMode(pinLampuHijau, OUTPUT); — mengatur kedua pin LED sebagai output, karena Arduino akan mengirim perintah nyala/mati ke LED tersebut.
  • palangPintu.attach(10); — menghubungkan objek servo ke pin fisik 10 Arduino.
  • palangPintu.write(0); — memutar servo ke posisi 0 derajat (tertutup) sebagai posisi awal.
  • digitalWrite(pinLampuMerah, HIGH); — menyalakan LED merah (HIGH = nyala/hidup).
  • digitalWrite(pinLampuHijau, LOW); — memastikan LED hijau mati (LOW = mati) di awal program.
  • Serial.println("Sistem Parkir Aktif. Palang Tertutup."); — menampilkan pesan status awal ke Serial Monitor.
📏 Bagian loop() — Membaca Jarak Sensor

Bagian ini adalah cara standar mengukur jarak dengan sensor HC-SR04:

  • digitalWrite(trigPin, LOW); delayMicroseconds(2); — memastikan pin TRIG dalam kondisi mati (LOW) sesaat, sebagai "ancang-ancang" sebelum mengirim sinyal.
  • digitalWrite(trigPin, HIGH); delayMicroseconds(10); — menyalakan TRIG selama 10 mikrodetik untuk memancarkan gelombang ultrasonik.
  • digitalWrite(trigPin, LOW); — mematikan TRIG lagi setelah gelombang dipancarkan.
  • long duration = pulseIn(echoPin, HIGH);pulseIn() mengukur berapa lama (dalam mikrodetik) pin ECHO menerima sinyal HIGH, yaitu waktu yang dibutuhkan gelombang untuk pergi dan kembali (memantul dari benda).
  • int jarak = duration * 0.034 / 2; — mengubah waktu tempuh gelombang menjadi jarak dalam sentimeter. Angka 0.034 adalah kecepatan suara di udara (dalam cm per mikrodetik), dan dibagi 2 karena gelombang menempuh jarak dua kali (pergi ke benda, lalu memantul kembali) — jadi kita hanya perlu jarak satu arahnya saja.
🚦 Bagian loop() — Logika Buka-Tutup Palang
  • if (jarak > 0 && jarak <= 20) { ... } — tanda && berarti "dan" — kondisi ini bernilai benar hanya jika jarak lebih dari 0 DAN kurang dari atau sama dengan 20. Kenapa harus lebih dari 0? Karena kadang sensor bisa membaca hasil yang error/kosong (0 atau negatif) jika tidak ada pantulan terdeteksi sama sekali — jadi kita pastikan hanya angka jarak yang valid dan masuk akal yang diproses.
  • Di dalam blok if ini: LED hijau dinyalakan, LED merah dimatikan, servo diputar ke 90 derajat (membuka), lalu delay(3000) menahan kondisi ini selama 3 detik supaya ada waktu untuk kendaraan lewat.
  • else { ... } — kalau kondisi di atas tidak terpenuhi (jarak lebih dari 20 cm, artinya tidak ada kendaraan dekat), maka servo diputar kembali ke 0 derajat (menutup), LED merah dinyalakan, dan LED hijau dimatikan.
  • delay(200); — jeda singkat 0,2 detik sebelum loop() mengulang dan membaca jarak lagi. Jeda ini membuat pembacaan sensor tidak terlalu terburu-buru, sehingga hasilnya lebih stabil.

Langkah 8: Menjalankan dan Menguji Simulasi

  1. Tekan tombol Play di Wokwi.
  2. Perhatikan kondisi awal: LED merah menyala dan servo berada pada sudut 0 derajat (palang tertutup).
  3. Klik komponen sensor HC-SR04, lalu geser objek simulasi supaya mendekati sensor.
  4. Saat jarak menjadi 20 cm atau kurang, LED hijau menyala dan servo membuka palang (90 derajat).
  5. Jauhkan lagi objeknya. Palang akan menutup kembali dan lampu merah menyala lagi.

Hasil yang diharapkan: ketika kendaraan mendekat, sistem memberi akses masuk dengan membuka palang. Setelah beberapa detik atau saat kendaraan tidak lagi berada dekat sensor, sistem kembali ke kondisi tertutup secara otomatis.

Langkah 9: Mengatasi Masalah Umum (Troubleshooting)

Masalah Pemeriksaan Cepat
Servo tidak bergerak Cek kabel PWM ke pin 10, V+ ke 5V, dan GND ke jalur ground.
Sensor tidak membaca jarak Pastikan TRIG ke pin 3 dan ECHO ke pin 2, jangan sampai tertukar posisinya.
LED tertukar (merah dan hijau kebalik) Cek LED merah harus ke pin 8, dan LED hijau ke pin 9.
Semua komponen mati/tidak merespons Cek jalur 5V dan GND dari Arduino ke breadboard, pastikan semua tersambung.
Gerbang selalu terbuka terus Pastikan objek/benda pada sensor tidak terus-menerus berada di jarak 20 cm atau kurang.

Langkah 10: Ide Pengembangan Lebih Lanjut

Simulasi ini bisa dikembangkan menjadi miniatur gerbang parkir yang lebih realistis. Sensor dapat dipadukan dengan tombol manual, kartu akses (RFID), buzzer, LCD, atau pencatatan jumlah kendaraan.

Kategori Ide Pengembangan
Upgrade Fitur Tambahkan tombol manual, tambahkan LCD status, tambahkan pencatatan jumlah kendaraan.
Kalibrasi Atur ulang batas jarak sesuai kebutuhan, uji di berbagai posisi, cek delay buka-tutup.
Aplikasi Nyata Palang parkir mini, gerbang akses, simulasi tol untuk keperluan edukasi.
⚠️ Catatan Keselamatan (klik untuk baca)

Untuk perangkat fisik, servo kecil hanya cocok untuk miniatur dan tidak boleh langsung dipakai untuk mengangkat palang berukuran besar — servo mikro seperti yang dipakai di proyek ini tidak cukup kuat untuk beban berat, dan bisa rusak/terbakar kalau dipaksakan. Jika ingin membuat versi lebih besar, kamu perlu:

  • Pisahkan sumber daya untuk beban besar dari sumber daya Arduino, supaya Arduino tidak ikut terbebani atau rusak.
  • Gunakan driver motor yang sesuai (komponen tambahan yang dirancang untuk mengontrol motor/aktuator berdaya lebih besar).
  • Uji catu daya terlebih dahulu sebelum menyambungkannya ke seluruh rangkaian.

Catatan Praktik Tambahan

Nilai batas 20 cm dipakai di proyek ini supaya simulasi mudah diuji. Pada alat nyata, batas ini bisa diubah sesuai posisi sensor dan ukuran palang yang sesungguhnya. Pastikan juga kabel daya dan ground selalu stabil sebelum menguji servo, karena servo membutuhkan arus listrik yang lebih besar dibanding LED — kalau jalur dayanya kurang stabil, servo bisa bergerak tersendat-sendat atau tidak bergerak sama sekali.

Rangkuman

  • Proyek ini menggabungkan sensor jarak (HC-SR04), aktuator (servo), dan indikator (LED) menjadi satu sistem otomatis yang saling terhubung.
  • Sensor ultrasonik bekerja dengan memancarkan gelombang suara dan mengukur waktu pantulannya untuk menghitung jarak — mirip prinsip kerja sonar.
  • Percabangan logika if...else dipakai untuk menentukan aksi berdasarkan kondisi jarak tertentu (dekat = buka, jauh = tutup).
  • Operator && ("dan") berguna untuk memastikan sebuah kondisi harus memenuhi dua syarat sekaligus secara bersamaan.
  • Prinsip kerja ini bisa diterapkan untuk banyak sistem otomatis lain di dunia nyata, seperti palang tol, gerbang parkir, atau sistem kontrol akses sederhana.

Coba Simulasi di Wokwi

🔒 Simulasi ini dikunci. Minta passcode ke gurumu untuk membuka.