• 082226375801
  • alfianmaarif@ee.uad.ac.id
  • Yogyakarta
Materi
Membuat Smart Gate & Smart Parking || Palang Pintu & Parkir Otomatis di WOKWI #wokwi #smart #project

Membuat Smart Gate & Smart Parking || Palang Pintu & Parkir Otomatis di WOKWI #wokwi #smart #project

Pada bagian ini akan dibahas pembuatan sistem Smart Gate dan Smart Parking Mini berbasis mikrokontroler Arduino Uno, layar OLED 0.96 inci I2C (SSD1306) dengan pustaka U8g2, 2 unit Motor Servo sebagai palang pintu gerbang masuk dan keluar, indikator LED Parkir Penuh, serta 2 pasang sensor jarak Ultrasonik HC-SR04 pada platform simulasi WOKWI. Skematik rangkaian ditunjukkan pada Gambar 1, program Arduino pada Kode 1, dan video pembuatan pada tautan Video 1. Sistem memantau kuota ketersediaan slot parkir (kapasitas 10 slot) secara otomatis melalui pergerakan kendaraan yang masuk dan keluar. Ketika kendaraan terdeteksi di gerbang masuk dan slot masih tersedia, palang pintu masuk akan terbuka dan mengurangi jumlah sisa slot secara otomatis setelah kendaraan lewat. Sebaliknya, saat kendaraan keluar melalui gerbang keluar, palang pintu keluar akan terbuka dan menambah kembali jumlah slot yang tersedia. Jika kapasitas parkir telah habis (STATUS: PENUH), sistem secara otomatis mengunci palang pintu masuk dan menyalakan LED indikator.

Gambar 1. Skematik rangkaian sistem

