Buka Senin - Jumat jam 08.30 s/d jam 16.30 , Sabtu Jam 8.30 s/d jam 13.00 , Minggu tutup
  • Selamat Datang di Indomaker ❯ Silahkan pesan produk sesuai kebutuhan anda, kami siap melayani.
  • Selamat Datang di Indomaker ❯ Silahkan pesan produk sesuai kebutuhan anda, kami siap melayani.
Beranda » Blog » Bikin Sistem Parkir Otomatis dengan Penghitung Kendaraan dan Indikator Slot Kosong

Bikin Sistem Parkir Otomatis dengan Penghitung Kendaraan dan Indikator Slot Kosong

Diposting pada 10 November 2026 oleh indo maker / Dilihat: 6 kali / Kategori: ,

Halo Sobat Maker! Kamu lagi cari proyek mekatronika dan IoT yang seru, praktis, dan kepake banget di dunia nyata? Membuat sistem parkir otomatis sendiri di rumah bisa jadi langkah DIY paling pas buat melatih skill sistem terbenam (embedded system) kita. Dengan memadukan fitur penghitung kendaraan otomatis dan indikator slot parkir, kita bakal belajar cara menginterfaskan sensor inframerah, aktuator servomotor, serta pemrosesan layar LCD digital secara mudah dan menyenangkan!

1. Alat dan Bahan

Komponen Jumlah Keterangan
Arduino Nano 1 unit Mikrokontroler utama pengontrol sensor inframerah dan servomotor
Nano Expansion Shield 1 unit Board ekspansi untuk mempermudah koneksi kabel pin komponen
Sensor Inframerah GP2Y0A21 1 unit Sensor pemantau jarak objek/kendaraan secara presisi
Servomotor 1 unit Aktuator mekanis penggerak palang pintu parkir
Kabel USB A Male 1 unit Kabel komunikasi data dan pengunggahan kode program
Komputer / Laptop 1 unit Perangkat perangkat lunak untuk penyuntingan skrip program
ESP32 1 unit Mikrokontroler berbasis Xtensa 32-bit LX6 untuk pengolahan tampilan
LCD I2C 16×2 1 unit Modul layar tampilan karakter 16 kolom x 2 baris
Breadboard 1 unit Papan rekayasa sirkuit dan distribusi daya komponen
Kabel Jumper Secukupnya Kabel penghubung antar-pin mikrokontroler dan sensor
Pustaka LiquidCrystal_I2C 1 software library Pustaka Arduino IDE untuk kontrol antarmuka LCD I2C
Arduino IDE 1 software Lingkungan pengembangan terpadu untuk penyusunan kode

2. Skematik Rangkaian

Untuk merakit proyek ini dengan rapi dan aman, kita membagi pemetaan jalur menjadi dua area utama berdasarkan fungsi mikrokontrolernya.

Jalur Mikrokontroler Arduino Nano (Sensor & Palang)

  • Sensor Inframerah GP2Y0A21: Hubungkan kabel sinyal ke pin Analog A0 pada Arduino Nano/Shield.
  • Servomotor Palang: Hubungkan kabel sinyal kontrol aktuator ke pin digital 3.
  • Perhatian Khusus Shield: Saat memasang kabel ke Nano Expansion Shield, pastikan kamu selalu memeriksa urutan pin SVG (S = Signal, V = VCC 5V, G = Ground). Jangan sampai terbalik agar komponen tidak mengalami kerusakan atau korsleting.

Jalur Mikrokontroler ESP32 (Tampilan LCD I2C)

  • VCC modul LCD I2C terhubung ke pin VIN pada ESP32.
  • GND modul LCD I2C terhubung ke pin GND pada ESP32.
  • SDA modul LCD I2C terhubung ke pin GPIO21 (SDA) pada ESP32.
  • SCL modul LCD I2C terhubung ke pin GPIO22 (SCL) pada ESP32.

