Cara Menggunakan Sensor Ultrasonik HC-SR04 dengan Arduino (Panduan Lengkap)

Robotik & Hardware, ElrolumNews — Anda sudah bisa membuat robot pengikut garis, sudah bisa membaca sensor PIR, sudah bisa streaming dengan ESP32-CAM. Tapi bagaimana caranya membuat robot yang bisa “melihat” jarak—menghindari halangan, mengukur ketinggian air, atau mendeteksi keberadaan objek?

Artikel ini cocok untuk: Anda yang sudah familiar dengan dasar Arduino dan ingin belajar menggunakan sensor ultrasonik HC-SR04—sensor jarak yang paling umum dan terjangkau.

Sensor ultrasonik HC-SR04 adalah sensor yang mengukur jarak dengan memancarkan gelombang suara dan menghitung waktu pantulan . Ia seperti “sonar” ala kelelawar—memancarkan suara frekuensi tinggi yang tidak terdengar manusia, lalu mendengarkan pantulannya .

Di artikel ini, kita akan bahas dari nol: apa itu sensor ultrasonik, cara kerjanya, wiring ke Arduino, kode program, hingga proyek pengukur jarak dan alarm kedekatan yang bisa langsung dipraktikkan.

Apa Itu Sensor Ultrasonik HC-SR04?

HC-SR04 adalah sensor jarak ultrasonik yang paling populer untuk Arduino. Ia dapat mengukur jarak dari 2 cm hingga 400 cm dengan akurasi hingga 3 mm .

Spesifikasi HC-SR04

AspekSpesifikasi
Tegangan Kerja5V DC
Arus15 mA
Frekuensi40 kHz
Jarak Maksimal400 cm
Jarak Minimal2 cm
Akurasi±3 mm
Sudut Deteksi15°

💡 Fakta: Sensor ultrasonik bekerja seperti sonar kelelawar—memancarkan suara, menunggu pantulan, dan menghitung jarak berdasarkan waktu tempuh .

Bagaimana Cara Kerjanya?

HC-SR04 memiliki dua transduser: satu untuk mengirim gelombang suara (trigger), satu untuk menerima pantulan (echo) .

Prinsip Kerja

LangkahApa yang Terjadi
1. TriggerArduino mengirim pulsa 10μs ke pin Trig
2. TransmisiSensor memancarkan 8 gelombang suara 40 kHz
3. PantulanGelombang mengenai objek dan memantul kembali
4. EchoSensor menerima pantulan, mengirim pulsa ke pin Echo
5. HitungArduino menghitung durasi pulsa → jarak

Rumus Perhitungan Jarak

text
Jarak = (Durasi Echo × Kecepatan Suara) / 2

Kecepatan suara di udara sekitar 343 meter/detik (atau 0,0343 cm/μs) .

Mengapa dibagi 2? Karena gelombang suara menempuh jarak bolak-balik—dari sensor ke objek, lalu kembali ke sensor .

💡 Rumus Sederhana di Arduino:

cpp
jarak = duration * 0.034 / 2;

Komponen yang Dibutuhkan

KomponenFungsiPerkiraan Harga
Arduino Uno / NanoMikrokontrolerRp80-150 ribu
Sensor HC-SR04Pengukur jarakRp15-30 ribu
LED (opsional)IndikatorRp1-2 ribu
Buzzer (opsional)AlarmRp5-10 ribu
Kabel JumperKoneksiRp10-20 ribu
BreadboardPrototypingRp15-25 ribu

Langkah 1: Wiring Sensor Ultrasonik ke Arduino

Koneksi Dasar

HC-SR04Arduino
VCC5V
GNDGND
TrigDigital Pin 9
EchoDigital Pin 10

Koneksi LED (Opsional)

LEDArduino
Anoda (kaki panjang)Digital Pin 13 (via resistor 220Ω)
Katoda (kaki pendek)GND

Koneksi Buzzer (Opsional)

BuzzerArduino
PositifDigital Pin 8
NegatifGND

⚠️ Peringatan: Meskipun HC-SR04 bekerja di 5V, pin Echo mengeluarkan 5V. Jika Anda menggunakan ESP32 atau board 3.3V, gunakan voltage divider atau level shifter untuk melindungi pin .

Langkah 2: Kode Program Dasar

Ini kode paling sederhana untuk membaca jarak dengan HC-SR04.

Kode

cpp
#define TRIG_PIN 9
#define ECHO_PIN 10

void setup() {
  pinMode(TRIG_PIN, OUTPUT);
  pinMode(ECHO_PIN, INPUT);
  Serial.begin(9600);
  Serial.println("Sensor Ultrasonik HC-SR04 siap...");
}

