Panduan lengkap ini adalah sumber informasi lengkap bagi Anda untuk mempelajari segala hal yang perlu diketahui tentang HC-SR04. Kita akan memulai dari dasar-dasarnya, yaitu memahami prinsip kerja dasarnya, yang merupakan kunci untuk mengoptimalkan potensinya. Selanjutnya, kita akan membahas aspek-aspek penting seperti spesifikasi utamanya, cara menghubungkannya dengan mikrokontroler populer, dan bahkan mendalami skenario penggunaan tingkat lanjut. Pada akhir panduan ini, Anda akan siap untuk memanfaatkan potensi penuh HC-SR04 dalam proyek-proyek Anda sendiri.
Apa itu modul sensor ultrasonik HC-SR04?
Modul sensor ultrasonik HC-SR04 adalah perangkat yang luar biasa dan sangat serbaguna yang telah berhasil menempati posisi tersendiri di tengah beragam proyek elektronik. Yang membuatnya benar-benar menonjol adalah harganya yang terjangkau, sebuah keunggulan yang membuatnya dapat dijangkau oleh berbagai kalangan pengguna, mulai dari para penggemar yang mengutamakan anggaran hingga para profesional yang mencari solusi terjangkau untuk proyek mereka.

Spesifikasi Teknis
Memahami spesifikasi teknis modul sensor ultrasonik HC-SR04 sangat penting dalam pelaksanaan proyek apa pun. Berikut ini tabel spesifikasi teknisnya:
Penjelasan:
- Jangkauan: HC-SR04 memiliki jangkauan operasional mulai dari 2 cm hingga 400 cm (0,8 in hingga 157 in). Jangkauan yang relatif luas ini membuatnya cocok untuk berbagai macam aplikasi. Misalnya, dalam proyek robotika skala kecil di mana robot perlu bergerak di dalam ruangan, jangkauan 2–400 cm dapat secara efektif mendeteksi perabotan atau dinding di sekitarnya. Dalam aplikasi industri berskala lebih besar, sensor ini dapat digunakan untuk mengukur jarak antar komponen mesin dalam rentang ini. Namun, penting untuk dicatat bahwa akurasi mungkin sedikit bervariasi pada ujung-ujung ekstrem rentang ini.
- Resolusi: Dengan resolusi 0,3 cm, HC-SR04 dapat memberikan pengukuran jarak yang cukup presisi. Tingkat presisi ini cukup memadai untuk sebagian besar aplikasi hobi dan banyak aplikasi industri. Dalam proyek terkait pencetakan 3D di mana sensor digunakan untuk mendeteksi jarak ke alas cetak untuk penyetelan ketinggian otomatis, resolusi 0,3 cm dapat memastikan bahwa kepala printer berada pada ketinggian yang tepat di atas alas, sehingga menghasilkan cetakan berkualitas tinggi.
- Catu Daya: Sensor ini beroperasi pada catu daya 5V DC. Selama beroperasi, sensor ini mengonsumsi arus operasi sebesar 15mA, yang merupakan konsumsi daya yang relatif rendah. Dalam mode standby, arus yang ditarik bahkan lebih rendah, kurang dari 2mA. Hal ini menjadikannya pilihan yang hemat energi untuk proyek yang menggunakan baterai. Misalnya, pada node sensor IoT yang bertenaga baterai dan menggunakan HC-SR04 untuk penginderaan jarak, konsumsi daya yang rendah memastikan baterai dapat bertahan dalam waktu yang lama.
- Sudut Operasi: Sudut operasi HC-SR04 kurang dari 15°. Artinya, sensor ini memiliki bidang pandang yang relatif sempit. Sensor ini paling efektif dalam mendeteksi hambatan yang berada tepat di depannya. Dalam sistem keamanan rumah pintar di mana sensor digunakan untuk mendeteksi penyusup yang mendekati pintu, sudut operasi yang sempit memungkinkan deteksi terfokus terhadap objek yang datang langsung ke arah sensor, sehingga mengurangi alarm palsu dari objek di area pinggiran.
- Antarmuka: Modul ini dilengkapi antarmuka 4 pin, yang mencakup pin VCC, GND, Trig, dan Echo. Desain antarmuka yang sederhana ini memudahkan penghubungannya ke berbagai mikrokontroler dan komponen elektronik lainnya.
Penjelasan Konfigurasi Pin
Raspberry Pi: 5V (Ground bersama dengan modul)
▶ Pulsa HIGH 10μs untuk Memulai Pengukuran
▶ Level LOW untuk Mereset
Raspberry Pi: GPIO apa saja (mis., GPIO17)
▶ Durasi HIGH = Waktu Pulang-Pergi Gelombang Ultrasonik
▶ Waktu HIGH Maks: 38ms (Batas waktu jika tidak ada halangan)
Raspberry Pi: GPIO dengan **Pembagi Tegangan** (5V→3,3V)
Raspberry Pi/GND
Penjelasan:
Pin Echo adalah kunci untuk mendapatkan informasi jarak. Setelah gelombang ultrasonik dikirimkan, pin Echo akan bernilai high. Pin ini tetap high hingga gelombang yang dipantulkan diterima oleh penerima ultrasonik. Durasi saat pin Echo bernilai high berbanding lurus dengan waktu yang dibutuhkan gelombang ultrasonik untuk menempuh jarak ke rintangan dan kembali lagi. Dengan mengukur durasi waktu ini, kita dapat menghitung jarak ke rintangan menggunakan rumus . Dalam proyek Arduino berbasis C++, Anda dapat menggunakan fungsi pulseIn() untuk mengukur durasi pulsa level high pada pin Echo.
Komponen Utama dan Prinsip Kerja
Komponen Utama
- Pemancar Ultrasonik: Ini adalah komponen yang bertanggung jawab atas langkah awal dalam proses pengukuran jarak. Komponen ini memancarkan gelombang ultrasonik pada frekuensi 40kHz. Gelombang frekuensi tinggi ini tidak terdengar oleh telinga manusia, tetapi merupakan kunci pengoperasian sensor. Saat diaktifkan, pemancar mengirimkan gelombang ini ke lingkungan sekitar. Bayangkan saja sebagai speaker yang sangat kuat yang memancarkan gelombang suara pada frekuensi yang jauh melampaui apa yang dapat kita dengar. Dalam aplikasi robotika, misalnya, pemancar ultrasonik pada robot akan mengirimkan gelombang 40 kHz ini ke arah pergerakan robot, bersiap untuk mendeteksi hambatan apa pun di jalurnya.
- Penerima Ultrasonik: Sesuai namanya, tugas penerima ultrasonik adalah menangkap gelombang ultrasonik yang dipantulkan kembali dari rintangan dalam jangkauan sensor. Setelah pemancar mengirimkan gelombang, gelombang tersebut bergerak melalui udara hingga menabrak suatu objek. Gelombang kemudian memantul kembali, dan tugas penerima adalah menangkap gelombang pantulan ini. Ini seperti mikrofon yang sangat sensitif yang dapat mendeteksi gema paling lemah dari gelombang ultrasonik. Dalam sistem otomatisasi rumah di mana HC-SR04 digunakan untuk mendeteksi kehadiran seseorang di dalam ruangan, penerima akan menangkap gelombang yang memantul kembali dari tubuh orang tersebut.
- Sirkuit Pengendali: Ini adalah otak di balik operasi tersebut. Sirkuit pengendali mengelola seluruh urutan pemrosesan sinyal. Ia mengoordinasikan tindakan pemancar dan penerima. Ketika menerima sinyal pemicu, ia memerintahkan pemancar untuk memancarkan gelombang ultrasonik. Kemudian, sirkuit ini memantau penerima dengan cermat untuk mendeteksi gelombang pantulan yang masuk. Setelah gelombang diterima, sirkuit kontrol menghitung waktu yang dibutuhkan gelombang untuk mencapai hambatan dan kembali. Berdasarkan waktu tersebut dan kecepatan suara di udara yang diketahui, sirkuit ini menghitung jarak ke hambatan. Dalam lingkungan industri, sirkuit kontrol pada HC-SR04 yang digunakan untuk mesin otomatis akan mengelola operasi ini dengan presisi untuk memastikan pengukuran jarak yang akurat demi berfungsinya mesin dengan baik.
Cara Kerjanya
Sekarang setelah kita mengetahui komponen-komponen utamanya, mari kita lihat langkah demi langkah bagaimana HC-SR04 sebenarnya mengukur jarak.
Sinyal Pemicu:
Proses ini dimulai dengan sinyal pemicu. Ketika pulsa tinggi berdurasi 10μs diterapkan pada pin Trig (Trigger) modul HC-SR04, hal ini sama seperti memberikan perintah "mulai" kepada sensor. Pulsa listrik yang singkat namun penting ini memicu seluruh urutan pengukuran jarak. Misalnya, dalam proyek berbasis Arduino, Anda akan menggunakan satu baris kode sederhana untuk mengirimkan pulsa tinggi 10μs ini ke pin Trig modul HC-SR04, memerintahkannya untuk memulai proses pengukuran.
Penyebaran Gelombang:
Setelah diaktifkan, pemancar ultrasonik mulai bekerja. Modul ini mengirimkan serangkaian 8 pulsa ultrasonik dengan frekuensi 40 kHz. Pulsa-pulsa ini seperti serangkaian "peluru suara" tak terlihat yang melesat ke lingkungan sekitar. Setelah mengirimkan pulsa-pulsa tersebut, modul kemudian masuk ke mode tunggu, dengan sabar menunggu gelombang-gelombang itu mengenai hambatan dan memantul kembali. Dalam skenario dunia nyata, jika Anda menggunakan HC-SR04 untuk mengukur jarak ke dinding di sebuah ruangan, 8 pulsa tersebut akan bergerak menuju dinding, menyebar dalam bentuk kerucut dengan sudut yang relatif sempit sekitar 15 derajat.
Deteksi Gema:
Pin Echo merupakan kunci untuk mendeteksi gelombang pantulan. Segera setelah gelombang ultrasonik dikirimkan, pin Echo akan berubah menjadi tinggi. Ini adalah cara sensor untuk menunjukkan bahwa proses pengukuran telah dimulai. Kemudian, sensor menunggu gelombang pantulan kembali. Ketika penerima ultrasonik menangkap gelombang pantulan, pin Echo akan berubah menjadi rendah. Lamanya waktu pin Echo tetap tinggi sama dengan waktu tempuh bolak-balik gelombang ultrasonik. Dalam proyek Raspberry Pi, Anda akan menggunakan fungsi untuk mengukur waktu pin Echo berada pada level tinggi, yang merupakan langkah penting dalam menghitung jarak.
Perhitungan Jarak:
Perhitungan Jarak: Langkah terakhir adalah menghitung jarak ke rintangan. Rumus untuk menghitung jarak dalam sentimeter adalah . Faktor 0,0343 berasal dari kecepatan suara di udara, yaitu sekitar 343 m/s. Karena gelombang merambat ke rintangan dan kembali lagi (perjalanan pulang-pergi), kita membagi total jarak tempuh dengan 2 untuk mendapatkan jarak satu arah ke rintangan. Misalnya, jika waktu yang diukur untuk pin Echo bernilai high adalah 2000μs, maka jarak dihitung sebagai cm. Perhitungan ini sama terlepas dari apakah Anda menggunakan HC-SR04 dalam proyek hobi sederhana atau aplikasi industri yang kompleks.
Integrasi dengan Mikrokontroler Populer
Panduan Pengaturan Arduino
Diagram Pengkabelan
- VCC: Hubungkan pin VCC dari HC-SR04 ke pin 5V pada Arduino. Hal ini menyediakan daya yang diperlukan untuk modul sensor. Catu daya 5V yang stabil dari Arduino memastikan sensor berfungsi secara optimal.
- GND: Pin GND (Ground) HC-SR04 harus dihubungkan ke pin GND Arduino. Hal ini menetapkan referensi ground yang sama untuk sensor dan Arduino, yang sangat penting untuk komunikasi listrik yang baik.
- Trig: Hubungkan pin Trig (Trigger) pada HC-SR04 ke pin digital 2 pada Arduino. Ini adalah pin tempat Arduino akan mengirimkan pulsa level tinggi berdurasi 10μs untuk memicu proses pengukuran jarak pada HC-SR04.
- Echo: Pin Echo pada HC-SR04 dihubungkan ke pin digital 3 pada Arduino. Arduino akan membaca pulsa berdurasi tinggi pada pin ini untuk menghitung jarak ke penghalang.
HC - SR04 Arduino
VCC ------------ 5V
GND ------------ GND
Trig ------------ Digital Pin 2
Echo ------------ Digital Pin 3
Contoh Kode
const int trigPin = 2;
const int echoPin = 3;
void setup() {
Serial.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
long duration = pulseIn(echoPin, HIGH);
float distance = duration * 0.0343 / 2;
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
delay(500);
}
Dalam fungsi setup, kita terlebih dahulu menginisialisasi komunikasi serial pada kecepatan baud 9600, yang memungkinkan kita untuk melihat pembacaan jarak di Serial Monitor Arduino. Kemudian, kita mengatur trigPin sebagai pin output dan echoPin sebagai pin input.
Dalam fungsi loop, kita mulai dengan mengatur trigPin ke LOW selama 2 mikrodetik untuk memastikan awal yang bersih. Kemudian, kita mengaturnya ke HIGH selama 10 mikrodetik untuk memicu pemancar ultrasonik pada HC-SR04. Setelah itu, kita mengatur trigPin kembali ke LOW.
Fungsi pulseIn() kemudian digunakan untuk mengukur durasi pulsa level high pada echoPin. Durasi ini merepresentasikan waktu yang dibutuhkan gelombang ultrasonik untuk menempuh jarak ke rintangan dan kembali lagi. Kita kemudian menghitung jarak menggunakan rumus distance = duration * 0.0343 / 2, di mana 0,0343 adalah kecepatan suara dalam cm/μs dan kita membaginya dengan 2 karena gelombang merambat ke rintangan dan kembali lagi.
Terakhir, kita mencetak jarak yang telah dihitung ke Serial Monitor dan menambahkan jeda 500 milidetik sebelum pengukuran berikutnya.
Tips
- Pengukuran Durasi yang Akurat:
Saat menggunakan fungsi pulseIn(), penting untuk dicatat bahwa fungsi ini mengukur durasi suatu pulsa. Dalam kasus HC-SR04, ini adalah waktu di mana pin Echo bernilai high. Untuk memastikan pengukuran yang akurat, pastikan tidak ada gangguan listrik lain yang dapat memengaruhi durasi pulsa. Selain itu, ketahuilah bahwa jika rintangan terlalu jauh, pulsa tersebut dapat mengalami habis waktu (timeout). Anda dapat mengatur nilai batas waktu (timeout) dalam fungsi pulseIn() untuk menangani kasus tersebut dengan baik. Sebagai contoh, long duration = pulseIn(echoPin, HIGH, 20000); di mana 20000 adalah nilai batas waktu dalam mikrodetik.
- Menghindari Sumber Kebisingan:
Gelombang ultrasonik dapat terpengaruh oleh sumber suara yang keras. Saat memasang HC-SR04 dalam proyek Anda, hindari area dengan intensitas suara tinggi, seperti di dekat speaker atau di lingkungan industri yang sangat bising. Kebisingan dapat mengganggu gelombang ultrasonik yang dipancarkan oleh sensor, sehingga menyebabkan pengukuran jarak menjadi tidak akurat. Jika Anda harus menggunakan sensor di area yang bising, pertimbangkan untuk menggunakan bahan penyerap suara atau penutup untuk melindungi sensor dari kebisingan.
Integrasi Raspberry Pi
Peringatan Tegangan
Untuk mengatasi masalah ini, Anda dapat menggunakan rangkaian pembagi tegangan. Pembagi tegangan sederhana yang menggunakan resistor 1kΩ dan 2kΩ dapat digunakan untuk mengubah output 5V dari pin Echo HC-SR04 menjadi sinyal yang kompatibel dengan 3,3V untuk Raspberry Pi. Rumus untuk menghitung tegangan output dari sebuah pembagi tegangan adalah , di mana adalah tegangan input (5V dalam kasus ini), adalah resistor pertama (1kΩ), dan adalah resistor kedua (2kΩ). Dengan memasukkan nilai-nilai tersebut, kita mendapatkan , yang berada dalam kisaran aman untuk pin GPIO Raspberry Pi.
Pemasangan kabel
- VCC: Hubungkan pin VCC pada HC-SR04 ke pin 5V pada Raspberry Pi. Hal ini akan menyalakan modul sensor HC-SR04.
- GND: Pin GND pada HC-SR04 harus dihubungkan ke pin GND pada Raspberry Pi untuk membentuk ground bersama.
- Trig: Hubungkan pin Trig dari HC-SR04 ke GPIO 17 pada Raspberry Pi. Raspberry Pi akan menggunakan pin ini untuk mengirim pulsa pemicu level tinggi 10μs ke HC-SR04.
- Echo: Pin Echo pada HC-SR04, setelah melewati rangkaian pembagi tegangan (resistor 1kΩ dan 2kΩ), dihubungkan ke GPIO 27 pada Raspberry Pi. Raspberry Pi akan membaca pulsa berdurasi tinggi pada pin ini untuk menghitung jarak.
HC - SR04 Raspberry Pi
VCC ------------ 5V
GND ------------ GND
Trig ------------ GPIO 17
Echo (through voltage divider) ------------ GPIO 27
Kode Python
import RPi.GPIO as GPIO
import time
# Set the GPIO mode
GPIO.setmode(GPIO.BCM)
# Define the pins
TRIG = 17
ECHO = 27
# Set up the pins
GPIO.setup(TRIG, GPIO.OUT)
GPIO.setup(ECHO, GPIO.IN)
def measure_distance():
# Send a 10μs high - level pulse to trigger the sensor
GPIO.output(TRIG, True)
time.sleep(0.00001)
GPIO.output(TRIG, False)
# Wait for the echo to start
while GPIO.input(ECHO)==0:
pulse_start = time.time()
# Wait for the echo to end
while GPIO.input(ECHO)==1:
pulse_end = time.time()
pulse_duration = pulse_end - pulse_start
distance = pulse_duration * 17150 # Speed of sound in cm/s divided by 2
distance = round(distance, 2)
return distance
try:
while True:
dist = measure_distance()
print(f"Distance: {dist} cm")
time.sleep(1)
except KeyboardInterrupt:
print("Measurement stopped by User")
GPIO.cleanup()
Dalam kode ini, kita terlebih dahulu mengimpor pustaka yang diperlukan, RPi.GPIO untuk mengontrol pin GPIO pada Raspberry Pi dan pustaka time untuk menambahkan jeda. Kita kemudian mengatur mode GPIO ke BCM (penomoran saluran SOC Broadcom). Kita mendefinisikan pin TRIG dan ECHO, lalu mengatur pin TRIG sebagai output dan pin ECHO sebagai input.
Fungsi measure_distance adalah tempat keajaiban terjadi. Fungsi ini mengirimkan pulsa level high 10μs ke pin TRIG untuk memicu HC-SR04. Kemudian, fungsi ini menunggu pin ECHO bernilai high (menandakan awal gema) dan mencatat waktu mulai. Selanjutnya, fungsi ini menunggu pin ECHO bernilai low (menandakan akhir gema) dan mencatat waktu selesai. Selisih waktu antara waktu mulai dan selesai digunakan untuk menghitung jarak. Jarak dihitung dengan mengalikan durasi pulsa dengan kecepatan suara dalam cm/s (34300 cm/s) lalu dibagi 2 (karena suara merambat ke rintangan dan kembali lagi).
Di dalam blok try, kita terus-menerus mengukur jarak dan mencetaknya ke konsol setiap detik. Jika pengguna menekan Ctrl + C (KeyboardInterrupt), program akan membersihkan pin GPIO dan keluar dengan baik.
Konfigurasi ESP32
Penempatan Pin
Arduino IDE Code
const int trigPin = 14;
const int echoPin = 15;
void setup() {
Serial.begin(115200);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
long duration = pulseIn(echoPin, HIGH);
float distance = duration * 0.0343 / 2;
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
delay(500);
}
Dalam fungsi setup, kita menginisialisasi komunikasi serial pada kecepatan baud 115200. Kita kemudian mengatur trigPin sebagai pin output dan echoPin sebagai pin input.
Dalam fungsi loop, proses memicu HC-SR04 dan mengukur jarak sama seperti pada kode Arduino. Kita mengirimkan pulsa level high 10μs ke trigPin untuk memicu sensor, mengukur durasi pulsa level high pada echoPin menggunakan pulseIn, dan menghitung jaraknya.
Ide Proyek Kreatif Menggunakan HC-SR04
Robot Penghindar Rintangan
Sensor-sensor tersebut dikonfigurasi untuk mendeteksi rintangan dari berbagai arah. Misalnya, sekelompok sensor ditempatkan di bagian depan robot untuk mendeteksi rintangan apa pun yang berada tepat di jalur pergerakannya ke depan. Selain itu, sensor juga ditempatkan di sisi-sisi robot untuk mendeteksi rintangan yang mungkin mendekat dari samping. Ketika rintangan terdeteksi, sistem kontrol robot, yang sering kali berbasis mikrokontroler seperti Arduino, menghitung jarak ke rintangan tersebut menggunakan data dari sensor HC-SR04.
Berdasarkan informasi jarak ini, sistem kendali kemudian menentukan tindakan yang tepat untuk menghindari rintangan. Hal ini biasanya melibatkan pengendalian motor sedemikian rupa sehingga mengubah arah robot. Misalnya, jika rintangan terdeteksi di sisi kiri robot, sistem kendali mungkin memerintahkan motor kiri untuk melambat atau mundur sementara motor kanan terus berjalan dengan kecepatan normal. Hal ini menyebabkan robot berbelok ke kanan, menjauhi rintangan.
Untuk membangun proyek ini, Anda memerlukan beberapa komponen utama. Arduino berfungsi sebagai otak dari sistem ini. Ia memproses data yang diterima dari sensor HC-SR04 dan mengirim perintah ke motor. Motor diperlukan untuk menggerakkan roda robot, sehingga robot dapat bergerak. Pengendali motor, seperti L298N, sangat penting untuk mengontrol motor. L298N mampu menangani kebutuhan arus yang relatif tinggi dari motor dan memungkinkan Arduino mengontrol kecepatan serta arah motor secara efektif. Dan tentu saja, beberapa sensor HC-SR04 diperlukan untuk deteksi depan dan samping. Dengan menggabungkan komponen-komponen ini dan menulis kode yang sesuai untuk mengendalikannya, Anda dapat membuat robot penghindar rintangan yang berfungsi penuh.
Tempat Sampah Cerdas
Sensor HC-SR04 dipasang pada tempat sampah sedemikian rupa sehingga dapat mendeteksi jarak ke benda apa pun di depannya. Ketika seseorang mendekati tempat sampah, sensor mengukur jarak antara tempat sampah dan orang tersebut. Jika jarak yang diukur berada di bawah ambang batas yang telah ditetapkan (misalnya, 20 cm), hal ini menandakan bahwa seseorang sudah cukup dekat dengan tempat sampah untuk menggunakannya. Pada titik ini, sensor mengirimkan sinyal ke motor servo.
Motor servo terhubung ke tutup tempat sampah dan bertugas untuk membuka dan menutupnya. Ketika menerima sinyal dari sensor HC-SR04, motor servo berputar untuk membuka tutupnya. Operasi tanpa sentuhan ini tidak hanya nyaman bagi pengguna tetapi juga membantu menjaga kebersihan dan higienis tempat sampah karena tidak perlu menyentuh tutupnya secara langsung.
Saat menulis kode untuk proyek ini, menetapkan ambang batas jarak merupakan langkah yang sangat penting. Anda perlu mengkalibrasi nilai ini dengan cermat berdasarkan persyaratan spesifik tempat sampah pintar Anda. Jika ambang batas diatur terlalu tinggi, tutup mungkin terbuka tanpa perlu saat seseorang masih berada agak jauh dari tempat sampah. Di sisi lain, jika ambang batas diatur terlalu rendah, tutup mungkin tidak terbuka tepat waktu saat pengguna mendekat. Ambang batas jarak yang dikalibrasi dengan baik memastikan tempat sampah pintar berfungsi secara optimal.
Pemantau Tingkat Air
Sensor HC-SR04 dipasang di atas tangki air. Sensor ini memancarkan gelombang ultrasonik ke bawah menuju permukaan air. Gelombang ini bergerak melalui udara dan memantul kembali saat mengenai permukaan air. Sensor kemudian mengukur waktu yang dibutuhkan gelombang untuk mencapai permukaan air dan kembali. Dengan menggunakan kecepatan suara di udara yang diketahui, jarak dari sensor ke permukaan air dapat dihitung.
Dalam banyak kasus, pemantau tingkat air terintegrasi dengan sistem IoT (Internet of Things). Misalnya, sistem ini dapat terhubung ke aplikasi Blynk. Data tingkat air yang dihitung dikirim ke aplikasi tersebut, sehingga pengguna dapat memantau tingkat air dari jarak jauh. Hal ini sangat berguna untuk aplikasi industri di mana pemantauan tingkat air secara real-time sangat penting bagi berfungsinya proses dengan baik.
Salah satu aspek penting yang perlu dipertimbangkan saat memasang monitor ketinggian air adalah kalibrasi. Karena sensor dipasang pada ketinggian tertentu di atas dasar tangki, ketinggian ini perlu diperhitungkan dalam perhitungan jarak. Misalnya, jika sensor dipasang 50 cm di atas dasar tangki, dan jarak yang dihitung dari sensor ke permukaan air adalah 30 cm, maka ketinggian air sebenarnya di dalam tangki adalah 20 cm. Dengan mengkalibrasi ketinggian sensor secara akurat dan melakukan perhitungan yang diperlukan, Anda dapat memastikan bahwa monitor ketinggian air memberikan pembacaan yang akurat dan andal.
Pemecahan Masalah Umum
Hasil Pengukuran yang Tidak Konsisten
Penyebab: Pantulan multi-jalur atau daya yang tidak stabil
Catu daya yang tidak stabil adalah penyebab lainnya. Jika catu daya ke HC-SR04 tidak stabil, hal ini dapat menyebabkan sensor tidak berfungsi dengan baik. Fluktuasi tegangan dapat memengaruhi fungsi pemancar dan penerima ultrasonik, yang menyebabkan pengukuran jarak menjadi tidak menentu. Misalnya, jika Anda menggunakan baterai yang hampir habis atau adaptor daya dengan regulasi tegangan yang buruk, sensor mungkin tidak menerima catu daya 5V yang konsisten, yang dapat memengaruhi kinerjanya.
Solusi: Pasang penutup pelindung pada sensor dan gunakan sumber daya 5V yang stabil
Penggunaan sumber daya 5V yang teratur sangat penting untuk pengoperasian yang stabil. Catu daya dengan pengatur tegangan bawaan, seperti adaptor dinding berkualitas tinggi atau modul daya dengan pengatur tegangan, memastikan bahwa HC-SR04 menerima tegangan 5V yang konsisten. Hal ini membantu menghilangkan masalah yang disebabkan oleh fluktuasi tegangan dan meningkatkan akurasi serta konsistensi pembacaan sensor secara keseluruhan.
Tidak Ada Sinyal Keluaran
Jika Anda menggunakan HC-SR04 dengan Raspberry Pi, jangan lupa untuk memeriksa rangkaian pembagi tegangan. Seperti yang disebutkan sebelumnya, pin GPIO Raspberry Pi hanya dapat menangani tegangan 3,3V, dan rangkaian pembagi tegangan sering digunakan untuk mengubah keluaran 5V dari pin Echo HC-SR04 menjadi sinyal yang kompatibel dengan 3,3V. Jika komponen pembagi tegangan (biasanya resistor) rusak atau terhubung secara salah, hal ini dapat mengakibatkan tidak adanya sinyal keluaran yang diterima oleh Raspberry Pi.
Logika kode untuk waktu pemicu/gema juga merupakan area kritis yang perlu diperiksa. Pastikan kode mengirimkan sinyal pemicu yang benar (pulsa level tinggi 10μs) ke pin Trig dan mengukur durasi pulsa level tinggi pada pin Echo dengan benar. Kode yang salah dapat mencegah sensor terpicu atau menyebabkan mikrokontroler salah menafsirkan sinyal gema, yang mengakibatkan tidak ada output atau perhitungan jarak yang salah. Misalnya, jika waktu tunda dalam kode diatur secara tidak benar, hal ini dapat mengganggu urutan pemicu sensor dan pembacaan echo yang seharusnya.
Kesalahan Di Luar Rentang
Menangani nilai 0 atau ∞ (tak terhingga) dengan baik dalam kode juga penting. Nilai jarak 0 mungkin menandakan bahwa sensor terlalu dekat dengan objek, lebih dekat dari jangkauan deteksi minimumnya. Dalam kasus seperti itu, Anda mungkin ingin menetapkan ambang batas jarak minimum dalam kode Anda dan menyesuaikan nilai jarak sesuai dengan itu. Demikian pula, jika kode menghitung nilai jarak yang sangat besar (mendekati tak terhingga), hal ini kemungkinan menandakan adanya kesalahan, seperti masalah pada deteksi pantulan atau perhitungan yang salah. Kode Anda harus dapat menangani kasus-kasus ini dengan baik, misalnya dengan mencatat pesan kesalahan atau mencoba mengukur jarak kembali.
HC-SR04 vs. Sensor Jarak Lainnya
vs. Sensor Inframerah
HC-SR04
Jangkauan: 2cm–400cm (Abstrak 1, 6)
Akurasi: ±3mm (kondisi ideal, Abstrak 1)
Tegangan: 5V (tetap, Abstrak 1)
Kelebihan: Tidak ada interferensi cahaya, jangkauan lebih jauh (Abstrak 5)
Kekurangan: Berkurangnya akurasi jarak dekat, sensitif terhadap kebisingan ultrasonik (Abstrak 1)
Inframerah
Jangkauan: Umumnya <100cm (Abstrak 1, 5)
Akurasi: ±5mm–1cm (dipengaruhi oleh warna/bahan, Abstrak 5)
Tegangan: 3,3V–5V (fleksibel, Abstrak 5)
Kelebihan: Ukuran kecil, biaya rendah (Abstrak 1)
Kekurangan: Interferensi cahaya sekitar/warna (Abstrak 5)
Tabel 1 menyoroti pertukaran antara kemampuan deteksi jarak jauh yang andal dari HC-SR04 (2 cm–400 cm) dan ukuran yang ringkas serta biaya rendah dari sensor inframerah, dengan memperhatikan ketahanan HC-SR04 terhadap gangguan cahaya dibandingkan kerentanan sensor inframerah terhadap cahaya sekitar dan warna material.
vs. Sensor Laser
HC-SR04
Jangkauan: 2cm–400cm (Abstrak 1, 4)
Akurasi: ±3mm (Abstrak 4)
Kecepatan Pembaruan: 60ms (Abstrak 4)
Biaya: ~$2–3 (Abstrak 1)
Kelemahan: Sudut kerucut 15°, kebisingan lingkungan (Abstrak 1)
Laser/ToF (VL53L0X)
Jangkauan: 5cm–200cm (Abstrak 1, 3)
Akurasi: ±1mm–3mm (Abstrak 3)
Kecepatan Pembaruan: 20ms (lebih cepat, Abstrak 4)
Biaya: ~$10–15 (Abstrak 1)
Kelebihan: Berkas sempit 5°, tahan interferensi (Abstrak 3)
Tabel 2 membandingkan keunggulan HC-SR04 dalam hal efisiensi biaya ($2–3) dan jangkauan yang luas (400 cm) dengan presisi yang lebih tinggi (±1 mm) dan kecepatan (laju pembaruan 20 ms) dari sensor Laser/ToF, yang sangat cocok untuk aplikasi yang membutuhkan akurasi tinggi di lingkungan terkendali.
vs. AS - Modul 100
HC-SR04
Jangkauan: 2cm–400cm (Abstrak 2, 6)
Akurasi: ±3mm (nominal, Abstrak 2)
Tegangan: 5V saja (Abstrak 6)
Fitur: Hanya GPIO, tanpa kompensasi suhu (Abstrak 3)
Masalah: Nilai acak di atas 400cm (Abstrak 6)
US-100
Jangkauan: 2cm–450cm (Abstrak 2, 3)
Akurasi: ±2mm (lebih baik dalam pengujian, Abstrak 3)
Tegangan: 3,3V–5V (Abstrak 3)
Fitur: Kompensasi suhu (mode UART), kode error (Abstrak 6)
Kekurangan: Biaya lebih tinggi ($5–8), pengaturan UART diperlukan (Abstrak 3)
Tabel 3 memperlihatkan jangkauan yang lebih luas (450 cm), akurasi yang lebih baik (±2 mm), dan kompatibilitas 3,3 V/5 V pada US-100 dibandingkan dengan kesederhanaan HC-SR04 (hanya GPIO), serta menyoroti fitur kompensasi suhu US-100 untuk penggunaan industri dengan harga yang lebih tinggi ($5–8).
Teknik Lanjutan dan Optimalisasi
Kalibrasi Multi-Sensor
Namun, saat menggunakan beberapa sensor, interferensi cross-talk dapat menjadi masalah yang signifikan. Cross-talk terjadi ketika gelombang ultrasonik yang dipancarkan oleh satu sensor mengganggu pengoperasian sensor lainnya. Hal ini dapat menyebabkan pembacaan yang tidak akurat karena sensor mungkin salah mengartikan gelombang yang mengganggu sebagai gema dari rintangan yang sebenarnya.
Untuk mengurangi gangguan cross-talk, beberapa teknik dapat diterapkan. Salah satu pendekatan adalah dengan melakukan time-multiplexing pada sensor. Hal ini melibatkan pengaktifan sensor satu per satu, dengan interval waktu yang cukup di antara setiap pengaktifan. Misalnya, jika Anda memiliki empat sensor HC-SR04 pada sebuah robot, Anda dapat mengaktifkan sensor 1, menunggu hingga siklus pengukurannya selesai, lalu mengaktifkan sensor 2, dan seterusnya. Dengan melakukan ini, Anda memastikan bahwa gelombang ultrasonik dari satu sensor tidak tumpang tindih dengan gelombang dari sensor lain, sehingga mengurangi kemungkinan terjadinya interferensi cross-talk.
Teknik lain adalah menggunakan bahan pelindung. Menempatkan penghalang fisik, seperti lembaran logam tipis atau bahan penyerap suara, di antara sensor dapat membantu menghalangi gelombang ultrasonik dari satu sensor agar tidak mencapai sensor lainnya. Hal ini dapat sangat berguna dalam situasi di mana sensor ditempatkan berdekatan satu sama lain.
Kalibrasi juga sangat penting saat menggunakan beberapa sensor. Setiap sensor mungkin memiliki karakteristik yang sedikit berbeda, seperti sensitivitas atau sudut sinar. Dengan mengkalibrasi sensor, Anda dapat memperhitungkan perbedaan ini dan memastikan bahwa data dari semua sensor konsisten. Hal ini mungkin melibatkan pengukuran jarak ke objek yang diketahui dengan setiap sensor dan menyesuaikan pembacaan berdasarkan perbedaan tersebut.
Penyaringan Kebisingan
Salah satu metode yang umum digunakan adalah filter rata-rata bergerak. Filter rata-rata bergerak bekerja dengan menghitung rata-rata dari serangkaian pembacaan jarak berturut-turut. Misalnya, alih-alih menggunakan satu pembacaan jarak, Anda dapat mengambil 5 pembacaan terakhir dan menghitung rata-ratanya. Hal ini akan menghaluskan pembacaan yang tidak stabil, karena fluktuasi kecil cenderung saling meniadakan saat dirata-ratakan. Dalam Python, implementasi filter rata-rata bergerak sederhana untuk pembacaan jarak HC-SR04 dapat terlihat seperti ini:
distance_readings = []
num_readings = 5
def moving_average_filter(new_distance):
distance_readings.append(new_distance)
if len(distance_readings) > num_readings:
distance_readings.pop(0)
return sum(distance_readings) / len(distance_readings)
Metode penyaringan lain yang efektif adalah filter median. Filter median menggantikan setiap nilai jarak dengan nilai median dari sekumpulan pembacaan berturut-turut. Median lebih tidak sensitif terhadap nilai ekstrem atau outlier dibandingkan dengan rata-rata. Misalnya, jika Anda memiliki sekumpulan 5 pembacaan jarak [20, 22, 18, 50, 21], nilai mediannya adalah 21. Dengan menggunakan filter median, nilai outlier sebesar 50 tidak akan secara signifikan memengaruhi hasil yang difilter. Di Arduino, implementasi filter median dapat dilakukan sebagai berikut:
const int numReadings = 5;
int readings[numReadings];
int readIndex = 0;
int total = 0;
int averageDistance = 0;
void addReading(int newReading) {
total = total - readings[readIndex];
readings[readIndex] = newReading;
total = total + readings[readIndex];
readIndex = readIndex + 1;
if (readIndex >= numReadings) {
readIndex = 0;
}
}
int getMedian() {
int sortedReadings[numReadings];
for (int i = 0; i < numReadings; i++) {
sortedReadings[i] = readings[i];
}
for (int i = 0; i < numReadings - 1; i++) {
for (int j = i + 1; j < numReadings; j++) {
if (sortedReadings[i] > sortedReadings[j]) {
int temp = sortedReadings[i];
sortedReadings[i] = sortedReadings[j];
sortedReadings[j] = temp;
}
}
}
return sortedReadings[numReadings / 2];
}
Mode Kerja Khusus
Timing, penyesuaian level, dan sumber galat HC-SR04
HC-SR04 memperkirakan jarak dari waktu pulang-pergi semburan ultrasonik dengan jarak = waktu echo × kecepatan suara / 2. Varian modul dapat berbeda; pastikan catu dan level Echo, lalu sesuaikan keluaran 5 V sebelum masuk ke pin yang hanya menerima 3,3 V.
- Buat trigger: berikan lebar pulsa yang diwajibkan modul tepat lalu ukur pulsa Echo kembali.
- Tetapkan timeout: berhenti menunggu bila tidak ada echo agar program tidak terblokir selamanya.
- Kompensasi kecepatan suara: suhu mengubah konversi dan aliran udara menambah galat.
- Perhatikan geometri: permukaan lunak, miring, sempit, atau dekat dapat menyerap atau membelokkan semburan.
- Hindari interferensi: jalankan beberapa sensor bergantian dan tolak lompatan mustahil dengan filter terbatas.




