8. PROYEK SENSOR JARAK (PROXIMITY) DENGAN ARDUINO
Terdapat beberapa jenis sensor jarak (proximity sensor) yang dapat digunakan pada Arduino, dimana setiap sensor memiliki spesifikasi berbeda, terutama perbedaan cara kerja dan jarak jangkauan sensor saat mendeteksi benda penghalangnya.
Beberapa contoh penerapan sensor jarak, antara lain:
- Pendeteksi barang yang berada pada ban berjalan (conveyor) di mesin produksi.
- Pendeteksi garis yang dipakai oleh robot line follower.
- Penghitung jarak atau ketinggian benda dengan cara menghitung selisih waktu antara gelombang kirim dan gelombang pantul.
Pendeteksi benda penghalang agar robot tidak menabrak benda tersebut.
Pendeteksi gerakan benda dan lain-lain
8.1 Sensor Penghalang Dengan Infrared Obstacle Avoidance
Proyek ini bertujuan untuk menghidupkan LED, sekaligus membunyikan buzzer ketika benda terdeteksi oleh sensor infrared obstacle avoidance pada jarak tertentu. Sebaliknya ketika benda penghalang telah berpindah dan tidak terdeteksi oleh sensor maka LED dan Buzzer akan mati kembali, begitu seterusnya.
Nilai ambang (threshold) jarak deteksi dapat di-justifikasi dengan cara memutar trimmer warna biru ke kiri atau ke kanan seperti tampak pada Gambar 8.1. Sebagai catatan bahwa sensor infrared obstacle avoidance memiliki jangkaun deteksi maksimal 30 cm, sehingga sensor ini tidak cocok untuk mendeteksi benda yang jaraknya lebih dari 30cm.
Cara kerja sensor adalah dengan menembakkan sinar infra merah ke benda penghalang, kemudian sinar tersebut dipantulkan balik dan akan diterima oleh photodiode, sehingga sensor ini memiliki dua LED yang berfungsi sebagai pengirim (LED sinar IR) dan sebagai penerima pantulan sinar IR (LED photodiode).
Kebutuhan Bahan
Bahan | Jumlah | Nilai | Keterangan |
LED 5MM | 1 pcs | ||
Resistor % Watt | 1 pcs | 220 Ohm | |
Buzzer 5 Volt | 1 pcs | ![]() |
|
Modul 602 | 1 pcs | ![]() |
|
Modul IR Obstacle Avoidance | 1 pcs | ![]() |
Ketika sensor bernilai LOW, berarti ada penghalang di depannya memicu buzzer dan LED untuk hidup, serta memberi pesan teks kef ila lynarg LCD. Sebaliknya ketika sensor bernilai HIGH, berarti tidak ada penghalang di depannya.
Kode Program
#include <Wire.h>
#include <LiquidCrystal_I2C.h> #define pinProximity 2 // Pin Sensor #define pinLED 3 // Pin LED #define pinBuzzer 4// Pin Buzzer int isObstacle; LiquidCrystal_I2C lcd(0x27,16, 2); // LCD 16×2 karakter void setup() { Serial.begin(9600); pinMode(pinLED, OUTPUT); pinMode(pinBuzzer, OUTPUT); // pin LED arduiono sebagai output // pin Speaker Arduino sebagai output pinMode(pinProximity, INPUT); // pin Sensor Arduino sebagai input // inisialisasi data digitalwrite(pinLED, LOW); digitalwrite(pinBuzzer, LOW); digitalwrite(pinProximity, HIGH); lcd.init(); // Inisialisasi LCD lcd.backlight(); // Menghidupkan backlight { void loop() { // Pembacaan data sensor proximity isobstacle = digitalRead(pinProximity); if (isobstacle == HIGH) { // tidak ada halangan digitalWrite(pinLED, LOW); // LED mati digitalwrite(pinBuzzer, LOW); // Buzzer diam // Cetak ke Serial Monitor Serial.println(“Sensor tidak mendeteksi adanya benda penghalang”); // Cetak ke LCD I2C lcd.clear(); lcd. setCursor(0,0); lcd.print(“Pantau …”); lcd.setCursor(θ, 1); lcd.print(“Aman clear”); } else if (isobstacle == LOW) { // ditemui halangan digitalwrite(pinLED, HIGH); // LED hidup digitalwrite(pinBuzzer,HIGH);// Buzzer hidup // Cetak ke Serial Monitor Serial,println(“Sensor mendeteksi adanya benda penghalang”); // Cetak ke LCD I2C lcd.clear(); lcd.setCursor(θ, θ); Icd.print(“Pantau …”); lcd.setCursor(0,1); lcd.print(“Awas terhalang”); } delay(500); } |
Untuk hasil akhir proyek tampak pada Gambar 8.7
Gambar 8.7 Sensor Saat Dikenai Penghalang
8.2 Menghitung Jarak Dengan Sensor Ultrasonik HC-SR04
Sensor ultrasonic berkerja dengan cara memancarkan gelombang ultrasonic pada frekwensi 40.000 Hertz yang merambat di udara. Jika ditemukan adanya obyek penghalang dijalurnya, maka gelombang tersebut akan kembali ke modul sensor ultrasonic.
Jarak sensor dan obyek penghalang dapat dihitung berdasarkan waktu tempuh dan kecepatan suara. Misalnya, jika obyek berjarak 10cm dari sensor kecepatan suara adalah 340m/s atau 0/034cm/Bs, maka gelombang suara akan menempuh sekitar 294 (mikrodetik). Namun apa yang akan diperoleh dart pin Echo adalah dua kali lipat jumlahnya karena gelombang suara melaju ke depan dan memantul ke belakang. Jadi untuk mendapatkan jarak dalam satuan cm kita perlu mengalikan nilai waktu(t) perjaianan yang diterima dari pin echo sebesar 0,034 dan membaginya dengan 2. Perhatikan Gambar 8.8
Proyek berikut ini cukup sederhana yaitu menghitung jarak antara sensor ultrasonic HC-SR04 dengan benda yang akan ditembak oleh gelombang ultrasonic. Setelah melalui proses perhitungan jarak, kemudian hasil jarak yang diperoleh akan ditampilkan pada LCD.
Kebutuhan Bahan
Bahan | Jumjah | Nilai | Keterangan |
Modul LCD1602 | 1 pcs | ![]() |
|
Modul Ultrasonic HC-SR04 | 1 pcs | ![]() |
|
Project membutuhkan library LiquidCrystal_I2C.h untuk modul LCD I2C. Adapun cara instalasi library dapat dilihat pada bab sebelumnya.
Kode Program
#include <Wire.h>
#include <LiquidCrystal_I2C.h> const int pinTrigger = 9; // pin trigger HC-SR04 const int pinEcho=8; // pin echo HC-SR04 long duration; int distanceCm, distanceInch; // Atur alamat LC pada 0x27 untuk tampilan LCD 16 karakter 2 baris LiquidCrystal_I2C lcd(0x27, 16, 2); void setup() { lcd.init(); // Inisialisasi LCD lcd.backlight(); // Menghidupkan backlight lcd.setCursor(ø,0); lcd.print(“Menghitung Jarak”); lcd.setCursor(0,1); lcd.print(“Dengan Ultrasonic “); pinMode(pinTrigger, oUTPUT); // set pin trigger sebagai output pinMode(pinEcho, INPUT); // set pin echo sebagai input } void loop() { // Membersihkan pin pinTrigger selama 2 microdetik digitalwrite(pinTrigger, LOW); delayMicroseconds(2); // Set pinTrigger menjadi HIGH selama 10 microdetik digitalwrite(pinTrigger, HIGH); delayMicroseconds(10); digitalwrite(pinTrigger, LOW); // Membaca pinEcho, mengembalikan waktu perjalanan gelombang suara dalam mikrodetik duration = pulseIn(pinEcho, HIGH); distanceCm=duration *0.034 / 2; // Jarak dalam CM distanceInch = duration * 0.0133 / 2; // Jarak dalam INCH lcd.clear(); lcd.setCursor(0,0); lcd.print(“Jarak:“); lcd.print(String(distanceCm)); lcd.print(“ cm”); lcd.setCursor(0,1); lcd.print(“Jarak: “); lcd.print(String(distanceInch)); lcd.print(“ inch”); delay(1000); //tunda 1 detik agar LCD tidak terlalu flicker } |
Adapun hasil akhirnya tampak seperti pada gambar 8.8.
Untuk pengujian hasil pengukuran, silahkan pindahkan obyek penghafan dengan jarak berbeda-beda, maka akan diperoleh jarak berbeda di layar
8.3 Mendeteksi Panas Obyek Dengan Sensor PIR HC-SR501
Modul PIR (passive infrared) adalah modul sensor untuk mendeteksi panas tubuh manusia/hewan. Inti dari module PIR adalah sensor Pyroelectric Yang akan membangkitkan energi saat terkena panas seperti tampak pada Gambar
8.10.
Ketika tubuh manusia atau hewan berada di kisaran sensor, maka sensor akan mendeteksi adanya gerakan karena tubuh manusia atau hewan memancarkan energi panas dalam bentuk radiasi inframerah. Dari situlah nama sensor itu berasal, sebuah sensor Pasif Infra-Red. Istilah “pasif” berarti bahwa sensor tidak menggunakan energi apa pun untuk mendeteksi tujuan, ia hanya bekerja dengan mendeteksi energi yang dilepaskan oleh objek Iain.
Gambar 8.10 Sensor PIR Pyroelectric. (Sumber: howtomechatronics.com)
Modul PIR umumnya dilengkapi dengan penutup yang dirancang khusus, dikenal sebagai lensa Fresnel, bertujuan untuk memfokuskan sinyal infra merah ke sensor pyroelectric seperti tampak pada Gambar 8.12.
Modul PIR mempunyai tiga Pin, yaitu pin Ground, pin VCC sebagai jalur cat.u daya dan pin output yang akan memberi logika HIGH ketika obyek terdetek51. Modul PIR juga memiliki dua potensiometer yang berguna untuk mengatu.r sensitivitas sensor dan mengatur waktu tunda agar sinyal tetap pada kondi51 HIGH saat objek terdeteksi yang bisa disesuaikan mulai dari detik hingga menit. Perhatikan lebih seksama penjelasan pin pada Gambar 8.13.
Gambar 8.11 PIR Tanpa Penutup Gambar 8.12 PIR Dengan Lensa Fresnel
(Sumber: howtomechatronics.com) (Sumber: howtomechatronics.com)
Skenario proyek adalah ketika sensor PIR HC-SR501 mendeteksi adanya panas tubuh maka akan menyebabkan lampu bertegangan 220volt menyala secara otomatisı begitu pula sebaliknya jika sensor PIR tidak mendeteksi panas maka lampu akan mati. Dişini digunakan relay sebagai saklar elektrik untuk menghidupkan dan mematikan lampu 220volt. Relay akan aktif ketika berlogika HİGH dan sebaliknya akan mati ketika berlogika LOW. Waktu tunda relay aktif dapat diatur dari potensiometer delay time pada sensor PIR.
Catatan: Percobaan ini SANGAT BERBAHAYA!!! karena rangkaian melibatkan tegangan 220volt sebagai sumber tegangan lampu
Kebutuhan Bahan
Bahan | Jumlah | Nilai | Keterangan |
Modul Relay | 1 pcs | Relay 1 channel, 5 volt | ![]() |
Modul Sensor PIR HC-SR501 | 1 pcs | ![]() |
|
Lampu LED 220 Volt | 1 pcs | ![]() |
|
Stop kontak, kabel dan soket lampu | 1 pcs | ![]() |
Diagram Sketch
Kode Program
#include <Wire.h>
#include <LiquidCrystal_I2C.h> int pinPIRSensor = 2; int pinRelay=3; int statusPanas = LOW; int nilaiSensor =0; // Atur alamat LC pada 0x27 untuk tampilan LCD 16 karakter 2 baris LiquidCrystal_I2C lcd(0x27, 16, 2); void setup() { pinMode(pinPIRSensor, INPUT); // set pin sensor sebagai input pinMode(pinRelay, OUTPUT); // set pin relay sebagai output lcd.init(); // Inisialisasi LCD lcd.backlight(); // Menghidupkan backlight lcd.setCursor(0, 0); lcd.print(“Deteksi Obyek”); lcd.setCursor(ø,1); lcd.print(“Sensor PIR “); delay(3000); } void loop() { // Membaca nilai pin sensor nilaiSensor = digitalRead(pinPIRSensor); // Sensor mendeteksi panas if (nilaiSensor == HIGH) { lcd.clear(); Icd.setCursor(0,0); lcd.print(“Obyek Terdeteksi”); lcd.setCursor(0, 1); Icd.print(“Lampu Hidup”); digitalwrite(pinRelay,HIGH);// Relay aktif untuk menghidupkan lampu } else { lcd.clear(); Icd.setCursor(0, 0); Icd,print(“AUTO OFF”); Icd.setCursor(ø, 1); Icd.print(“Lampu Mati”); // Sensor tidak mendeteksi panas digitalwrite(pinRelay, LOW); // Relay tidak aktif dan lampu mati } delay(1000); } |
Dari hasil pengujian, ternyata sensor PIR mampu mendektesi panas obyek sampai 3-4 meten Karena modul PIR bersifat auto-off (auto LOW) maka sebaiknya sesuaikan waktu tunda di kondisi HIGH sesuai kebutuhan Anda seperti yang telah dijelaskan dibagian awal. Gambar 8.13 adalah ilustrasi hasil projeknya.