void loop() {
  // Kirim pulsa trigger 10μs
  digitalWrite(TRIG_PIN, LOW);
  delayMicroseconds(2);
  digitalWrite(TRIG_PIN, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIG_PIN, LOW);

  // Baca durasi echo
  long duration = pulseIn(ECHO_PIN, HIGH);

  // Hitung jarak (cm)
  float jarak = duration * 0.034 / 2;

  // Tampilkan di Serial Monitor
  Serial.print("Jarak: ");
  Serial.print(jarak);
  Serial.println(" cm");

  delay(500);
}

Penjelasan Kode

BagianFungsi
digitalWrite(TRIG_PIN, HIGH)Kirim pulsa trigger
delayMicroseconds(10)Durasi pulsa 10μs
pulseIn(ECHO_PIN, HIGH)Baca durasi echo (μs)
duration * 0.034 / 2Konversi ke cm
delay(500)Jeda antar pembacaan

Langkah 3: Kalibrasi dan Filter Noise

Pembacaan sensor ultrasonik bisa tidak stabil—terutama di lingkungan yang bising atau saat objek bergerak. Berikut cara mengatasinya.

3.1 Filter Median (Sederhana)

Ambil beberapa pembacaan, lalu gunakan nilai tengah untuk hasil yang lebih stabil.

cpp
float bacaJarak() {
  float readings[5];
  for (int i = 0; i < 5; i++) {
    digitalWrite(TRIG_PIN, LOW);
    delayMicroseconds(2);
    digitalWrite(TRIG_PIN, HIGH);
    delayMicroseconds(10);
    digitalWrite(TRIG_PIN, LOW);
    
    long duration = pulseIn(ECHO_PIN, HIGH, 30000);
    readings[i] = duration * 0.034 / 2;
    delay(10);
  }
  
  // Urutkan dan ambil median
  for (int i = 0; i < 4; i++) {
    for (int j = i + 1; j < 5; j++) {
      if (readings[i] > readings[j]) {
        float temp = readings[i];
        readings[i] = readings[j];
        readings[j] = temp;
      }
    }
  }
  
  return readings[2]; // Median
}

3.2 Batasi Jarak Maksimal

Sensor HC-SR04 punya batas maksimal 400 cm. Jika pembacaan melebihi itu, anggap tidak ada objek.

cpp
if (jarak > 400 || jarak < 2) {
  Serial.println("Di luar jangkauan");
} else {
  Serial.print("Jarak: ");
  Serial.print(jarak);
  Serial.println(" cm");
}

💡 Tips Pro: Gunakan pulseIn(ECHO_PIN, HIGH, 30000) dengan timeout 30ms. Tanpa timeout, pulseIn() bisa memblokir program jika tidak ada pantulan .

Langkah 4: Proyek Pengukur Jarak dengan LCD

Mari tampilkan hasil pengukuran di LCD 16×2—lebih praktis dari Serial Monitor.

Kode dengan LCD I2C

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

#define TRIG_PIN 9
#define ECHO_PIN 10

LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup() {
  pinMode(TRIG_PIN, OUTPUT);
  pinMode(ECHO_PIN, INPUT);
  
  lcd.init();
  lcd.backlight();
  lcd.setCursor(0, 0);
  lcd.print("Pengukur Jarak");
  delay(2000);
  lcd.clear();
}

void loop() {
  digitalWrite(TRIG_PIN, LOW);
  delayMicroseconds(2);
  digitalWrite(TRIG_PIN, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIG_PIN, LOW);

  long duration = pulseIn(ECHO_PIN, HIGH, 30000);
  float jarak = duration * 0.034 / 2;

  lcd.setCursor(0, 0);
  lcd.print("Jarak: ");
  lcd.print(jarak, 1);
  lcd.print(" cm  ");

  delay(500);
}

Wiring LCD I2C

LCD I2CArduino
VCC5V
GNDGND
SDAA4
SCLA5

💡 Tips Pro: Alamat I2C LCD biasanya 0x27 atau 0x3F. Jika LCD tidak menyala, coba ganti alamatnya. Gunakan I2C Scanner untuk menemukan alamat yang benar.

Langkah 5: Proyek Alarm Kedekatan

Sekarang kita buat alarm yang menyala saat objek mendekat—dasar dari robot penghindar halangan.

Kode Alarm

cpp
#define TRIG_PIN 9
#define ECHO_PIN 10
#define LED_PIN 13
#define BUZZER_PIN 8

#define JARAK_AMAN 20 // cm

