25 Juni 2026

Sistem Parkir Pintar Berbasis ESP32 Menggunakan Sensor Ultrasonik HC-SR04, LCD I2C, LED, dan Buzzer

Perkembangan teknologi mikrokontroler membuat berbagai proyek elektronika menjadi lebih mudah untuk dibuat, bahkan oleh pemula. Salah satu proyek yang cukup menarik dan memiliki manfaat nyata adalah sistem parkir pintar berbasis ESP32. Proyek ini memanfaatkan sensor ultrasonik HC-SR04 untuk mengukur jarak kendaraan terhadap suatu objek, kemudian menampilkan hasil pengukuran pada LCD I2C, memberikan indikator visual menggunakan LED, serta memberikan peringatan suara melalui buzzer.
Parkir Pintar Berbasis ESP32

Sistem parkir pintar seperti ini sering ditemukan pada kendaraan modern. Ketika kendaraan mendekati tembok atau objek tertentu, sistem akan memberikan peringatan agar pengemudi dapat menghentikan kendaraan pada jarak yang aman. Dengan menggunakan ESP32, kita dapat membuat versi sederhana namun cukup efektif untuk tujuan pembelajaran maupun pengembangan lebih lanjut.

ESP32 dipilih karena memiliki performa yang tinggi, konektivitas WiFi dan Bluetooth bawaan, serta jumlah pin yang cukup banyak untuk menghubungkan berbagai sensor dan modul. Pada proyek ini, ESP32 bertugas sebagai pusat kendali yang membaca data dari sensor ultrasonik, mengolah informasi jarak, kemudian mengontrol LCD, LED, dan buzzer.

Sensor HC-SR04 bekerja dengan cara mengirimkan gelombang ultrasonik melalui pin Trigger. Gelombang tersebut akan memantul ketika mengenai suatu objek dan kembali diterima oleh pin Echo. Berdasarkan waktu tempuh gelombang tersebut, ESP32 dapat menghitung jarak antara sensor dan objek yang berada di depannya. Metode ini cukup akurat dan banyak digunakan dalam berbagai aplikasi pengukuran jarak.

Data jarak yang diperoleh kemudian ditampilkan pada LCD I2C 16x2. Penggunaan modul I2C membuat jumlah kabel yang digunakan menjadi lebih sedikit dibandingkan LCD paralel biasa. Pada ESP32, komunikasi I2C umumnya menggunakan pin GPIO 21 sebagai SDA dan GPIO 22 sebagai SCL. LCD akan menampilkan informasi jarak secara real-time sehingga pengguna dapat langsung melihat hasil pengukuran tanpa harus membuka Serial Monitor.

Selain menampilkan jarak, sistem juga memberikan informasi status kondisi parkir. Dalam proyek ini, status dibagi menjadi tiga kategori yaitu Aman, Waspada, dan Bahaya. Kategori ini ditentukan berdasarkan jarak yang terbaca oleh sensor ultrasonik.

Ketika jarak kendaraan masih lebih dari 50 cm, sistem menganggap kondisi masih aman. Pada kondisi ini LED hijau akan menyala dan buzzer tidak berbunyi. Pengemudi masih memiliki ruang yang cukup untuk melakukan manuver kendaraan tanpa risiko menabrak objek di depan.

Saat kendaraan mulai mendekat dan berada pada rentang jarak 20 cm hingga 50 cm, sistem akan masuk ke mode waspada. LED kuning akan menyala sebagai tanda bahwa kendaraan mulai mendekati batas aman. Selain itu buzzer akan berbunyi secara berkala sehingga pengemudi mendapatkan peringatan tambahan melalui suara.

Apabila kendaraan semakin dekat dan jarak kurang dari 20 cm, sistem akan mengaktifkan mode bahaya. Pada kondisi ini LED merah menyala dan buzzer berbunyi lebih cepat. Tujuannya adalah memberikan peringatan yang lebih jelas kepada pengemudi agar segera menghentikan kendaraan sebelum terjadi benturan.

Salah satu tantangan yang sering dihadapi saat membuat proyek ini adalah masalah komunikasi LCD I2C dengan ESP32. Banyak pengguna mengalami kondisi di mana LCD hanya menampilkan karakter acak atau bahkan tidak menampilkan apa pun. Penyebabnya bisa berasal dari alamat I2C yang tidak sesuai, penggunaan library yang tidak kompatibel, kesalahan wiring SDA dan SCL, atau pengaturan kontras LCD yang kurang tepat.

Solusi yang dapat dilakukan adalah memastikan alamat I2C LCD terlebih dahulu menggunakan program I2C Scanner. Selain itu, pastikan pin SDA terhubung ke GPIO 21 dan pin SCL terhubung ke GPIO 22. Penggunaan library LiquidCrystal_I2C yang sesuai juga sangat penting agar komunikasi antara ESP32 dan LCD berjalan dengan baik.

