Integrasi Sistem Smart Gate

Membangun sistem Smart Gate terintegrasi dengan Arduino, sensor ultrasonik, motor servo, dan aktuator tambahan seperti LED dan buzzer.

90 Menit
Modul 6: Project Semester 1 — Smart Gate System
Pertemuan 15

TPTujuan Pembelajaran

  1. Peserta didik dapat menjelaskan arsitektur sistem Smart Gate secara lengkap
  2. Peserta didik dapat mengintegrasikan servo motor, sensor IR/ultrasonik, LED, dan buzzer
  3. Peserta didik dapat menulis program Smart Gate yang berfungsi dengan logika yang benar
  4. Peserta didik dapat melakukan debugging sistematis pada sistem terintegrasi

Arsitektur Smart Gate System

Selamat datang di proyek akhir semester! Kita akan menggabungkan semua komponen yang telah kita pelajari menjadi sebuah sistem nyata: Smart Gate atau Gerbang Pintar otomatis. Bayangkan palang parkir di mall, saat mobil mendekat, palang otomatis terbuka.

Diagram Blok Arsitektur Smart Gate System

Servo Motor: Aktuator Palang Pintu

Untuk menggerakkan palang pintu, kita menggunakan Motor Servo. Berbeda dengan motor DC biasa yang berputar terus-menerus, motor servo hanya bergerak ke sudut tertentu (biasanya 0 hingga 180 derajat).

Pada Arduino, kita menggunakan library bawaan <Servo.h> untuk mempermudah kontrol motor. Kita tinggal memberikan perintah servo.write(90) untuk membuka palang, dan servo.write(0) untuk menutupnya.

Sensor Ultrasonik HC-SR04: Mata Smart Gate

Sensor ultrasonik berfungsi sebagai "mata" dari sistem kita. Sensor ini memancarkan gelombang suara (Pulse) dan mendengarkan pantulannya (Echo). Dengan menghitung durasi waktu tempuh suara, kita bisa mengukur jarak benda di depan sensor.

Rumusnya: Jarak = (Durasi × 0.034) / 2. Nilai ini sangat penting agar gerbang hanya terbuka jika kendaraan benar-benar dekat.

Mengintegrasikan Semua Komponen

Sekarang mari kita sambungkan semuanya! Perakitan yang rapi dan benar adalah kunci keberhasilan sistem terintegrasi.

Kode Program Smart Gate Lengkap

Berikut adalah kode lengkap untuk Smart Gate. Perhatikan bagaimana logika dikelompokkan ke dalam fungsi-fungsi seperti bacaJarak(), bukaGerbang(), dan tutupGerbang() untuk menjaga kode tetap rapi dan mudah dibaca.

SmartGate.ino
cpp
#include <Servo.h>

// ── Pin Configuration ──────────────
#define TRIG_PIN   2
#define ECHO_PIN   3
#define SERVO_PIN  9
#define LED_HIJAU  11
#define LED_MERAH  12
#define BUZZER_PIN 8

// ── System Config ───────────────
#define JARAK_DETEKSI  15   // cm
#define DELAY_TUTUP    3000 // ms, waktu palang terbuka

Servo gateServo;
bool gerbangTerbuka = false;
unsigned long waktuBuka = 0;

void setup() {
  pinMode(TRIG_PIN, OUTPUT);
  pinMode(ECHO_PIN, INPUT);
  pinMode(LED_HIJAU, OUTPUT);
  pinMode(LED_MERAH, OUTPUT);
  pinMode(BUZZER_PIN, OUTPUT);
  
  gateServo.attach(SERVO_PIN);
  tutupGerbang();
  
  Serial.begin(9600);
  Serial.println("Smart Gate System v1.0 - SIAP");
}

long bacaJarak() {
  digitalWrite(TRIG_PIN, LOW);
  delayMicroseconds(2);
  digitalWrite(TRIG_PIN, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIG_PIN, LOW);
  
  long durasi = pulseIn(ECHO_PIN, HIGH);
  return durasi * 0.034 / 2;
}

void bukaGerbang() {
  gateServo.write(90);
  digitalWrite(LED_HIJAU, HIGH);
  digitalWrite(LED_MERAH, LOW);
  tone(BUZZER_PIN, 800, 200);
  gerbangTerbuka = true;
  waktuBuka = millis();
  Serial.println("✓ GERBANG TERBUKA");
}

