Bikin Palang Parkir Otomatis Pakai Arduino Uno dan Sensor Ultrasonik HC-SR04

Halo Sobat Maker! Di tempat-tempat publik seperti pusat perbelanjaan, perkantoran, atau rumah sakit, pengelolaan parkir secara manual sering kali bikin pusing. Penggunaan sistem manual kerap memicu antrean panjang, keterlambatan, hingga rawan kesalahan dalam pengaturan kendaraan. Nah, untuk mengatasi masalah tersebut, kita bisa bikin proyek parkir otomatis arduino ultrasonik yang cerdas, efisien, dan bekerja tanpa kontak fisik. Sistem otomatisasi ini akan mendeteksi kendaraan secara langsung, menggerakkan palang parkir, membunyikan indikator, sekaligus menghitung jumlah kendaraan yang masuk!

Alat dan Bahan

Untuk merakit proyek gerbang parkir otomatis ini, Sobat memerlukan beberapa komponen hardware berikut. Pastikan semua komponen sudah siap di meja kerja sebelum mulai merangkai!

KomponenJumlahKeterangan
Arduino Uno1 unitMikrokontroler utama
Sensor Ultrasonik HC-SR041 unitInput pendeteksi jarak kendaraan
Motor Servo1 unitAktuator penggerak palang parkir
LCD 16×2 I2C1 unitOutput informasi teks
LED Merah1 unitIndikator palang tertutup
LED Hijau1 unitIndikator kendaraan diizinkan masuk
Buzzer1 unitNotifikasi suara/alarm
Resistor, Breadboard, dan Kabel JumperSecukupnyaKoneksi rangkaian

Skematik Rangkaian

Proses pengkabelan sistem ini cukup sederhana. Agar pembagian daya ke seluruh komponen aktif (seperti Motor Servo, Sensor Ultrasonik, LCD, LED, dan Buzzer) berjalan stabil, hubungkan pin 5V dan GND dari Arduino Uno langsung ke jalur bus positif (+) dan negatif (-) pada breadboard.

Eits, jangan sampai salah tancap pin ya! Berikut adalah pemetaan pinout antar-komponen yang digunakan:

KomponenPin Arduino
Sensor Ultrasonik HC-SR04 (Trig)Pin 3
Sensor Ultrasonik HC-SR04 (Echo)Pin 2
LED MerahPin 4
LED HijauPin 5
BuzzerPin 6
Motor ServoPin 13
Power Rangkaian (VCC & GND)5V & Ground

Pro Tip dari Mimin: Modul LCD 16×2 I2C umumnya menggunakan alamat I2C 0x20 atau 0x27 tergantung varian chip pendorongnya (PCF8574). Jika layar LCD kamu cuma menyala tapi tidak menampilkan teks saat program diunggah, coba ubah alamat pada kode program dari 0x20 ke 0x27 ya!

Cara Kerja Sistem Parkir Otomatis

Sistem parkir ini bekerja dengan memanfaatkan pantulan gelombang ultrasonik untuk mengukur jarak kendaraan. Sensor HC-SR04 akan memancarkan gelombang ultrasonik ke arah kendaraan, kemudian menangkap kembali gelombang yang dipantulkan. Kecepatan suara di udara sekitar 340 m/s atau setara dengan 0,034 cm/µs. Karena gelombang ultrasonik menempuh perjalanan pergi dan kembali, waktu yang terukur merupakan waktu tempuh dua arah. Oleh karena itu, durasi tersebut dikalikan 0,034 lalu dibagi 2 untuk mendapatkan jarak kendaraan dari sensor dalam satuan sentimeter..

