Penggunaan Multi Sensor Ultrasonik HC-SR04 Untuk Deteksi Obstacles
Table of Contents
Pada ulasan lalu, saya pernah membahas mengenai bagaimana mengukur jarak benda menggunakan sensor ultrasonik HC-SR04 atau SRF05. Namun, sebatas pada penggunakan sensor ultrasonik tunggal atau 1 buah sensor saja. Padahal kenyataan sebenarnya berbicara lain, seringkali dalam membuat robot yang mampu mendeteksi obstacle atau halangan yang berada di lingkungan sekitar robot, dibutuhkan setidaknya minimal 4 buah sensor ultrasonik yang diletakkan disebelah kanan, kiri, depan dan belakang badan robot. Jika menggunakan 1 buah sensor ultrasonik saja, tentu hasil deteksi obstacle menjadi tidak maksimal.
Contoh robot yang sering dijumpai memiliki banyak komponen sensor ultrasonik adalah robot pemadam api beroda maupun berkaki. Robot ini setiap tahunnya, menjadi icon dalam Kontes Robot Indonesia (KRI) yang diikuti oleh hampir semua kampus di Indonesia. Sensor ultrasonik pada robot pemadam api berfungsi untuk mencegah robot agar tidak menabrak tembok batas lintasan ketika robot mencari titik api. Gambar 1 menunjukkan bahwa multi sensor ultrasonik terpasang di beberapa titik badan robot.
Gambar 1 Robot Pemadam Api Beroda dan Berkaki |
Atas dasar itulah pada proyek kali ini, saya akan menjelaskan bagaimana menggunakan multi sensor ultrasonik HC-SR04 pada arduino uno untuk deteksi obstacles atau benda-benda yang berada di sekitar robot. Maka, saya menggunakan 3 buah sensor ultrasonik HC-SR04 yang nantinya dirangkai sedemikian rupa pada arduino. Hasil deteksi obtascle berupa jarak dalam ukuran centimeter antara benda dan sensor yang ditampilkan melalui serial monitor arduino.
Adapun komponen-komponen yang diperlukan dalam proyek ini antara lain :
- Arduino Uno
- Project Board
- Sensor Ultrasonik HC-SR04 sebanyak 3 buah
- Kabel jumper secukupnya
Agar lebih mudah dalam menjelaskan, 3 buah sensor ultrasonik saya namakan sebagai sensor ultrasonik1, sensor ultrasonik2 dan sensor ultrasonik3. Rangkaian ketiga sensor ultrasonik pada arduino dapat dilihat pada gambar 2 berikut :
Gambar 2 Rangkaian multi sensor ultrasonik pada arduino |
- Pada sensor ultrasonik1, pin trigger terhubung dengan dengan pin 9, sementara pin echo terhubung dengan pin 8 arduino.
- Pada sensor ultrasonik2, pin trigger terhubung dengan dengan pin 5, sementara pin echo terhubung dengan pin 4 arduino.
- Untuk sensor ultrasonik3, pin trigger terhubung dengan dengan pin 3, sementara pin echo terhubung dengan pin 2 arduino.
- Kemudian, semua pin GND dan VCC sensor ultrasonik dihubungkan dengan project board, lalu dari project board dihubungkan ke GND dan 5V arduino.
Gambar 3 menunjukkan rangkaian komponen yang telah terpasang sesuai dengan ketentuan diatas. Setelah itu, lanjut ke proses pemrograman arduino .
Gambar 3 Rangkaian Proyek Arduino 5 |
const int UltrasonikTrig1 = 9; const int UltrasonikEcho1 = 8; const int UltrasonikTrig2 = 5; const int UltrasonikEcho2 = 4; const int UltrasonikTrig3 = 3; const int UltrasonikEcho3 = 2; void setup() { Serial.begin(9600); pinMode(UltrasonikTrig1, OUTPUT); pinMode(UltrasonikTrig2, OUTPUT); pinMode(UltrasonikTrig3, OUTPUT); pinMode(UltrasonikEcho1, INPUT); pinMode(UltrasonikEcho2, INPUT); pinMode(UltrasonikEcho3, INPUT); } long duration1, duration2, duration3 ; long inchi1, inchi2, inchi3; long cm1, cm2, cm3 ; void loop() { digitalWrite(UltrasonikTrig1, LOW); digitalWrite(UltrasonikTrig1, HIGH); digitalWrite(UltrasonikTrig2, LOW); digitalWrite(UltrasonikTrig2, HIGH); digitalWrite(UltrasonikTrig3, LOW); digitalWrite(UltrasonikTrig3, HIGH); delayMicroseconds(10); digitalWrite(UltrasonikTrig1, LOW); duration1 = pulseIn(UltrasonikEcho1, HIGH); digitalWrite(UltrasonikTrig2, LOW); duration2 = pulseIn(UltrasonikEcho2, HIGH); digitalWrite(UltrasonikTrig3, LOW); duration3 = pulseIn(UltrasonikEcho3, HIGH); inchi1 = microsecondsKeInchi(duration1); inchi2 = microsecondsKeInchi(duration2); inchi3 = microsecondsKeInchi(duration3); cm1 = microsecondsKeCenti(duration1); cm2 = microsecondsKeCenti(duration2); cm3 = microsecondsKeCenti(duration3); Serial.print("Ultrasonik1 : "); Serial.print(inchi1); Serial.print(" in, "); Serial.print(cm1); Serial.print(" cm"); Serial.print(" || "); Serial.print("Ultrasonik2 : "); Serial.print(inchi2); Serial.print(" in, "); Serial.print(cm2); Serial.print(" cm"); Serial.print(" || "); Serial.print("Ultrasonik3 : "); Serial.print(inchi3); Serial.print(" in, "); Serial.print(cm3); Serial.print(" cm"); Serial.print(" || "); Serial.println(); delay(100); } long microsecondsKeInchi(long microseconds) { return microseconds / 74 / 2; } long microsecondsKeCenti(long microseconds) { return microseconds / 29 / 2; }
Pada program diatas, ketiga sensor ultrasonik diperintahkan untuk memancarkan gelombang ultrasonik melalui output trigger kemudian diterima oleh input echo. Hasil deteksi obyek di lingkungan robot ditunjukkan melalui jarak antara benda terdeteksi dengan sensor ultrasonik dalam satuan cm dan ichi.
Sebagaimana yang terlihat pada gambar 3, masing-masing sensor ultrasonik dihadapkan dengan arah yang berbeda, yaitu arah depan, samping kiri dan samping kanan. Hasilnya, ketiga sensor ultrasonik akan mendeteksi obtacles sesuai dengan arah hadap masing-masing.
Gambar 3 Penggunaan Multi Sensor Ultrasonik untuk Deteksi Obyek |
Gambar 4 Hasil pengukuran dan deteksi benda masing-masing sensor ultrasonik |
Sebagaimana yang terlihat pada gambar 4, hasil deteksi benda di lingkungan sensor ditunjukkan dengan ukuran jarak antara sensor dengan benda yang di deteksi dalam satuan cm dan inchi pada sensor ultrasonik1, ultasonik2 maupun ultrasonik3.
Dalam pengembangan selanjutnya, penggunaan multi sensor ultrasonik ini dapat diterapkan pada robot pemadam api beroda, robot untuk pemetaan ruangan, robot pendeteksi halangan, dan lain sebagainya, Tergantung dari kreativitas rekan-rekan semua.
Akhir kata, semoga ulasan sederhana ini bermanfaat bagi rekan-rekan untuk dapat dikembangan menjadi robot yang bermanfaat bagi kehidupan manusia.