Keunggulan lain dari proyek ini adalah kemudahan pengembangannya menjadi sistem Internet of Things (IoT). Karena ESP32 telah memiliki konektivitas WiFi bawaan, data jarak dapat dikirimkan ke aplikasi smartphone, dashboard monitoring, maupun Telegram Bot. Dengan demikian pengguna dapat memantau kondisi parkir secara jarak jauh melalui internet.

Pengembangan lebih lanjut juga dapat dilakukan dengan menambahkan sensor tambahan, seperti sensor inframerah, kamera, atau modul RFID. Sistem bahkan dapat dikembangkan menjadi solusi parkir otomatis yang mampu mendeteksi ketersediaan slot parkir dan mengirimkan informasi secara real-time ke pengguna.

Bagi pelajar, mahasiswa, maupun hobiis elektronika, proyek ini sangat cocok dijadikan sarana belajar karena menggabungkan berbagai konsep dasar seperti sensor, output visual, output audio, komunikasi I2C, dan pemrograman mikrokontroler. Tingkat kesulitannya relatif mudah sehingga cocok untuk pemula yang baru belajar menggunakan ESP32.

Secara keseluruhan, sistem parkir pintar berbasis ESP32 dengan sensor HC-SR04, LCD I2C, LED, dan buzzer merupakan proyek yang menarik sekaligus bermanfaat. Selain membantu memahami cara kerja sensor jarak, proyek ini juga memberikan pengalaman dalam mengintegrasikan berbagai komponen elektronika menjadi sebuah sistem yang dapat bekerja secara otomatis. Dengan sedikit kreativitas, proyek sederhana ini dapat berkembang menjadi sistem parkir modern berbasis IoT yang lebih canggih dan memiliki nilai praktis yang tinggi.

Link YouTube : 
Source Code ada dibawah ini.

Parkir Pintar Berbasis ESP32
#include 
#include 

// HC-SR04
#define TRIG_PIN    12
#define ECHO_PIN    14

// Buzzer
#define BUZZER_PIN  2

// LED
#define LED_HIJAU   25
#define LED_KUNING  26
#define LED_MERAH   27

// LCD I2C 16x2
LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup() {

  Serial.begin(115200);

  // I2C ESP32
  Wire.begin(21, 22);

  pinMode(TRIG_PIN, OUTPUT);
  pinMode(ECHO_PIN, INPUT);

  pinMode(LED_HIJAU, OUTPUT);
  pinMode(LED_KUNING, OUTPUT);
  pinMode(LED_MERAH, OUTPUT);

  pinMode(BUZZER_PIN, OUTPUT);

  lcd.begin();
  lcd.backlight();

  lcd.setCursor(0, 0);
  lcd.print(" PARKIR PINTAR ");
  lcd.setCursor(0, 1);
  lcd.print("  Oleh Pak Salim  ");

  delay(2000);
  lcd.clear();
}

float bacaJarak() {

  digitalWrite(TRIG_PIN, LOW);
  delayMicroseconds(2);

  digitalWrite(TRIG_PIN, HIGH);
  delayMicroseconds(10);

  digitalWrite(TRIG_PIN, LOW);

  long durasi = pulseIn(ECHO_PIN, HIGH, 30000);

  if (durasi == 0) {
    return 999;
  }

  return durasi * 0.0343 / 2;
}

void loop() {

  float jarak_cm = bacaJarak();
  float jarak_m = jarak_cm / 100.0;

  Serial.print("Jarak = ");
  Serial.print(jarak_cm);
  Serial.println(" cm");

  // LCD Baris 1
  lcd.setCursor(0, 0);
  lcd.print("Jarak:");
  lcd.setCursor(6, 0);
  lcd.print("      ");
  lcd.setCursor(6, 0);
  lcd.print(jarak_cm, 1);
  lcd.print("cm");

  // Matikan semua LED
  digitalWrite(LED_HIJAU, LOW);
  digitalWrite(LED_KUNING, LOW);
  digitalWrite(LED_MERAH, LOW);

  // =========================
  // ZONA AMAN
  // =========================
  if (jarak_cm > 50) {

    digitalWrite(LED_HIJAU, HIGH);

    lcd.setCursor(0, 1);
    lcd.print("Status: AMAN  ");

    noTone(BUZZER_PIN);

    delay(200);
  }

  // =========================
  // ZONA WASPADA
  // =========================
  else if (jarak_cm > 20) {

    digitalWrite(LED_KUNING, HIGH);

    lcd.setCursor(0, 1);
    lcd.print("Status:WASPADA");

    tone(BUZZER_PIN, 1000);
    delay(100);

    noTone(BUZZER_PIN);
    delay(400);
  }

  // =========================
  // ZONA BAHAYA
  // =========================
  else {

    digitalWrite(LED_MERAH, HIGH);

    lcd.setCursor(0, 1);
    lcd.print("Status:BAHAYA ");

    tone(BUZZER_PIN, 2000);
    delay(100);

    noTone(BUZZER_PIN);
    delay(100);
  }
}
  
Comments


EmoticonEmoticon