Logika alur operasional sistem terbagi menjadi tiga tahapan utama:

  1. Kondisi Standby / Awal Saat sistem pertama kali dinyalakan, palang parkir berada dalam posisi tertutup (motor servo pada sudut 0°). LED Merah menyala sebagai penanda kendaraan belum boleh masuk, sementara LED Hijau dan Buzzer dalam keadaan mati. Layar LCD 16×2 menampilkan pesan “MENDEKAT!” di baris pertama dan total hitungan “Masuk: 0” di baris kedua.
  2. Deteksi Kendaraan (Jarak < 40 cm) Ketika ada kendaraan mendekati gerbang dengan jarak kurang dari 40 cm, sensor ultrasonik mendeteksi keberadaannya dan mengirim sinyal ke Arduino. Mikrokontroler langsung menggerakkan motor servo membuka palang hingga sudut 90°. LED Merah padam, LED Hijau menyala, dan Buzzer berbunyi pada frekuensi 1000 Hz. Di saat yang sama, variabel penghitung kendaraan bertambah satu (+1) dan layar LCD memperbarui tampilannya menjadi “Silakan Masuk” beserta total kendaraan yang masuk. Sistem kemudian memberikan jeda waktu (delay) selama 4 detik saat mobil melintas.
  3. Penutupan Palang (Jarak > 40 cm) Setelah jeda 4 detik, sistem melakukan pemeriksaan kontinu untuk memastikan kendaraan benar-benar telah melintas (jarak kembali > 40 cm). Begitu area di bawah sensor bersih, motor servo memutar palang kembali ke posisi tertutup (0°), LED Merah kembali menyala, LED Hijau dan Buzzer dimatikan, serta layar LCD kembali ke status siaga menampilkan teks “MENDEKAT!” dengan angka kendaraan terbaru.

Implementasi Kode Program

Berikut adalah kode C++/Arduino IDE lengkap yang digunakan untuk mengontrol seluruh jalannya sistem parkir otomatis:

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Servo.h>

// Deklarasi pin
const int trigPin = 3;
const int echoPin = 2;
const int ledMerah = 4;
const int ledHijau = 5;
const int buzzer = 6;
const int servoPin = 13;

// Inisialisasi LCD I2C ukuran 16x2 alamat 0x20
LiquidCrystal_I2C lcd(0x20, 16, 2);
Servo palang;

// Variabel jumlah kendaraan
int jumlahKendaraan = 0;

void setup() {
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  pinMode(ledMerah, OUTPUT);
  pinMode(ledHijau, OUTPUT);
  pinMode(buzzer, OUTPUT);

  palang.attach(servoPin);
  palang.write(0); // Palang tertutup

  digitalWrite(ledMerah, HIGH); // LED merah menyala
  digitalWrite(ledHijau, LOW);  // LED hijau mati
  noTone(buzzer);              // Matikan suara buzzer

  lcd.init();      // Inisialisasi LCD
  lcd.backlight(); // Nyalakan backlight
  lcd.setCursor(0, 0);
  lcd.print("MENDEKAT!");
  lcd.setCursor(0, 1);
  lcd.print("Masuk: 0");
}

void loop() {
  long durasi;
  int jarak;

  // Kirim sinyal trigger
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);

  // Baca echo dan hitung jarak
  durasi = pulseIn(echoPin, HIGH);
  jarak = durasi * 0.034 / 2;

  if (jarak < 40) {
    // Mobil terdeteksi
    palang.write(90); // Palang terbuka
    digitalWrite(ledMerah, LOW);
    digitalWrite(ledHijau, HIGH);
    tone(buzzer, 1000); // Bunyikan buzzer

    jumlahKendaraan++;

    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("Silakan Masuk");
    lcd.setCursor(0, 1);
    lcd.print("Masuk: ");
    lcd.print(jumlahKendaraan);

    delay(4000); // Tunggu mobil lewat

    // Tunggu sampai mobil pergi
    do {
      digitalWrite(trigPin, LOW);
      delayMicroseconds(2);
      digitalWrite(trigPin, HIGH);
      delayMicroseconds(10);
      digitalWrite(trigPin, LOW);
      durasi = pulseIn(echoPin, HIGH);
      jarak = durasi * 0.034 / 2;
    } while (jarak < 40);

    // Mobil sudah lewat
    palang.write(0);
    digitalWrite(ledMerah, HIGH);
    digitalWrite(ledHijau, LOW);
    noTone(buzzer);

    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("MENDEKAT!");
    lcd.setCursor(0, 1);
    lcd.print("Masuk: ");
    lcd.print(jumlahKendaraan);
  }

  delay(200);
}

