
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!
| Komponen | Jumlah | Keterangan |
| Arduino Uno | 1 unit | Mikrokontroler utama |
| Sensor Ultrasonik HC-SR04 | 1 unit | Input pendeteksi jarak kendaraan |
| Motor Servo | 1 unit | Aktuator penggerak palang parkir |
| LCD 16×2 I2C | 1 unit | Output informasi teks |
| LED Merah | 1 unit | Indikator palang tertutup |
| LED Hijau | 1 unit | Indikator kendaraan diizinkan masuk |
| Buzzer | 1 unit | Notifikasi suara/alarm |
| Resistor, Breadboard, dan Kabel Jumper | Secukupnya | Koneksi 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:
| Komponen | Pin Arduino |
| Sensor Ultrasonik HC-SR04 (Trig) | Pin 3 |
| Sensor Ultrasonik HC-SR04 (Echo) | Pin 2 |
| LED Merah | Pin 4 |
| LED Hijau | Pin 5 |
| Buzzer | Pin 6 |
| Motor Servo | Pin 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:
- 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.
- 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.
- 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 viapulseIn(), lalu mengalkulasikan jarak dengan rumus fisikadurasi * 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 perulangando...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 perintahdelay(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 fungsidelay()dengan teknik non-blocking timer memanfaatkan fungsimillis(). - 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!
