Mengenal Sensor Ultrasonik HC-SR04: Prinsip Kerja, pemrograman menggunakan arduino dan esp32 serta pengaplikasiannya.
Sensor ultrasonik HC-SR04 adalah salah satu sensor yang paling populer digunakan pada proyek-proyek elektronik yang berhubungan dengan pengukuran jarak. Sensor ini memiliki kemampuan untuk mengukur jarak dengan cepat dan akurat, dan sering digunakan pada robotika, kendaraan otomatis, dan alat-alat yang memerlukan pengukuran jarak yang akurat. Pada artikel ini, akan dibahas tentang sensor ultrasonik HC-SR04 dan cara menghubungkannya dengan Arduino serta kode program yang diperlukan untuk mengoperasikan sensor ini.
A. Apa itu Sensor Ultrasonik HC-SR04?
Sensor ultrasonik HC-SR04 adalah sensor yang menggunakan gelombang suara ultrasonik untuk mengukur jarak antara sensor dan objek yang diukur. Sensor ini memiliki dua modul utama yaitu modul pengirim dan modul penerima. Modul pengirim akan mengirimkan sinyal ultrasonik ke objek yang diukur, dan kemudian modul penerima akan menerima sinyal pantulan dari objek tersebut. Sensor ini kemudian menghitung waktu yang dibutuhkan untuk sinyal ultrasonik kembali ke modul penerima dan mengkonversi waktu tersebut menjadi jarak.
B. Spesifikasi Sensor Ultrasonik HC-SR04
Berikut adalah spesifikasi sensor ultrasonik HC-SR04:
a. Tegangan operasi: 5V DC
b. Jarak pengukuran: 2cm hingga 400cm
c. Sudut pengukuran: kurang dari 15 derajat
d. Resolusi: 0,3cm
e. Frekuensi kerja: 40kHz
C. Sensor jarak yang lebih akurat dari SR-04 ini
Sensor ultrasonik HC-SR04 merupakan salah satu jenis sensor jarak yang paling populer dan banyak digunakan dalam proyek-proyek elektronik. Namun, ada beberapa jenis sensor jarak lainnya yang lebih akurat dibandingkan dengan HC-SR04, di antaranya:
a. Sensor Time of Flight (ToF)
Sensor ToF menggunakan teknologi pulsa cahaya atau inframerah untuk mengukur jarak antara sensor dan objek yang diukur. Sensor ini memiliki akurasi yang tinggi dan dapat mengukur jarak hingga beberapa meter. Namun, sensor ToF memiliki harga yang lebih mahal dibandingkan dengan HC-SR04.
b. Laser Rangefinder
Laser rangefinder menggunakan sinar laser untuk mengukur jarak antara sensor dan objek yang diukur. Sensor ini sangat akurat dan dapat mengukur jarak dengan ketelitian yang sangat tinggi, bahkan hingga fraksi milimeter. Namun, harga sensor laser rangefinder cukup mahal dan umumnya digunakan pada aplikasi yang memerlukan ketelitian yang tinggi.
c. Sensor Inframerah
Sensor inframerah juga dapat digunakan untuk mengukur jarak antara sensor dan objek yang diukur. Sensor ini umumnya lebih akurat dibandingkan dengan HC-SR04 dalam mengukur jarak pada jarak yang pendek. Namun, penggunaan sensor inframerah memiliki batasan pada kondisi cahaya yang kurang baik, seperti dalam keadaan gelap.
Namun, perlu diingat bahwa keakuratan dari suatu sensor jarak juga tergantung pada berbagai faktor lainnya, seperti kondisi lingkungan, kestabilan sumber daya, dan pengaturan program yang digunakan. Oleh karena itu, pemilihan sensor jarak yang tepat harus disesuaikan dengan kebutuhan dan aplikasi yang akan digunakan.
D. Sensor sejenis SR-04 yang jaraknya lebih jauh
Sensor ultrasonik HC-SR04 memiliki jangkauan pengukuran jarak yang terbatas, yakni sekitar 2-400 cm. Jika Anda membutuhkan sensor yang mampu mengukur jarak yang lebih jauh, ada beberapa pilihan alternatif yang dapat dipertimbangkan, antara lain:
a. Sensor Ultrasonik JSN-SR04T
Sensor ini memiliki jangkauan pengukuran jarak yang lebih jauh dibandingkan dengan HC-SR04, yaitu sekitar 2-600 cm. Selain itu, sensor ini juga dilengkapi dengan proteksi air sehingga dapat digunakan pada kondisi lingkungan yang lebih ekstrim.
b. Sensor Ultrasonik JSN-SR04T-2.0
Sensor ini memiliki jangkauan pengukuran jarak yang lebih jauh lagi, yaitu sekitar 20-600 cm. Selain itu, sensor ini juga memiliki kemampuan membedakan sinyal dari berbagai benda sehingga dapat menghasilkan pengukuran yang lebih akurat.
c. Sensor Lidar
Sensor Lidar menggunakan teknologi pemantulan laser untuk mengukur jarak antara sensor dan objek yang diukur. Sensor ini memiliki jangkauan pengukuran yang lebih jauh dibandingkan dengan sensor ultrasonik, bahkan dapat mencapai beberapa ratus meter. Namun, sensor Lidar juga memiliki harga yang jauh lebih mahal dibandingkan dengan sensor ultrasonik.
Perlu diingat bahwa pemilihan sensor yang tepat harus disesuaikan dengan kebutuhan dan aplikasi yang akan digunakan. Jangan hanya memilih sensor yang memiliki jangkauan pengukuran yang lebih jauh, namun juga perhatikan faktor-faktor lain seperti keakuratan pengukuran, kestabilan, dan kemampuan sensor dalam mengatasi kondisi lingkungan yang berbeda.
E. Cara Menghubungkan Sensor Ultrasonik HC-SR04 dengan Arduino
Untuk menghubungkan sensor ultrasonik HC-SR04 dengan Arduino, dibutuhkan kabel jumper yang akan dihubungkan antara sensor dan Arduino. Berikut adalah langkah-langkah untuk menghubungkan sensor ultrasonik HC-SR04 dengan Arduino:
1. Hubungkan kabel GND sensor dengan pin GND pada Arduino.
2. Hubungkan kabel VCC sensor dengan pin 5V pada Arduino.
3. Hubungkan kabel Trigger sensor dengan pin digital misal pin 9 pada Arduino Uno.
4. Hubungkan kabel Echo sensor dengan pin digital misal pin 10 pada Arduino Uno.
F. Kode Program Arduino untuk Sensor Ultrasonik HC-SR04
Setelah menghubungkan sensor ultrasonik HC-SR04 dengan Arduino, selanjutnya dibutuhkan kode program Arduino untuk mengoperasikan sensor ini. Berikut adalah contoh kode program Arduino untuk sensor ultrasonik HC-SR04:
a. Tanpa Library tambahan
int trigPin = 9;
int echoPin = 10;
long duration, distance;
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
Serial.begin(9600);
}
void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration/2) / 29.1;
Serial.print("Jarak: ");
Serial.print(distance);
Serial.println(" cm");
delay(500);
}
Penjelasan kode program di atas adalah sebagai berikut:
Pada baris pertama, dideklarasikan variabel trigPin dan echoPin sebagai pin output dan input yang akan digunakan untuk mengirim dan menerima sinyal ultrasonik.
Pada baris ketiga dan keempat, dideklarasikan variabel duration dan distance sebagai variabel yang akan digunakan untuk menyimpan durasi sinyal ultrasonik kembali dan jarak yang diukur.
Pada fungsi setup, dilakukan pengaturan pin trigPin dan echoPin sebagai output dan input, serta inisialisasi Serial untuk komunikasi dengan komputer melalui port serial.
Pada fungsi loop, pertama-tama sinyal di pin trigPin dikirimkan dengan memberikan sinyal HIGH selama 10 mikrodetik, kemudian sinyal dikembalikan ke LOW. Kemudian, durasi sinyal yang diterima di pin echoPin dihitung dengan menggunakan fungsi pulseIn(). Setelah itu, jarak dihitung berdasarkan durasi tersebut dengan rumus jarak = (durasi/2) / 29.1 (dalam cm).
Hasil jarak dioutputkan ke Serial Monitor dengan menggunakan fungsi Serial.print() dan Serial.println(), dan ditampilkan dalam satuan cm.
Terakhir, dilakukan delay selama 500 milidetik sebelum mengulangi proses pengukuran jarak.
b. Selain menggunakan kode program yang sudah dijelaskan sebelumnya, sensor ultrasonik HC-SR04 juga dapat diprogram menggunakan library NewPing.h. Library ini mempermudah penggunaan sensor ultrasonik dengan menyediakan fungsi-fungsi yang sudah siap digunakan.
Berikut ini adalah langkah-langkah untuk menggunakan library NewPing.h dengan sensor ultrasonik HC-SR04 dan Arduino:
- Pertama-tama, unduh library NewPing.h melalui menu Sketch -> Include Library -> Manage Libraries pada software Arduino IDE.
- Setelah library NewPing.h terinstal, buatlah sebuah program baru pada Arduino IDE.
- Pada bagian awal program, sertakan library NewPing.h dengan menggunakan perintah #include .
- Deklarasikan variabel yang akan digunakan untuk menghubungkan sensor ultrasonik dengan Arduino. Variabel ini meliputi variabel trigPin dan echoPin, serta variabel maxDistance yang akan digunakan untuk membatasi jarak maksimal yang diukur.
- Buat objek dari class NewPing dengan menggunakan perintah NewPing sonar(trigPin, echoPin, maxDistance). Objek ini nantinya akan digunakan untuk memanggil fungsi-fungsi dari library NewPing.h.
- Pada fungsi loop, panggil fungsi sonar.ping_cm() untuk mengukur jarak dalam satuan cm. Hasil pengukuran disimpan dalam variabel distance_cm.
- Tampilkan hasil pengukuran ke Serial Monitor dengan menggunakan perintah Serial.print() dan Serial.println().
- Berikut ini adalah contoh program untuk mengukur jarak menggunakan library NewPing.h:
#include <NewPing.h>
#define trigPin 9
#define echoPin 10
#define maxDistance 200
NewPing sonar(trigPin, echoPin, maxDistance);
void setup() {
Serial.begin(9600);
}
void loop() {
float distance_cm = sonar.ping_cm();
Serial.print("Jarak: ");
Serial.print(distance_cm);
Serial.println(" cm");
delay(500);
}
Pada program di atas, sensor ultrasonik dihubungkan dengan pin 2 sebagai pin output (trigPin) dan pin 3 sebagai pin input (echoPin). Jarak maksimal yang diukur adalah 200 cm. Hasil pengukuran dioutputkan ke Serial Monitor dengan delay 500 milidetik. Dalam hal ini, pengukuran jarak menggunakan fungsi sonar.ping_cm() yang disediakan oleh library NewPing.h. Hasil pengukuran dioutputkan ke Serial Monitor dengan menggunakan perintah Serial.print() dan Serial.println().
G. Pemrograman menggunakan ESP32
Sensor ultrasonik HC-SR04 juga dapat digunakan dengan ESP32. Berikut ini adalah langkah-langkah untuk menghubungkan sensor ultrasonik HC-SR04 dengan ESP32 dan memprogramnya menggunakan Arduino IDE:
langkah-langkahnya hampir sama dengan saat menggunakan library tersebut pada Arduino Uno. Berikut ini adalah langkah-langkahnya:
- Siapkan ESP32 dan sensor ultrasonik HC-SR04 beserta kabel jumper yang diperlukan.
- Hubungkan pin trig dari sensor ultrasonik dengan salah satu pin output digital pada ESP32 (misalnya GPIO 2).
- Hubungkan pin echo dari sensor ultrasonik dengan salah satu pin input digital pada ESP32 (misalnya GPIO 4).
- Buatlah sebuah program baru pada Arduino IDE.
- Pertama-tama, unduh library NewPing.h melalui menu Sketch -> Include Library -> Manage Libraries pada software Arduino IDE.
- Setelah library NewPing.h terinstal, sertakan library tersebut di awal program dengan menggunakan perintah #include .
- Deklarasikan variabel yang akan digunakan untuk menghubungkan sensor ultrasonik dengan ESP32. Variabel ini meliputi variabel trigPin dan echoPin, serta variabel maxDistance yang akan digunakan untuk membatasi jarak maksimal yang diukur.
- Buat objek dari class NewPing dengan menggunakan perintah NewPing sonar(trigPin, echoPin, maxDistance). Objek ini nantinya akan digunakan untuk memanggil fungsi-fungsi dari library NewPing.h.
- Pada fungsi setup, inisialisasi Serial untuk komunikasi dengan komputer melalui port serial.
- Pada fungsi loop, panggil fungsi sonar.ping_cm() untuk mengukur jarak dalam satuan cm. Hasil pengukuran disimpan dalam variabel distance_cm.
- Tampilkan hasil pengukuran ke Serial Monitor dengan menggunakan perintah Serial.print() dan Serial.println().
Berikut ini adalah contoh program untuk mengukur jarak menggunakan ESP32 dan library NewPing.h:
#include <NewPing.h>
#define trigPin 2
#define echoPin 4
#define maxDistance 200
NewPing sonar(trigPin, echoPin, maxDistance);
void setup() {
Serial.begin(9600);
}
void loop() {
float distance_cm = sonar.ping_cm();
Serial.print("Jarak: ");
Serial.print(distance_cm);
Serial.println(" cm");
delay(500);
}
Pada program di atas, sensor ultrasonik dihubungkan dengan pin 23 sebagai pin output (trigPin) dan pin 22 sebagai pin input (echoPin). Jarak maksimal yang diukur adalah 200 cm. Hasil pengukuran dioutputkan ke Serial Monitor dengan delay 500 milidetik. Dalam hal ini, pengukuran jarak menggunakan fungsi sonar.ping_cm() yang disediakan oleh library NewPing.h. Hasil pengukuran dioutputkan ke Serial Monitor dengan menggunakan perintah Serial.print() dan Serial.println().
H. Pengaplikasian SR-04 untuk mengukur tinggi badan
Sensor ultrasonik HC-SR04 dapat digunakan untuk mengukur jarak atau tinggi, termasuk tinggi badan seseorang. Namun, penggunaan HC-SR04 untuk mengukur tinggi badan harus dilakukan dengan hati-hati dan tidak sepenuhnya akurat, karena sensor ini dapat terpengaruh oleh berbagai faktor seperti posisi tubuh, pakaian yang dikenakan, dan permukaan lantai.
Berikut adalah langkah-langkah penggunaan HC-SR04 untuk mengukur tinggi badan:
Siapkan rangkaian elektronik yang terdiri dari HC-SR04, Arduino, dan display LCD untuk menampilkan hasil pengukuran.
Tempatkan HC-SR04 pada posisi yang tepat untuk mengukur tinggi badan. Idealnya, sensor harus ditempatkan pada dinding atau tiang dan diatur sedemikian rupa sehingga dapat mengukur jarak vertikal dari permukaan lantai ke bagian atas kepala seseorang.
Programkan Arduino untuk membaca data yang dikirimkan oleh HC-SR04 dan menampilkan hasil pengukuran pada display LCD.
Untuk melakukan pengukuran, pengguna harus berdiri di depan HC-SR04 dengan posisi tegak dan tidak membungkuk. Kemudian, Arduino akan mengirimkan sinyal ke HC-SR04 untuk mengukur jarak vertikal dari permukaan lantai ke bagian atas kepala pengguna.
Hasil pengukuran akan ditampilkan pada display LCD, dan pengguna dapat mencatatnya untuk mengetahui tinggi badannya.
Namun, perlu diingat bahwa penggunaan HC-SR04 untuk mengukur tinggi badan hanya memberikan hasil perkiraan dan tidak sepenuhnya akurat. Untuk pengukuran yang lebih akurat, disarankan untuk menggunakan alat pengukur tinggi badan yang telah teruji dan terbukti akurasinya.
Berikut adalah contoh program untuk mengukur tinggi badan menggunakan sensor ultrasonik HC-SR04 dan Arduino:
#include <NewPing.h>
#include <LiquidCrystal.h>
#define TRIGGER_PIN 2
#define ECHO_PIN 3
#define MAX_DISTANCE 200 // maksimal jarak pengukuran dalam cm
#define LCD_RS 4
#define LCD_EN 5
#define LCD_D4 6
#define LCD_D5 7
#define LCD_D6 8
#define LCD_D7 9
#define LCD_COLUMNS 16
#define LCD_ROWS 2
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // inisialisasi objek sensor ultrasonik
LiquidCrystal lcd(LCD_RS, LCD_EN, LCD_D4, LCD_D5, LCD_D6, LCD_D7); // inisialisasi objek display LCD
void setup() {
lcd.begin(LCD_COLUMNS, LCD_ROWS); // inisialisasi display LCD
lcd.print("Tinggi Badan"); // menampilkan judul program pada display LCD
}
void loop() {
delay(1000); // delay selama 1 detik
unsigned int pingTime = sonar.ping_median(); // mengukur jarak dan mengambil nilai median dari 5 pengukuran
float height = pingTime / 58.0; // menghitung tinggi badan dalam cm
lcd.clear(); // membersihkan tampilan pada display LCD
lcd.print("Tinggi: ");
lcd.print(height);
lcd.print(" cm"); // menampilkan hasil pengukuran pada display LCD
}
Penjelasan program di atas:
Pertama-tama, kita memuat dua library yaitu NewPing dan LiquidCrystal yang dibutuhkan untuk mengakses sensor ultrasonik dan menampilkan hasil pengukuran pada display LCD.
Kemudian, kita mendefinisikan pin untuk sensor ultrasonik dan display LCD serta maksimal jarak pengukuran yang diinginkan.
Selanjutnya, kita membuat objek sensor ultrasonik menggunakan sintaksis “NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);” dimana parameter pertama adalah pin trigger, parameter kedua adalah pin echo, dan parameter ketiga adalah maksimal jarak pengukuran.
Setelah itu, kita membuat objek display LCD menggunakan sintaksis “LiquidCrystal lcd(LCD_RS, LCD_EN, LCD_D4, LCD_D5, LCD_D6, LCD_D7);”.
Pada fungsi setup(), kita menginisialisasi display LCD dengan ukuran 16×2 karakter dan menampilkan judul program pada layar LCD.
Pada fungsi loop(), kita menunggu selama 1 detik menggunakan fungsi “delay(1000);” kemudian mengukur jarak dari sensor ultrasonik dan mengambil nilai median dari 5 pengukuran menggunakan sintaksis “unsigned int pingTime = sonar.ping_median();”.
Selanjutnya, kita menghitung tinggi badan dalam cm dengan membagi nilai pingTime dengan 58 (perbandingan antara kecepatan suara dan jarak dalam udara pada suhu ruangan).
Terakhir, kita membersihkan tampilan pada display LCD menggunakan fungsi “lcd.clear();” kemudian menampilkan hasil pengukuran pada layar LCD.
Dengan program di atas, sensor ultrasonik HC-SR04 akan mengukur jarak vertikal dari permukaan lantai ke bagian atas kepala
J. Cara kalibrasi
Untuk mengkalibrasi sensor ultrasonik HC-SR04, ada beberapa cara yang dapat dilakukan. Salah satunya adalah dengan menggunakan benda rujukan dengan ukuran yang diketahui, misalnya sebuah papan dengan ukuran yang sudah diukur sebelumnya. Berikut adalah langkah-langkah umum yang dapat dilakukan untuk mengkalibrasi sensor ultrasonik HC-SR04:
- Siapkan benda rujukan yang memiliki ukuran yang diketahui dengan baik. Misalnya sebuah papan dengan ukuran 50 cm x 50 cm.
- Tempatkan sensor ultrasonik pada posisi yang sama dengan benda rujukan. Pastikan sensor ultrasonik berada pada posisi yang sejajar dengan benda rujukan.
- Jalankan program yang sudah dibuat untuk mengukur jarak menggunakan sensor ultrasonik.
- Baca nilai jarak yang ditampilkan pada serial monitor atau pada display yang telah diprogram.
- Bandingkan nilai jarak yang ditampilkan dengan ukuran sebenarnya dari benda rujukan. Jika terdapat perbedaan, kita perlu mengkalibrasi sensor ultrasonik.
- Untuk mengkalibrasi sensor, kita dapat menambahkan atau mengurangi nilai offset pada program, tergantung pada hasil perbandingan nilai jarak yang ditampilkan dengan ukuran sebenarnya dari benda rujukan. Offset ini dapat diatur pada bagian program yang menghitung jarak menggunakan sensor ultrasonik.
- Ulangi proses pengukuran dan perbandingan nilai jarak dengan ukuran sebenarnya dari benda rujukan, dan lakukan penyesuaian offset jika masih diperlukan.
- Lakukan proses kalibrasi sampai nilai jarak yang ditampilkan sudah sesuai dengan ukuran sebenarnya dari benda rujukan.
- Setelah proses kalibrasi selesai, sensor ultrasonik sudah siap digunakan dengan akurasi yang lebih tinggi.
Perlu diingat bahwa kalibrasi sensor ultrasonik perlu dilakukan secara berkala, terutama jika sensor tersebut sering digunakan atau digunakan dalam lingkungan yang berubah-ubah. Hal ini bertujuan untuk memastikan akurasi sensor tetap terjaga.
Berikut program pengaplikasian kalibrasi menggunakan esp32:
#include <NewPing.h>
#define TRIGGER_PIN 2
#define ECHO_PIN 4
#define MAX_DISTANCE 400
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
void setup() {
Serial.begin(9600);
delay(1000);
}
void loop() {
delay(1000);
unsigned int jarak = sonar.ping_cm();
if (jarak == 0) {
Serial.println("Error: no echo received");
return;
}
//dengan kalibrasi
if(jarak>300)jarak=300;
else
jarak=jarak-(jarak*0.03);
unsigned int tinggi = 300 - jarak ;
Serial.print("Jarak: ");
Serial.print(jarak);
Serial.print(" cm, Tinggi: ");
Serial.print(tinggi);
Serial.println(" cm");
}
Sensor ultrasonik HC-SR04 merupakan salah satu sensor yang sangat berguna dalam proyek-proyek elektronik yang memerlukan pengukuran jarak yang akurat. Dalam artikel ini, telah dijelaskan mengenai spesifikasi sensor ultrasonik HC-SR04, cara menghubungkan sensor ini dengan Arduino, dan kode program Arduino yang diperlukan untuk mengoperasikan sensor ini. Dengan memahami cara kerja dan penggunaan sensor ultrasonik HC-SR04, diharapkan pembaca dapat mengaplikasikan sensor ini pada proyek-proyek elektronik yang lebih kompleks.