|

Proyek Robotik #3: Sensor Jarak

Proyek ini menggunakan ESP32, sensor ultrasonik HC-SR04, LCD I2C 16×2, dan buzzer untuk mengukur jarak benda di depan sensor. Nilai jarak ditampilkan di LCD. Jika jarak lebih kecil dari 10 cm, maka buzzer akan berbunyi sebagai peringatan. Proyek ini berguna untuk sistem peringatan jarak, seperti parkir sensor atau sistem deteksi objek.

Cara Kerja:

  1. Sensor HC-SR04 memancarkan gelombang ultrasonik melalui pin Trig dan mendeteksi pantulan dari objek melalui pin Echo.
  2. ESP32 menghitung waktu pantulan, kemudian dikonversi menjadi jarak dalam satuan cm.
  3. Nilai jarak ditampilkan secara real-time di LCD 16×2 menggunakan komunikasi I2C.
  4. Jika jarak yang terdeteksi kurang dari 10 cm, maka buzzer berbunyi.
  5. Jika jarak lebih dari atau sama dengan 10 cm, buzzer mati.
  6. Proses ini diulang setiap 500 ms (setengah detik).

Komponen yang Digunakan:

  • 1 × ESP32
  • 1 x Sensor Ultrasonic HC-SR04
  • 1 x LCD 16×2 I2C
  • 1 x Buzzer
  • 1 x Breadboard
  • Kabel jumper
  • Resistor (opsional, jika diperlukan)
  • 1 x Kabel USB (untuk upload dan power)

Kode:

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

// Inisialisasi LCD (alamat I2C, jumlah kolom, jumlah baris)
LiquidCrystal_I2C lcd(0x27, 16, 2);

// Define pin ultrasonik
const int trigPin = 5;
const int echoPin = 18;
// Define pin buzzer
const int buzzerPin = 19; // Ganti dengan pin yang Anda gunakan untuk buzzer

// Define konstanta
#define SOUND_SPEED 0.034

void setup() {
  // Inisialisasi Serial Monitor
  Serial.begin(115200);
  
  // Inisialisasi LCD
  lcd.init();
  lcd.backlight();
  
  // Konfigurasi pin ultrasonik dan buzzer
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  pinMode(buzzerPin, OUTPUT); // Set pin buzzer sebagai OUTPUT
}

void loop() {
  // Variabel untuk menyimpan durasi dan jarak
  long duration;
  float distanceCm;
  
  // Membersihkan trigPin
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  
  // Set trigPin HIGH selama 10 mikrodetik
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  
  // Membaca echoPin
  duration = pulseIn(echoPin, HIGH);
  
  // Menghitung jarak
  distanceCm = duration * SOUND_SPEED / 2;
  
  // Menampilkan di LCD
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Jarak:");
  lcd.setCursor(0, 1);
  lcd.print(distanceCm);
  lcd.print(" cm");
  
  // Cek jarak dan aktifkan buzzer jika jarak kurang dari 10 cm
  if (distanceCm < 10) {
    digitalWrite(buzzerPin, HIGH); // Aktifkan buzzer
  } else {
    digitalWrite(buzzerPin, LOW); // Matikan buzzer
  }
  
  // Delay sebelum pengukuran berikutnya
  delay(500);
}

Similar Posts

Leave a Reply

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