Ini adalah sensor inframerah yang sangat populer karena mudah digunakan dan sangat murah. Kebanyakan perangkat pembelajaran Arduino bahkan memiliki sensor ini. Sensor ini dapat mendeteksi objek atau rintangan yang ada di depannya. Saya telah menulis banyak tutorial tentang sensor.
Cara Kerja Sensor Ini
Memiliki 2 buah LED, yang
transparan adalah LED yang memancarkan sinar infra merah. Dan LED hitam
adalah fotodioda yang dapat mendeteksi cahaya IR.
Saat dinyalakan, ia selalu memancarkan cahaya. Jadi ketika
ada benda di depan LED, maka cahaya infra merah akan memantul kembali. Dan
ketika fotodioda menerima cahaya infra merah maka akan memberikan sinyal ke
rangkaian.
Pada rangkaian ini terdapat
komparator, ketika sinyal berada diatas ambang batas maka rangkaian akan
memberikan keluaran RENDAH. Ketika tidak ada sinyal atau sinyal berada di
bawah ambang batas maka akan menghasilkan output TINGGI.
Kita dapat mengatur ambang batas atau sensitivitas atau jarak
sensor dengan memutar trimpot atau potensiometer pada rangkaian. Untuk
membuat sensor mendeteksi lebih jauh kita harus memutar ke kanan, untuk lebih
dekat Anda dapat mengatur trim-pot ke kiri. Untuk menggunakannya dengan
mikrokontroler seperti Arduino, kita cukup menghubungkan pin sensor ke board
kita.
Ini memiliki 3 pin, VCC, GND dan juga Signal.
Pengkabelan Sensor Inframerah dengan Arduino dan Eksperimen Kecil
Sensor Inframerah dengan arduino
Setelah sedikit percobaan, saya
menemukan bahwa sensor ini bergantung pada bagaimana objek memantulkan cahaya
kembali ke sensor. Benda berwarna hitam cenderung menyerap lebih banyak
daripada memantulkannya kembali, begitu pula kertas putih dan logam
mengkilap. Ini lebih reflektif, sehingga pada jarak yang lebih jauh,
sensor sudah terpantul. Jadi Anda perlu lebih berhati-hati dalam
menggunakan sensor ini. Bahan dan warna yang berbeda dapat mempengaruhi
jarak sensor.
Dan juga saat sensor ini berada
di luar ruangan, selalu menerima sinar infra merah dari matahari, sehingga
seperti selalu mendeteksi rintangan. Artinya sensor ini tidak bisa
digunakan di luar ruangan. Untuk penjelasan lebih jelasnya, Anda bisa
menonton videonya.
Menyesuaikan Jarak Rintangan
Jika ingin mendeteksi objek
lebih jauh, Anda perlu memutar trimpot pada sensor ke kanan. Bila ingin
mendeteksi pada jarak lebih dekat, Anda perlu memutar trimpot ke kiri.
Kode Sensor Inframerah dengan
Arduino
Saya memodifikasi kode contoh arduion digitalRead. Kode ini akan memberi kita nilai 0 pada monitor serial ketika ada hambatan yang terdeteksi, dan akan memberi kita nilai 1 ketika tidak ada hambatan yang terdeteksi.
Kode Sensor Inframerah Dengan
NodeMCU
Satu-satunya perbedaan antara
kode ini dan Arduino adalah nama pinnya, dalam contoh ini saya memasang sensor
ke pin D3 NodeMCU
/*
Infrared
Sensor Digital Read Example
*/
// digital pin D3 has a Infrared attached to it.
int IR = D3;
// the setup routine runs once when you press
reset:
void setup() {
//
initialize serial communication at 9600 bits per second:
Serial.begin(9600);
// make
the pushbutton's pin an input:
pinMode(IR, INPUT);
}
// the loop routine runs over and over again
forever:
void loop() {
// read
the input pin:
int
IRState = digitalRead(IR);
Serial.println(IRState);
delay(1); // delay in
between reads for stability
}
Kode ini juga mencetak 0 ketika
terdeteksi hambatan dan 1 jika tidak ada yang terdeteksi.
Nyalakan dan matikan Lampu
dengan Sensor Inframerah
Saya membuat contoh proyek
sederhana dengan sensor ini, proyek ini akan memicu relay yang memiliki lampu
sebagai beban. Jadi ketika ada sesuatu di depan sensor. Lampu akan
menyala.
Skema Lampu Pemicu Sensor
Inframerah
Lampu Pemicu Inframerah dengan
NodeMCU
/*
DigitalReadSerial
Reads a digital input on pin 2, prints the result to the Serial Monitor
This example code is in the public domain.
https://www.arduino.cc/en/Tutorial/BuiltInExamples/DigitalReadSerial
*/
// digital pin 2 has a pushbutton attached to it. Give it a name:
int IR = D3;
int relay = D4;
// the setup routine runs once when you press reset:
void setup() {
// initialize serial communication at 9600 bits per second:
Serial.begin(9600);
// make the pushbutton's pin an input:
pinMode(IR, INPUT);
pinMode(relay, OUTPUT);
digitalWrite(relay, HIGH);
}
// the loop routine runs over and over again forever:
void loop() {
// read the input pin:
int IRState = digitalRead(IR);
Serial.println(IRState);
if (IRState==0){
Serial.println("Hey move out!");
digitalWrite(relay, LOW);
} else {
digitalWrite(relay, HIGH);
}
delay(1); // delay in between reads for stability
}