List Pin:

  • Display OLED 0.96″ I2C (SSD1306 – Alamat: 0x3C / HW I2C)
    VCC => 5V
    GND => GND
    SDA => Analog Pin A4 (SDA)
    SCL => Analog Pin A5 (SCL)
  • Sensor Ultrasonik Gerbang Masuk (HC-SR04 In)
    TRIG_IN => Digital Pin 2
    ECHO_IN => Digital Pin 3
    VCC => 5V
    GND => GND
  • Sensor Ultrasonik Gerbang Keluar (HC-SR04 Out)
    TRIG_OUT => Digital Pin 4
    ECHO_OUT => Digital Pin 5
    VCC => 5V
    GND => GND
  • Motor Servo & Indikator LED
    Servo Gerbang Masuk (gateIn) => Digital Pin 9
    Servo Gerbang Keluar (gateOut) => Digital Pin 10
    LED Indikator Parkir Penuh => Digital Pin 11 (Anode via Resistor 220 Ohm, Cathode => GND)

    Kode Arduino 1. Kode Program

    // =============================
    // ALFIAN CENTER
    // SUBSCRIBE
    // SMART GATE + SMART PARKING
    // PROGRAM BAKAL DI SHARE KALO LIKE TEMBUS 50 DAN KOMEN 20
    // ATAU BISA KIRIM EMAIL VIA KOMENTAR
    // =============================
    
    
    #include <Wire.h>
    #include <Servo.h>
    #include <U8g2lib.h>
    
    // === OLED 0.96" I2C ===
    U8G2_SSD1306_128X64_NONAME_F_HW_I2C oled(U8G2_R0, U8X8_PIN_NONE);
    
    // === Servo & LED ===
    Servo gateIn;
    Servo gateOut;
    #define LED_PIN 11
    
    // === Sensor Ultrasonik ===
    #define TRIG_IN 2
    #define ECHO_IN 3
    #define TRIG_OUT 4
    #define ECHO_OUT 5
    
    // === Konfigurasi ===
    int TOTAL_SLOTS = 10;    // jumlah total slot (ubah sesuai kebutuhan)
    int availableSlots = TOTAL_SLOTS;
    #define DIST_GATE 80     // jarak trigger buka gate (cm)
    #define DIST_PASS 100    // jarak saat mobil sudah lewat (cm)
    unsigned long gateDelay = 200;
    
    // === Status ===
    bool gateInOpen = false;
    bool gateOutOpen = false;
    unsigned long lastDisplay = 0;
    
    // === Fungsi Baca Ultrasonik ===
    long readDistanceCM(int trig, int echo) {
      digitalWrite(trig, LOW);
      delayMicroseconds(2);
      digitalWrite(trig, HIGH);
      delayMicroseconds(10);
      digitalWrite(trig, LOW);
      long duration = pulseIn(echo, HIGH, 25000);
      long distance = duration * 0.034 / 2;
      return distance == 0 ? 999 : distance;
    }
    
    // === Gambar indikator mobil (bar progress) ===
    void drawParkingBar(int total, int available) {
      int used = total - available;
      int barWidth = 100;       // lebar total bar
      int barHeight = 10;       // tinggi bar
      int x = 10;
      int y = 50;
    
      oled.drawFrame(x - 2, y - 2, barWidth + 4, barHeight + 4); // bingkai luar
    
      // Lebar tiap slot
      float segmentWidth = (float)barWidth / total;
    
      // Gambar bar isi berdasarkan slot terisi
      for (int i = 0; i < used; i++) {
        int segX = x + (i * segmentWidth);
        oled.drawBox(segX, y, segmentWidth - 1, barHeight);
      }
    }
    
    // === Tampilan OLED ===
    void drawDisplay() {
      oled.clearBuffer();
      oled.setFont(u8g2_font_6x10_tr);
    
      //oled.setCursor(0, 10);
      //oled.print(F("SMART PARKING MINI"));
    
      oled.setCursor(0, 25);
      oled.print("Total Slot : ");
      oled.print(TOTAL_SLOTS);
    
      oled.setCursor(0, 38);
      oled.print("Tersisa    : ");
      oled.print(availableSlots);
    
      // === Bar pengisian slot ===
      drawParkingBar(TOTAL_SLOTS, availableSlots);
    
      // === LED indikator ===
      if (availableSlots == 0) {
        oled.setCursor(0, 10);
        oled.print(F("STATUS: PENUH"));
        digitalWrite(LED_PIN, HIGH);
      } else {
        oled.setCursor(0, 10);
        oled.print(F("STATUS: TERSEDIA"));
        digitalWrite(LED_PIN, LOW);
      }
    
      oled.sendBuffer();
    }
    
    // === Setup awal ===
    void setup() {
      pinMode(TRIG_IN, OUTPUT);
      pinMode(ECHO_IN, INPUT);
      pinMode(TRIG_OUT, OUTPUT);
      pinMode(ECHO_OUT, INPUT);
      pinMode(LED_PIN, OUTPUT);
    
      gateIn.attach(9);
      gateOut.attach(10);
      gateIn.write(0);
      gateOut.write(0);
    
      oled.begin();
      oled.clearBuffer();
      oled.setFont(u8g2_font_6x10_tr);
      oled.drawStr(0, 30, "Smart Parking Init...");
      oled.sendBuffer();
      delay(1500);
    }
    
    // === Loop utama ===
    void loop() {
      long distIn = readDistanceCM(TRIG_IN, ECHO_IN);
      long distOut = readDistanceCM(TRIG_OUT, ECHO_OUT);
    
      // === Mobil Masuk ===
      if (distIn < DIST_GATE && availableSlots > 0 && !gateInOpen) {
        gateIn.write(90);
        gateInOpen = true;
      }
    
      if (gateInOpen && distIn > DIST_PASS) {
        gateIn.write(0);
        gateInOpen = false;
        if (availableSlots > 0) availableSlots--;
      }
    
      // === Mobil Keluar ===
      if (distOut < DIST_GATE && availableSlots < TOTAL_SLOTS && !gateOutOpen) {
        gateOut.write(90);
        gateOutOpen = true;
      }
    
      if (gateOutOpen && distOut > DIST_PASS) {
        gateOut.write(0);
        gateOutOpen = false;
        if (availableSlots < TOTAL_SLOTS) availableSlots++;
      }
    
      // === Update OLED ===
      if (millis() - lastDisplay > 500) {
        drawDisplay();
        lastDisplay = millis();
      }
    
      delay(100);
    }
    

    Video 1. Video tutorial pembuatan

    TAG:

    smart parking mini arduino, smart gate arduino, palang pintu otomatis arduino, parkir otomatis arduino, sensor ultrasonik hc-sr04 arduino, oled ssd1306 i2c u8g2, servo sg90 palang pintu, simulasi wokwi arduino, tutorial smart parking wokwi, arduino smart gate project, sensor jarak parkir arduino, indikator parkir penuh led, program smart parking arduino, library u8g2lib arduino, library servo arduino, trig in trig out ultrasonik, echo in echo out hc-sr04, gpio arduino uno, pinout arduino smart parking, servo gerbang masuk keluar, penghitung slot parkir otomatis, tutorial wokwi indonesia, koding smart gate arduino, sistem parkir pintar arduino, proyek iot mekatronika, praktikum mikrokontroler arduino, simulasi arduino tanpa hardware, platform simulasi wokwi, wokwi smart parking mini, source code smart gate, program arduino palang pintu, diy smart parking arduino, pintu gerbang otomatis arduino, display oled u8g2 arduino, manajemen kuota parkir otomatis, kontrol servo pulsein arduino, fungsi readdistancecm, sistem otomasi gedung, smart city parking system, proyek mekatronika elektro, proyek sains arduino, tugas akhir smart parking, skripsi arduino palang pintu, ide proyek arduino uno, skematik smart parking arduino, diagram rangkaian hc-sr04 servo, kodingan arduino parkir otomatis, belajar arduino wokwi, panduan wokwi arduino, simulator parkir wokwi, tutorial mikrokontroler indonesia, proyek elektronika populer, kodingan smart gate lengkap, sistem palang parkir otomatis, otomasi fasilitas umum, sistem deteksi mobil masuk keluar, tampilan progress bar oled u8g2, cara koding servo arduino, variabel total slots arduino, pengukur jarak cm ultrasonik, logika parkir penuh arduino, sistem peringatan parkir penuh, otomatisasi kota pintar, proyek mekatronika elektro, simulasi hardware parkir pintar, sistem smart parking mini, proyek arduino populer, kodingan palang pintu otomatis, sensor ultrasonik dual hc sr04, rangkaian servo dan oled, tutorial mikrokontroler iot, wawasan teknik elektro, proyek arduino uno populer, kodingan smart parking sederhana, kontrol dual servo arduino, teknik counter slot parkir, tutorial lengkap wokwi arduino

    Leave a Reply

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