Penggunaan antarmuka I2C (Inter-Integrated Circuit) pada modul LCD 16×2 memberikan keuntungan besar karena sangat hemat jalur GPIO. Protokol komunikasi ini hanya membutuhkan 2 jalur data serial (SDA dan SCL) untuk mentransfer data karakter secara stabil, jauh lebih efisien dibandingkan mode paralel konvensional yang memakan banyak pin hardware.

3. Cara Kerja Sistem Parkir Otomatis

Sistem parkir otomatis ini menerapkan arsitektur dual-board yang cerdas dan efisien. Arduino Nano bertugas menangani pembacaan sensor dan pergerakan aktuator secara real-time tanpa latency, sementara ESP32 memanfaatkan performa tinggi prosesor dual-core Xtensa 32-bit LX6 untuk mengelola antarmuka layar visual LCD I2C serta membuka potensi konektivitas IoT di masa depan.

Proses kerja sistem diawali dari pembacaan sensor inframerah GP2Y0A21 yang memancar dan mengukur jarak kendaraan secara kontinu. Ketika sebuah kendaraan mendekati pintu masuk dan nilai analog sensor melampaui batas ambang deteksi (DETECT_VAL 300), sistem mengonfirmasi kehadiran objek.

Seketika rintangan terdeteksi, Arduino Nano memberi sinyal PWM kepada servomotor untuk mengangkat palang parkir dari posisi tertutup (BAS 90 derajat) menuju posisi terbuka penuh (HAUT 180 derajat). Begitu kendaraan selesai melintas dan pembacaan analog sensor kembali turun di bawah batas aman (CLEAR_VAL 200), sistem mengonfirmasi bahwa lintasan telah bersih. Servomotor kemudian memutar palang kembali ke posisi semula.

Secara bersamaan, status palang pintu serta pembaruan jumlah sisa slot parkir diproses untuk ditampilkan secara jernih pada layar LCD I2C 16×2. Kamu bisa mendalami dasar pemrograman mikrokontroler lewat dokumentasi resmi Arduino dan mempelajari spesifikasi teknis chip pada datasheet ESP32.

4. Pemrograman dan Kode Rangkaian

Sub-bagian: Instalasi Library dan Uji Sensor Inframerah

Sebelum mengunggah kode, buka Arduino IDE di komputer kamu. Install pustaka LCD terlebih dahulu melalui menu Sketch > Include Library > Manage Libraries, lalu cari dan unduh LiquidCrystal_I2C.

Gunakan skrip uji berikut untuk membaca nilai analog dari sensor inframerah GP2Y0A21. Kode ini mendefinisikan pin input gp2y0a21Pin = A0, nilai batas deteksi rintangan DETECT_VAL 300, dan batas kondisi area bersih CLEAR_VAL 200.

// Parameter
#define DETECT_VAL 300
#define CLEAR_VAL 200

// Konstanta
const int gp2y0a21Pin = A0;

// Variabel
int gp2y0a21Val = 0;
bool object = false, oldStatus = true;
String comment = "";

void setup() {
  Serial.begin(9600);
  Serial.println(F("Initialize System"));

  pinMode(gp2y0a21Pin, INPUT);
}

void loop() {
  readSensor();
  delay(500);
}

void readSensor() {
  gp2y0a21Val = analogRead(gp2y0a21Pin);

  if (gp2y0a21Val > DETECT_VAL) {
    object = true;
    comment = "Obstacle detected";
  }

  if (gp2y0a21Val < CLEAR_VAL) {
    object = false;
    comment = "No obstacle";
  }

  if (oldStatus != object) {
    Serial.print(F("Valeur du capteur : "));
    Serial.print(gp2y0a21Val);
    Serial.print(F(" -> "));
    Serial.println(comment);
  }

  oldStatus = object;
}

 

Sub-bagian: Uji Servomotor Palang Parkir

