Sensor ultrasonik HC-SR04 merupakan salah satu sensor jarak yang paling banyak digunakan pada proyek Arduino. Sensor ini mampu mendeteksi keberadaan suatu objek dengan mengukur waktu tempuh gelombang ultrasonik yang dipancarkan, kemudian mengubahnya menjadi nilai jarak dalam satuan sentimeter. Karena bekerja tanpa kontak langsung dengan objek, sensor ini banyak diterapkan pada berbagai sistem otomatisasi seperti robot penghindar rintangan, pintu otomatis, sistem parkir kendaraan, hingga perangkat keamanan.
Selain digunakan untuk menampilkan informasi jarak pada Serial Monitor, data yang dihasilkan sensor ultrasonik juga dapat dimanfaatkan untuk mengendalikan berbagai perangkat output. Salah satu perangkat yang paling sering dipadukan dengan sensor ini adalah motor servo. Motor servo memiliki kemampuan bergerak ke sudut tertentu secara presisi sehingga sangat cocok digunakan sebagai aktuator pada berbagai proyek otomatis.
Pada tutorial ini, Anda akan mempelajari cara menghubungkan sensor ultrasonik HC-SR04 dengan motor servo menggunakan Arduino Uno. Arduino akan membaca jarak objek yang berada di depan sensor, kemudian membandingkannya dengan nilai ambang batas (threshold). Jika objek berada cukup dekat, motor servo akan bergerak ke posisi 90 derajat. Sebaliknya, jika objek berada lebih jauh dari batas yang telah ditentukan, motor servo akan kembali ke posisi awal 0 derajat.
Tujuan Tutorial
Pada tutorial ini Anda akan mempelajari cara mengukur jarak menggunakan sensor ultrasonik HC-SR04, membaca hasil pengukuran jarak dengan Arduino Uno, menentukan batas jarak sebagai acuan pengendalian servo, menggerakan motor servo ke posisi 90 derajat ketika objek berada di dekat sensor, dan mengembalikan motor servo ke posisi 0 derajat ketika objek berada di luar batas jarak.
Baca juga: Arduino Mengontrol Motor Servo Menggunakan Sensor Cahaya (LDR)
Perangkat Keras yang Dibutuhkan
- Arduino Uno R3
- Kabel USB
- Sensor Ultrasonik HC-SR04
- Motor Servo (SG90 atau sejenisnya)
- Kabel Jumper
Cara Kerja Sistem
Sistem dimulai ketika sensor HC-SR04 memancarkan gelombang ultrasonik melalui pin TRIG. Gelombang tersebut akan merambat di udara hingga mengenai suatu objek, kemudian dipantulkan kembali menuju sensor. Arduino mengukur waktu yang dibutuhkan gelombang untuk kembali melalui pin ECHO, kemudian menghitung jarak objek menggunakan rumus perhitungan sensor ultrasonik. Pada contoh ini digunakan batas jarak sebesar 50 cm. Jika objek berada pada jarak kurang dari 50 cm, Arduino akan menggerakkan motor servo ke sudut 90 derajat. Sebaliknya, apabila objek berada lebih dari 50 cm, motor servo akan kembali ke posisi 0 derajat. Seluruh proses berlangsung secara terus-menerus sehingga posisi servo akan selalu mengikuti perubahan jarak objek secara real-time.
Kode Program Arduino
Berikut adalah program lengkap untuk mengendalikan motor servo menggunakan sensor ultrasonik HC-SR04.
#include <Servo.h>
// Konstanta
const int TRIG_PIN = 6; // Pin TRIG sensor ultrasonik
const int ECHO_PIN = 7; // Pin ECHO sensor ultrasonik
const int SERVO_PIN = 9; // Pin motor servo
const int DISTANCE_THRESHOLD = 50; // Batas jarak (cm)
// Membuat objek servo
Servo servo;
// Variabel
float duration_us;
float distance_cm;
void setup() {
Serial.begin(9600);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
servo.attach(SERVO_PIN);
// Posisi awal servo
servo.write(0);
}
void loop() {
// Mengirim pulsa 10 mikrodetik
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
// Membaca durasi pulsa pantulan
duration_us = pulseIn(ECHO_PIN, HIGH);
// Menghitung jarak
distance_cm = 0.017 * duration_us;
// Mengontrol posisi servo
if (distance_cm < DISTANCE_THRESHOLD)
servo.write(90);
else
servo.write(0);
// Menampilkan hasil ke Serial Monitor
Serial.print("Distance: ");
Serial.print(distance_cm);
Serial.println(" cm");
delay(500);
}
Penjelasan Program
Program diawali dengan memanggil library Servo yang digunakan untuk mengendalikan motor servo.
#include <Servo.h>
Selanjutnya ditentukan pin yang digunakan oleh sensor ultrasonik dan motor servo.
const int TRIG_PIN = 6;
const int ECHO_PIN = 7;
const int SERVO_PIN = 9;
Program juga mendefinisikan nilai ambang batas sebesar 50 cm.
const int DISTANCE_THRESHOLD = 50;
Nilai ini menjadi acuan untuk menentukan kapan motor servo harus bergerak.
Kemudian dibuat sebuah objek servo.
Servo servo;
Pada fungsi setup(), Arduino menginisialisasi komunikasi serial, mengatur mode pin sensor, lalu menghubungkan motor servo ke pin digital 9.
servo.attach(SERVO_PIN);
Servo juga diarahkan ke posisi awal.
servo.write(0);
Di dalam fungsi loop(), Arduino mengirimkan pulsa selama 10 mikrodetik ke pin TRIG.
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
Sensor kemudian mengirimkan gelombang ultrasonik dan menerima pantulannya.
Arduino membaca lama pulsa menggunakan fungsi berikut.
duration_us = pulseIn(ECHO_PIN, HIGH);
Nilai durasi tersebut dikonversi menjadi jarak.
distance_cm = 0.017 * duration_us;
Jika objek berada lebih dekat dari 50 cm,
servo.write(90);
motor servo akan bergerak ke posisi 90 derajat.
Sedangkan apabila objek berada lebih jauh dari batas tersebut,
servo.write(0);
motor servo akan kembali ke posisi 0 derajat
Nilai jarak juga ditampilkan pada Serial Monitor agar proses pengukuran dapat dipantau secara langsung.
Koneksi Rangkaian
1. Hubungkan pin VCC sensor HC-SR04 ke pin 5V Arduino dan pin GND ke GND Arduino.
2. Pin TRIG sensor dihubungkan ke pin digital 6, sedangkan pin ECHO dihubungkan ke pin digital 7.
3. Untuk motor servo, sambungkan kabel signal ke pin digital 9, kabel VCC ke pin 5V, dan kabel GND ke pin GND Arduino.
4. Pastikan semua kabel telah terhubung dengan benar sebelum mengunggah program.
Langkah-langkah Menjalankan Program
1. Hubungkan Arduino Uno ke komputer menggunakan kabel USB.
2. Buka aplikasi Arduino IDE, kemudian pilih board Arduino Uno dan port yang sesuai.
3. Salin kode program di atas ke dalam editor Arduino IDE.
4. Klik tombol Upload dan tunggu hingga proses unggah selesai.
5. Setelah program berhasil dijalankan, buka Serial Monitor untuk melihat hasil pengukuran jarak.
6. Gerakkan tangan atau benda lain di depan sensor ultrasonik.
7. Amati perubahan posisi motor servo ketika jarak objek berubah.
Hasil Pengujian
1. Apabila tidak terdapat objek di depan sensor atau objek berada lebih dari 50 cm, motor servo akan tetap berada pada posisi 0 derajat.
2. Saat objek didekatkan hingga jaraknya kurang dari 50 cm, sensor akan mendeteksi keberadaan objek dan Arduino akan menggerakkan motor servo ke posisi 90 derajat.
3. Ketika objek kembali dijauhkan, motor servo akan kembali ke posisi awal secara otomatis.
Dengan mekanisme ini, sistem dapat digunakan sebagai aktuator otomatis yang merespons keberadaan objek berdasarkan jarak.
Baca juga: Arduino Mengontrol LED Menggunakan Sensor Ultrasonik HC-SR04
Dalam praktik, hasil dan kendala yang ditemui bisa berbeda tergantung perangkat, konfigurasi, versi library, dan sistem yang digunakan.
- Diskusi umum dan tanya jawab praktik: https://t.me/edukasielektronika
- Kendala spesifik dan kasus tertentu: http://bit.ly/Chatarduino