Struktur kode di atas dirancang dengan alur yang sangat sistematis:

  • Fungsi setup(): Mengatur arah mode pin hardware, mengunci posisi awal servo pada sudut 0° (tertutup), menyalakan LED Merah, serta menginisialisasi layar LCD I2C agar siap menampilkan pesan awal.
  • Fungsi loop(): Mengirimkan pulsa trigger singkat selama 10 mikrodetik untuk memicu gelombang ultrasonik, membaca durasi pantulannya via pulseIn(), lalu mengalkulasikan jarak dengan rumus fisika durasi * 0.034 / 2.
  • Percabangan if (jarak < 40): Menggerakkan servo ke sudut 90°, mengubah warna indikator LED, mengaktifkan buzzer, menambahkan angka penghitung kendaraan, dan memperbarui informasi LCD.
  • Perulangan do...while: Setelah jeda 4 detik, program secara cerdas melakukan pembacaan ulang jarak di dalam perulangan do...while. Palang parkir ditahan agar tetap terbuka selama jarak objek masih < 40 cm, dan baru diperintahkan menutup setelah mobil benar-benar lepas dari area sensor (jarak > 40 cm).

Tips Pengembangan dan Catatan Sistem

Proyek ini memiliki keunggulan utama pada tingkat responsivitasnya, karena proses deteksi dan pembukaan palang berjalan secara otomatis tanpa menyentuh tombol atau memerlukan interaksi fisik manusia. Tampilan pesan pada LCD serta indikator suara dari buzzer juga membuat sistem menjadi sangat interaktif.

Namun, untuk pengembangan skala industri atau tugas akhir, ada beberapa catatan sistem yang perlu Sobat perhatikan:

  • Efek Blocking delay(4000): Penggunaan perintah delay(4000) membuat mikrokontroler “membeku” selama 4 detik. Selama periode ini, Arduino tidak dapat memproses pembacaan sensor baru. Jika ada antrean kendaraan yang sangat padat, sistem bisa terasa kurang responsif. Solusi pemrogramannya adalah mengganti fungsi delay() dengan teknik non-blocking timer memanfaatkan fungsi millis().
  • Pemantauan Sisa Kapasitas Parkir: Sistem saat ini baru memiliki sensor di pintu masuk. Jika Sobat ingin membuat sistem monitoring area parkir secara real-time, tambahkan sensor ultrasonik kedua di pintu keluar untuk mengurai/mengurangi angka penghitung kendaraan.

Penerapan kombinasi sensor dan mikrokontroler dalam proyek kendali otomatis seperti ini dapat dikembangkan lebih lanjut untuk mendukung sistem manajemen lalu lintas parkir berbasis IoT yang modern.

Kesimpulan

Bikin palang parkir otomatis sendiri ternyata nggak sulit, kan? Dengan memadukan Arduino Uno, sensor ultrasonik HC-SR04, motor servo, dan modul pendukung lainnya, kita berhasil menciptakan prototipe sistem kendali gerbang parkir yang otomatis, responsif, dan informatif. Proyek ini cocok banget buat dijadikan sarana latihan pemahaman hardware dan pemrograman C++. Tertarik mencoba? Yuk, langsung siapkan komponenmu dan mulai rakit proyek parkir otomatis ini di rumah atau kampus! Selamat mencoba, Sobat!

Related Post

Leave a Reply

Your email address will not be published. Required fields are marked *

Mau Cetak PCB Custom? Cek Biaya