Selanjutnya, kita lakukan pengujian pergerakan sudut servomotor. Pada kode uji ini, konstanta HAUT 180 mewakili sudut palang terangkat (posisi terbuka), BAS 90 mewakili sudut palang sejajar (posisi tertutup), dan UPDATE_TIME 15 menentukan jeda milidetik per derajat pergerakan agar gerakan palang terkesan halus dan tidak mengejutkan aktuator.

#include <Servo.h>

// Parameter
#define UPDATE_TIME 15
#define HAUT 180
#define BAS 90

// Konfigurasi pin dan objek servo
int servoPin = 3;
Servo myServo;
int pos = BAS;

void setup() {
  Serial.begin(9600);
  myServo.attach(servoPin);
}

void loop() {
  // Menggerakkan servo dari posisi tertutup ke terbuka
  for (pos = BAS; pos <= HAUT; pos += 1) {
    myServo.write(pos);
    delay(UPDATE_TIME);
  }

  Serial.print(F("Servo position HAUT : "));
  Serial.println(HAUT);
  delay(500);

  // Menggerakkan servo dari posisi terbuka ke tertutup
  for (pos = HAUT; pos >= BAS; pos -= 1) {
    myServo.write(pos);
    delay(UPDATE_TIME);
  }

  Serial.print(F("Servo position BAS : "));
  Serial.println(BAS);
  delay(500);
}

 

Sub-bagian: Integrasi Kode Palang Parkir Otomatis

Setelah masing-masing komponen teruji, kita satukan ke dalam logika kontrol utama. Dalam skrip terintegrasi ini, saat sensor mengonfirmasi objek (object == true), fungsi fenceUp() dieksekusi untuk membuka palang. Begitu area kembali steril (object == false), fungsi fenceDown() dipanggil untuk menutup palang secara otomatis.

Perlu diingat bahwa skrip Arduino Nano ini berfokus pada keandalan kontrol aktuator palang. Untuk menampilkan data slot parkir pada modul LCD I2C 16×2 yang terhubung ke ESP32, kita menggunakan fungsi standar perpustakaan LiquidCrystal_I2C seperti lcd.init(), lcd.backlight(), lcd.setCursor(), dan lcd.print() guna mencetak status kendaraan dan penghitung slot secara real-time.

#include <Servo.h>

// Parameter sensor dan servomotor
#define DETECT_VAL 300
#define CLEAR_VAL 200
#define UPDATE_TIME 15
#define HAUT 180
#define BAS 90

// Konfigurasi pin
const int gp2y0a21Pin = A0;
const int servoPin = 3;

// Variabel sensor
int gp2y0a21Val = 0;
bool object = false, oldStatus = true;
String comment = "";

// Variabel servomotor
int pos = BAS;
Servo myServo;

void setup() {
  Serial.begin(9600);
  Serial.println(F("Initialize System"));

  pinMode(gp2y0a21Pin, INPUT);
  myServo.attach(servoPin);
}

void loop() {
  readSensor();
}

void readSensor() {
  gp2y0a21Val = analogRead(gp2y0a21Pin);

  if (gp2y0a21Val > DETECT_VAL) {
    object = true;
    comment = "Obstacle detected";
  }

  if (gp2y0a21Val < CLEAR_VAL) {
    object = false;
    comment = "No obstacle";
  }

  if (oldStatus != object) {
    Serial.print(F("Valeur du capteur : "));
    Serial.print(gp2y0a21Val);
    Serial.print(F(" -> "));
    Serial.println(comment);

    if (object == true) {
      fenceUp();
    } else {
      fenceDown();
    }
  }

  oldStatus = object;
}

// Fungsi membuka palang parkir
void fenceUp() {
  for (pos = pos; pos <= HAUT; pos += 1) {
    myServo.write(pos);
    delay(UPDATE_TIME);
  }

  Serial.print(F("Servo position HAUT : "));
  Serial.println(HAUT);
}

