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:
- Sensor HC-SR04 memancarkan gelombang ultrasonik melalui pin Trig dan mendeteksi pantulan dari objek melalui pin Echo.
- ESP32 menghitung waktu pantulan, kemudian dikonversi menjadi jarak dalam satuan cm.
- Nilai jarak ditampilkan secara real-time di LCD 16×2 menggunakan komunikasi I2C.
- Jika jarak yang terdeteksi kurang dari 10 cm, maka buzzer berbunyi.
- Jika jarak lebih dari atau sama dengan 10 cm, buzzer mati.
- 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);
}
