Pendeteksi Penghalang dengan Sensor Ultrasonik, Buzzer dan Arduino

Kali ini percobaan yang dilakukan adalah membuat perangkat yang berbunyi jika di depan perangkat ada benda dengan jarak 5 cm atau lebih dekat dari itu.

Bahan yang digunakan :

  1. Arduino Uno R3
  2. Sensor ultrasonik SC-HR04
  3. Buzzer
  4. Resistor 330 Ohm
  5. Breadboard
  6. Jumper secukupnya

Buzzer

Buzzer adalah komponen elektronika yang berguna untuk menghasilkan bunyi beep. Mempunyai 2 kaki yang tidak mempunyai polaritas. Jadi saat dipasang, tidak usah khawatir terbalik atau tidak. Buzzer bisa berbunyi jika dialirkan gelombang listrik dengan frekuensi tertentu. Jadi buzzer ini semacam speaker gitu. Sebaiknya frekuensi yang dialirkan agak tinggi untuk menghasilkan suara yang dapat terdengar dengan baik.

Jika digunakan pada Arduino, sudah tersedia fungsi yang dapat digunakan untuk membunyikan buzzer.

Image

Gambar 1. Rangkaian uji buzzer.

Kode untuk menguji buzzer.

int buzzerPin = 11;

void setup() {
// put your setup code here, to run once:
pinMode(buzzerPin, OUTPUT);
}

void loop() {
// put your main code here, to run repeatedly:
tone(buzzerPin, 2000);
delay(1000);
noTone(buzzerPin);
delay(1000);
}

Fungsi yang digunakan untuk membunyikan buzzer adalah fungsi tone(). Parameter pertama adalah pin output untuk buzzer dan parameter kedua adalah frekuensi bunyi yang akan diberikan ke buzzer menggunakan satuan Hz (Hertz). Pada contoh kode di atas, saya berikan frekuensi sebesar 2 kHz atau 2000 Hz. Untuk menghentikan suara buzzer, gunakan fungsi noTone(). Parameter yang dimasukkan adalah pin output ke buzzer. Ketika diupload ke mikrokontrol dan dijalankan, maka buzzer akan berbunyi selama 1 detik, kemudian berhenti berbunyi selama 1 detik, begitulah seterusnya.

Sensor Ultrasonik

Sensor ultrasonik adalah sensor yang menggunakan gelombang ultrasonik untuk mengetahui jarak benda yang berada di hadapan sensor. Ya, yang digunakan adalah gelombang ultrasonik, yaitu gelombang suara yang berada di atas frekuensi suara yang dapat didengar manusia, yaitu di atas 20 kHz. Tentunya suara ini tidak bisa didengar oleh manusia. Jadi, ketika digunakan, tidak menimbulkan suara apapun. Suara ultrasonik dapat didengar oleh kelelawar, paus dan lumba-lumba. Gelombang ultrasonik ini juga digunakan pada kapal laut untuk mengetahui kedalaman air laut dengan cara menembakkan gelombang ultrasonik ke dasar laut. Sensor ultrasonik pada tulisan kali ini hanya berskala kecil untuk mengetahui jarak benda yang berada di depan sensor.

Prinsipnya adalah sensor mengeluarkan gelombang suara ultrasonik, kemudian gelombang tersebut mengenai permukan benda yang berada di depan sensor dan terpantul. Gelombang pantulan ini kemudian diterima kembali oleh sensor. Lamanya waktu antara pemancaran dan penerimaan gelombang ultrasonik ini kemudian dapat digunakan untuk mengukur jarak sensor dengan benda yang berada di depan.

Image

Gambar 2. Rangkaian kombinasi sensor ultrasonik dan buzzer.

Image

Gambar 3. Percobaan langsung menggunakan breadboard.

 

Kode yang digunakan untuk menguji sensor ultrasonik adalah :

int echoPin = 12;
int trigPin = 13;

void setup() {
// put your setup code here, to run once:
pinMode(echoPin, INPUT);
pinMode(trigPin, OUTPUT);
Serial.begin(9600);
}

void loop() {
// put your main code here, to run repeatedly:
long duration, distance;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(5);
digitalWrite(trigPin, LOW);

duration = pulseIn(echoPin, HIGH);
distance = duration / 29 / 2;

Serial.println("Jarak = " + distance + " cm");
}

Mula-mula pin trigger sensor ultrasonik diberikan sinyal HIGH untuk memancarkan gelombang ultrasonik, kemudian diberikan sinyal LOW untuk menerima pantulan gelombang. Fungsi yang digunakan adalah fungsi digitalWrite(). Parameter pertama adalah pin yang terhubung dengan pin Trigger pada sensor ultrasonik. Parameter kedua adalah bentuk sinyal yang diberikan ke trigger, yaitu HIGH atau LOW. Delai sebesar 2 ms dan 5 ms ini saya ikuti dari website Arduino. Fungsi yang digunakan pun adalah fungsi delayMicroseconds(), yang parameter yang dimasukkan sama saja dengan fungsi delay(). Di forum sih disebutkan bahwa fungsi delayMicroseconds() lebih akurat dibanding fungsi delay(). Sensor ultrasonik membutuhkan hitungan waktu yang lebih akurat untuk mendapat pengukuran jarak yang lebih akurat.

Untuk membaca waktu perjalanan gelombang suara dari sensor, gunakan fungsi pulseIn(). Parameter pertama adalah pin yang terhubung ke pin Echo sensor ultrasonik. Parameter kedua diisi dengan sinyal HIGH.

Menurut tulisan di salah satu tulisan di halaman web Arduino disebutkan bahwa kecepatan gelombang suara adalah 340 m/s atau 29 ms per cm. Jadinya durasi di bagi dengan 29. Kenapa dibagi 2? Itu karena gelombang ultrasonik pada sensor menjalani 2 perjalanan, yaitu perjalanan saat dipancarkan dan perjalanan saat kembali ke sensor.

Jangan lupa mengaktifkan Serial pada mikrokontrol dengan menggunakan fungsi Serial.begin() di dalam fungsi setup(). Berikan baud rate sebesar 9600. Gunakan fungsi Serial.println() untuk menampilkan output pada Console Monitor. Untuk menampilkan Console Monitor, tekan Ctrl+Shift+M pada keyboard. Saat diupload ke mikrokontrol dan berjalan, maka pada Console Monitor akan ditampilkan jarak sensor dengan penghalang. Coba letakkan benda di depan sensor dengan berbagai jarak.

Kombinasi Sensor Ultrasonik dan Buzzer

Sekarang, dengan menggunakan rangkaian pada gambar 2, kode untuk menjalankan penggunaan sensor ultrasonik dan buzzer dikombinasikan untuk membunyikan buzzer ketika sensor ultrasonik mendeteksi penghalang yang berada pada jarak 5 cm atau lebih dekat dari itu.

int buzzerPin = 11;
int echoPin = 12;
int trigPin = 13;

void setup() {
// put your setup code here, to run once:
pinMode(buzzerPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(trigPin, OUTPUT);
}

void loop() {
// put your main code here, to run repeatedly:
long duration, distance;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(5);
digitalWrite(trigPin, LOW);

duration = pulseIn(echoPin, HIGH);
distance = duration / 29 / 2;

delay(500);
if (distance >= 1 && distance <= 5) {
tone(buzzerPin, 2000);
} else {
noTone(buzzerPin);
}
}

Jika percobaan sudah berhasil dan paham cara kerja sensor ultrasonik, maka tidak menutup kemungkinan akan mudah ke project yang lebih rumit lagi yang menggunakan sensor semacam ini. Robot pemadam api seperti yang sering dilombakan pada KRI (Kontes Robot Internasional), salah satunya menggunakan sensor ini. Sekian tulisan saya kali ini, semoga dapat bermanfaat. Ikuti terus update percobaan saya di lab mini Introvesia.

Referensi

  1. https://www.arduino.cc/en/Tutorial/Ping
  2. http://forum.arduino.cc/index.php?topic=46452.0
comments powered by Disqus