void tutupGerbang() {
  gateServo.write(0);
  digitalWrite(LED_HIJAU, LOW);
  digitalWrite(LED_MERAH, HIGH);
  tone(BUZZER_PIN, 400, 200);
  gerbangTerbuka = false;
  Serial.println("■ GERBANG TERTUTUP");
}

void loop() {
  long jarak = bacaJarak();
  Serial.print("Jarak: "); Serial.print(jarak); Serial.println(" cm");
  
  if (jarak > 0 && jarak < JARAK_DETEKSI && !gerbangTerbuka) {
    bukaGerbang();
  }
  
  if (gerbangTerbuka && millis() - waktuBuka > DELAY_TUTUP) {
    tutupGerbang();
  }
  
  delay(200);
}
Serial Monitor Output
Smart Gate System v1.0 - SIAP Jarak: 45 cm Jarak: 30 cm Jarak: 12 cm ✓ GERBANG TERBUKA Jarak: 10 cm Jarak: 45 cm ■ GERBANG TERTUTUP Jarak: 45 cm

Debugging Sistem Terintegrasi

Ketika merakit proyek yang kompleks, seringkali tidak langsung bekerja pada percobaan pertama. Itulah mengapa kita menggunakan Serial Monitor untuk mencetak jarak dan status gerbang.

Troubleshooting

Masalah:Servo bergetar/bunyi krek-krek tapi tidak bergerak mulus.

Solusi:Kekurangan daya. Pastikan kabel tegangan terpasang kuat, jangan gunakan jumper yang tipis/rusak, dan pastikan power USB cukup (atau gunakan adaptor luar jika ada).


Masalah:Sensor jarak selalu mencetak 'Jarak: 0 cm'.

Solusi:Periksa kembali pin TRIG dan ECHO. Seringkali pemasangannya terbalik di breadboard.


Masalah:Gerbang buka-tutup terus menerus tanpa henti.

Solusi:Gunakan fitur 'GerbangTerbuka' pada kode logika agar perintah buka hanya dijalankan satu kali saat masih di bawah batas, atau periksa apakah sensor ultrasonik terhalang sesuatu yang dekat.

Latihan: Uji & Kalibrasi Sistem

Praktik: Kalibrasi Jarak & Waktu

  1. Rakitlah komponen sesuai diagram. Upload program di atas.
  2. Letakkan penghalang (misal, telapak tangan atau miniatur mobil) pada jarak 20cm, apakah gerbang terbuka?
  3. Ubah kode #define JARAK_DETEKSI 15 menjadi jarak yang lebih sesuai untuk meja kerjamu, misal 10 cm.
  4. Ubah waktu tunda gerbang (#define DELAY_TUTUP) menjadi 5000 (5 detik).
  5. Uji kembali dan pastikan logikanya sudah sesuai.

Mengapa kita perlu memisahkan kode ke dalam fungsi bukaGerbang() dan tutupGerbang()?

Sedang
Kesimpulan Pertemuan 15
  • Sistem Smart Gate mengintegrasikan input (sensor ultrasonik) dan output (servo, LED, buzzer).
  • Library <Servo.h> memudahkan pengendalian sudut motor.
  • Pembagian logika ke dalam fungsi terpisah membuat kode lebih terstruktur.
  • Serial Monitor adalah alat vital untuk melacak jarak dan status sistem saat debugging.

RRefleksi Proyek

Luangkan 2–3 menit untuk menjawab pertanyaan di bawah secara jujur.

Kejutan & Penemuan

Apa yang paling mengejutkan atau menarik hari ini?

Bagian mana dari proyek integrasi ini yang paling menarik menurutmu?

Masih Membingungkan

Apa yang masih membingungkan atau ingin kamu pahami lebih dalam?

Kendala apa yang paling menyita waktumu saat merakit komponen-komponen ini?

Rencana Selanjutnya

Apa yang ingin kamu coba atau pelajari minggu depan?

Fitur tambahan apa yang ingin kamu tambahkan pada gerbang ini nantinya (misal: layar LCD)?

Refleksi tidak dinilai — ini adalah ruang jujurmu untuk berpikir.