// Fungsi menutup palang parkir
void fenceDown() {
  for (pos = pos; pos >= BAS; pos -= 1) {
    myServo.write(pos);
    delay(UPDATE_TIME);
  }

  Serial.print(F("Servo position BAS : "));
  Serial.println(BAS);
}

 

5. Pengujian dan Troubleshooting LCD I2C

Untuk menguji performa sirkuit, dekatkan tangan atau objek simulasi kendaraan di depan sensor inframerah GP2Y0A21. Amatilah pergerakan servomotor yang mendeteksi objek dan membuka palang pintu, lalu otomatis kembali menutup saat objek dijauhkan.

Apabila modul LCD I2C 16×2 milikmu tidak menampilkan teks atau layarnya tampak kosong, masalah paling umum terletak pada perbedaan alamat I2C hardware (alamat default standar biasanya 0x27). Kamu bisa menjalankan skrip I2C Scanner di bawah ini untuk mencari alamat heksadesimal modul LCD kamu melalui Serial Monitor (pada baud rate 115200):

#include <Wire.h>

void setup() {
  Wire.begin();
  Serial.begin(115200);
  Serial.println("\nI2C Scanner");
}

void loop() {
  byte error, address;
  int nDevices = 0;
  Serial.println("Scanning...");

  for(address = 1; address < 127; address++ ) {
    Wire.beginTransmission(address);
    error = Wire.endTransmission();

    if (error == 0) {
      Serial.print("I2C device found at address 0x");
      if (address<16) Serial.print("0");
      Serial.println(address,HEX);
      nDevices++;
    } else if (error==4) {
      Serial.print("Unknow error at address 0x");
      if (address<16) Serial.print("0");
      Serial.println(address,HEX);
    } 
  }
  if (nDevices == 0) Serial.println("No I2C devices found\n");
  else Serial.println("done\n");
  delay(5000); 
}

6. Pengembangan Sistem dan Kesimpulan

Membuat proyek palang parkir otomatis ini memberikan wawasan mekatronika yang solid, terutama dalam hal pemrosesan sinyal analog sensor, pengontrolan aktuator presisi, dan manajemen antarmuka tampilan digital. Proyek ini sangat pas dijadikan portofolio dasar untuk kamu yang ingin mendalami dunia otomatisasi industri dan IoT. Kalau kamu tertarik mencoba proyek berbasis sensor seru lainnya, kamu juga bisa membaca panduan rancang sistem pendeteksi kebakaran dengan kipas otomatis dan alarm peringatan untuk semakin memperkaya skill maker kamu!

Sebagai langkah pengembangan lebih lanjut, kamu dapat mengintegrasikan beberapa fitur canggih berikut:

  • Fitur Keselamatan (Safety Device): Menambahkan sensor pengaman tambahan yang mampu menyela (interrupt) siklus penutupan palang. Jika ada objek mendadak melintas saat fungsi fenceDown() berjalan, logika kontrol akan menghentikan proses penutupan dan langsung memanggil fenceUp() demi mencegah palang menabrak kendaraan.
  • Lampu Lalu Lintas (Traffic Light): Menambahkan LED indikator merah dan hijau yang disinkronkan dengan variabel status palang (HAUT atau BAS).
  • Pembaca Kartu RFID: Mengintegrasikan modul RFID reader sebagai sistem otentikasi pintu masuk, sehingga palang hanya akan terangkat jika pengguna menempelkan kartu (badge) akses yang valid.

Bagikan ke

Bikin Sistem Parkir Otomatis dengan Penghitung Kendaraan dan Indikator Slot Kosong

Saat ini belum tersedia komentar.

Silahkan tulis komentar Anda

Bikin Sistem Parkir Otomatis dengan Penghitung Kendaraan dan Indikator Slot Kosong

Produk yang sangat tepat, pilihan bagus..!

Berhasil ditambahkan ke keranjang belanja
Lanjut Belanja
Checkout
Produk Quick Order

Pemesanan dapat langsung menghubungi kontak dibawah: