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
| Aspek | Spesifikasi |
|---|---|
| Tegangan Kerja | 5V DC |
| Arus | 15 mA |
| Frekuensi | 40 kHz |
| Jarak Maksimal | 400 cm |
| Jarak Minimal | 2 cm |
| Akurasi | ±3 mm |
| Sudut Deteksi | 15° |
💡 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
| Langkah | Apa yang Terjadi |
|---|---|
| 1. Trigger | Arduino mengirim pulsa 10μs ke pin Trig |
| 2. Transmisi | Sensor memancarkan 8 gelombang suara 40 kHz |
| 3. Pantulan | Gelombang mengenai objek dan memantul kembali |
| 4. Echo | Sensor menerima pantulan, mengirim pulsa ke pin Echo |
| 5. Hitung | Arduino menghitung durasi pulsa → jarak |
Rumus Perhitungan Jarak
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:
jarak = duration * 0.034 / 2;
Komponen yang Dibutuhkan
| Komponen | Fungsi | Perkiraan Harga |
|---|---|---|
| Arduino Uno / Nano | Mikrokontroler | Rp80-150 ribu |
| Sensor HC-SR04 | Pengukur jarak | Rp15-30 ribu |
| LED (opsional) | Indikator | Rp1-2 ribu |
| Buzzer (opsional) | Alarm | Rp5-10 ribu |
| Kabel Jumper | Koneksi | Rp10-20 ribu |
| Breadboard | Prototyping | Rp15-25 ribu |
Langkah 1: Wiring Sensor Ultrasonik ke Arduino
Koneksi Dasar
| HC-SR04 | Arduino |
|---|---|
| VCC | 5V |
| GND | GND |
| Trig | Digital Pin 9 |
| Echo | Digital Pin 10 |
Koneksi LED (Opsional)
| LED | Arduino |
|---|---|
| Anoda (kaki panjang) | Digital Pin 13 (via resistor 220Ω) |
| Katoda (kaki pendek) | GND |
Koneksi Buzzer (Opsional)
| Buzzer | Arduino |
|---|---|
| Positif | Digital Pin 8 |
| Negatif | GND |
⚠️ 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
#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
| Bagian | Fungsi |
|---|---|
digitalWrite(TRIG_PIN, HIGH) | Kirim pulsa trigger |
delayMicroseconds(10) | Durasi pulsa 10μs |
pulseIn(ECHO_PIN, HIGH) | Baca durasi echo (μs) |
duration * 0.034 / 2 | Konversi 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.
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.
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
#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 I2C | Arduino |
|---|---|
| VCC | 5V |
| GND | GND |
| SDA | A4 |
| SCL | A5 |
💡 Tips Pro: Alamat I2C LCD biasanya
0x27atau0x3F. 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
#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
| Jarak | Aksi |
|---|---|
| > 20 cm | Aman—LED mati, buzzer mati |
| < 20 cm | Bahaya—LED nyala, buzzer berbunyi |
Langkah 6: Integrasi dengan Robot Penghindar Halangan
Sensor ultrasonik adalah komponen inti dari robot penghindar halangan. Konsepnya sederhana:
| Kondisi | Aksi Robot |
|---|---|
| Jarak > 30 cm | Maju lurus |
| Jarak < 30 cm | Berhenti, 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
| Masalah | Penyebab | Solusi |
|---|---|---|
| Pembacaan 0 terus | Wiring salah | Cek Trig & Echo |
| Pembacaan tidak stabil | Noise | Gunakan filter median |
| Jarak tidak akurat | Objek menyerap suara | Hindari kain, busa |
| Pembacaan negatif | Rumus salah | Pastikan bagi 2 |
| Sensor tidak merespons | Power kurang | Gunakan 5V stabil |
Kesalahan Umum dan Cara Menghindarinya
| Kesalahan | Akibat | Solusi |
|---|---|---|
| Lupa delayMicroseconds | Trigger tidak terbaca | Tambahkan 10μs |
| Tidak pakai timeout | Program blocking | Gunakan pulseIn(pin, HIGH, 30000) |
| Objek terlalu dekat (<2cm) | Pembacaan tidak akurat | Beri jarak minimal 2cm |
| Sudut objek miring | Pantulan tidak kembali | Pastikan objek tegak lurus |
| Interferensi sensor lain | Pembacaan kacau | Beri jeda antar sensor |
Kesimpulan
Sensor ultrasonik HC-SR04 adalah pintu masuk ke dunia deteksi jarak—murah, mudah, dan sangat berguna. Kuncinya:
Pahami cara kerjanya — memancarkan suara, menghitung pantulan
Wiring dengan benar — VCC, GND, Trig, Echo
Gunakan rumus yang tepat —
duration * 0.034 / 2Filter noise — median filter untuk stabilitas
Tambahkan output — LCD, LED, buzzer, atau motor
Integrasi dengan robot — untuk penghindar halangan
Dengan sensor ultrasonik, Anda bisa membuat pengukur jarak, alarm 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)