void setup() {
  pinMode(TRIG_PIN, OUTPUT);
  pinMode(ECHO_PIN, INPUT);
  pinMode(LED_PIN, OUTPUT);
  pinMode(BUZZER_PIN, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  digitalWrite(TRIG_PIN, LOW);
  delayMicroseconds(2);
  digitalWrite(TRIG_PIN, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIG_PIN, LOW);

  long duration = pulseIn(ECHO_PIN, HIGH, 30000);
  float jarak = duration * 0.034 / 2;

  Serial.print("Jarak: ");
  Serial.print(jarak);
  Serial.println(" cm");

  if (jarak > 0 && jarak < JARAK_AMAN) {
    // Objek terlalu dekat → alarm
    digitalWrite(LED_PIN, HIGH);
    tone(BUZZER_PIN, 1000);
    Serial.println("PERINGATAN: Objek terlalu dekat!");
  } else {
    digitalWrite(LED_PIN, LOW);
    noTone(BUZZER_PIN);
  }

  delay(100);
}

Cara Kerja

JarakAksi
> 20 cmAman—LED mati, buzzer mati
< 20 cmBahaya—LED nyala, buzzer berbunyi

Langkah 6: Integrasi dengan Robot Penghindar Halangan

Sensor ultrasonik adalah komponen inti dari robot penghindar halangan. Konsepnya sederhana:

KondisiAksi Robot
Jarak > 30 cmMaju lurus
Jarak < 30 cmBerhenti, mundur, belok

Dengan menggabungkan sensor ultrasonik + driver motor L298N (dari artikel robot pengikut garis), Anda bisa membuat robot yang menghindari halangan secara otomatis .

💡 Tips Pro: Untuk robot penghindar, gunakan sensor ultrasonik yang dipasang di servo—agar bisa “memindai” kiri dan kanan sebelum memutuskan arah belok .

Troubleshooting: Masalah Umum

MasalahPenyebabSolusi
Pembacaan 0 terusWiring salahCek Trig & Echo
Pembacaan tidak stabilNoiseGunakan filter median
Jarak tidak akuratObjek menyerap suaraHindari kain, busa
Pembacaan negatifRumus salahPastikan bagi 2
Sensor tidak meresponsPower kurangGunakan 5V stabil

Kesalahan Umum dan Cara Menghindarinya

KesalahanAkibatSolusi
Lupa delayMicrosecondsTrigger tidak terbacaTambahkan 10μs
Tidak pakai timeoutProgram blockingGunakan pulseIn(pin, HIGH, 30000)
Objek terlalu dekat (<2cm)Pembacaan tidak akuratBeri jarak minimal 2cm
Sudut objek miringPantulan tidak kembaliPastikan objek tegak lurus
Interferensi sensor lainPembacaan kacauBeri jeda antar sensor

Kesimpulan

Sensor ultrasonik HC-SR04 adalah pintu masuk ke dunia deteksi jarak—murah, mudah, dan sangat berguna. Kuncinya:

  1. Pahami cara kerjanya — memancarkan suara, menghitung pantulan

  2. Wiring dengan benar — VCC, GND, Trig, Echo

  3. Gunakan rumus yang tepat — duration * 0.034 / 2

  4. Filter noise — median filter untuk stabilitas

  5. Tambahkan output — LCD, LED, buzzer, atau motor

  6. Integrasi dengan robot — untuk penghindar halangan

Dengan sensor ultrasonik, Anda bisa membuat pengukur jarakalarm kedekatan, atau robot penghindar halangan—semua dengan biaya di bawah Rp50 ribu.

Ingat: Sensor ultrasonik adalah mata untuk robot Anda. Ia tidak sempurna—bisa terganggu oleh kain, busa, atau sudut miring. Tapi untuk 90% aplikasi, ia sudah lebih dari cukup.

Sudah siap membuat proyek sensor ultrasonik pertama Anda?

💬 Punya proyek dengan sensor ultrasonik? Bagikan di kolom komentar!

(el)

Share:

Tinggalkan Komentar

Please enter your comment!
Please enter your name here

More like this

Ilustrasi kontrol servo dengan Arduino, potensiometer, sudut 0-180°, dan proyek kamera pan-tilt

Cara Mengontrol Servo dengan Arduino (Panduan Lengkap)

Robotik & Hardware, Elrolumnews — Anda sudah bisa membuat robot pengikut garis, sudah bisa mengukur jarak dengan ultrasonik,...
Ilustrasi ESP32-CAM untuk monitoring dengan kamera OV2640, FTDI adapter, streaming video, dan privasi lokal

Cara Menggunakan ESP32-CAM untuk Monitoring (Panduan Lengkap)

Robotik & Hardware, ElrolumNews — Anda sudah bisa memprogram ESP32, sudah membuat smart home, sudah punya sensor PIR...
Ilustrasi robot pengikut garis dengan Arduino, sensor IR, driver motor L298N, dan garis hitam di permukaan putih

Cara Membuat Robot Pengikut Garis dengan Arduino (Panduan Lengkap)

Robotik & Hardware, ELrolumNews — Anda sudah bisa menyalakan LED, membaca sensor, bahkan membuat smart home. Tapi ada...

More

Recomended

Read More