Welcome

Welcome to My Blog

Monday, 6 February 2017

SENSOR PIR (PASSIVE INFRARED) ARDUINO UNO






Sensor PIR berfungsi untuk mendeteksi pergerakan, biasanya untuk mendeteksi apakah terdapat manusia yang masuk atau keluar dari jangkauan sensor. Sensor PIR ini kecil, murah, low-power, mudah digunakan dan tahan lama.

PIR pada dasarnya terbuat dari sensor pyroelectric (yang dapat dilihat didalam kubah berwarna putih dengan kristal kotak ditengahnya) yang dapat mendeteksi inframerah.



Selain dari sensor pyroelectric, terdapat rangkaian pembantu seperti resistor dan kapasitor.



Untuk proyek sederhana dimana sensor PIR digunakan untuk mendeteksi apakah seseorang telah keluar atau masuk jangkauan, sensor PIR sangat bagus. PIR membutuhkan daya yang kecil, murah, jangkauannya luas, dan mudah digunakan. Perlu diingat sensor PIR tidak dapat mendeteksi berapa banyak orang yang berada di jangkauan atau seberapa dekat mereka dengan sensor PIR.

Cara Kerja Sensor PIR

Sensor PIR sendiri terdapat dua slot di dalamnya, setiap slot terbuat dari material yang sensitif terhadap inframerah. Lensa berbentuk kubah tidak banyak mengambil peran dalam cara kerja sensor ini dan dapat kita lihat kedua slot dapat “melihat” keluar melewati beberapa jarak (sensitifitas sensor). Ketika sensor diam, kedua slot mendeteksi inframerah dalam jumlah yang sama. Ketika tubuh hangat manusia atau makhluk hidup lewat, pertama-tama akan memotong satu bagian dari sensor PIR yang menyebabkan perbedaan positive differential antara kedua bagian. Ketika tubuh tersebut keluar dari jangkauan sensor, terjadi kebalikannya, sensor akan membuat perubahan negative differential. Perubahan pulsa inilah yang dideteksi sensor.




Menghubungkan Sensor PIR



Kebanyakan modul sensor PIR memiliki 3 pin koneksi di belakang sensor bagian atas atau bawah. Pinoutnya bisa saja berbeda setiap modul. Pada artikel kali ini, saya akan membahas sensor PIR HC-SR501. Pin pertama adalah ground, kemudian ada output, dan Vcc. Vcc biasanya dihubungkan dengan tegangan 3-5 VDC, tetapi setelah saya melakukan percobaan, lebih baik Vcc dihubungkan ke tegangan 5 VDC. Untuk menghubungkan pin-pinnya kamu membutuhkan 3 kabel female to male atau female to female.

Berikut adalah gambar pinout sensor PIR HC-SR501.



Uji Coba Sensor PIR dengan Arduino Uno dan Motor Servo



Uji coba ini bertujuan untuk mengatur putaran motor servo berdasarkan deteksi pada sensor PIR. Jika sensor PIR mendeteksi adanya manusia, maka servo akan berputar 180, dan jika sensor PIR sudah tidak mendeteksi adanya manusia, maka servo akan kembali ke posisi awal.

Program Arduino Uno :


#include <Servo.h>

Servo myServo;
int angle = 0;
int pirPin = 2;
int pirState = 0;
int val = 0;

void setup() {
  // put your setup code here, to run once:
  myServo.attach(9);
  pinMode(2, INPUT);
  Serial.begin(9600);
}

void loop() {
  // put your main code here, to run repeatedly:
  val = digitalRead(pirPin);
  if(val == HIGH){

      if (pirState == LOW) {
        // we have just turned on
        myServo.write(180);
        delay(10);
        pirState = HIGH;
      }

  }else{

      if (pirState == HIGH){
        // we have just turned of
        myServo.write(0);
        delay(10);
        pirState = LOW;
      }
  }
}



Pertama kita menambahkan header untuk menggerakkan motor servo dan membuat sebuah objek motor servo.

#include <Servo.h>
Servo myServo;

Setelah itu deklarasi variabel untuk sudut, pin yang dipakai sensor PIR, status sensor, status sensor referensi.

int angle = 0;
int pirPin = 2;
int pirState = 0;
int val = 0;

Tentukan pin yang akan dipakai motor servo dan kita atur pin sensor PIR sebagai input.

myServo.attach(9);
pinMode(2, INPUT);

Pada main loop, terdapat program untuk membaca nilai sensor PIR, kemudian hasilnya disimpan di variabel val.

val = digitalRead(pirPin);

Jika hasilnya HIGH, maka servo akan berputar 180.

if(val == HIGH){
      if (pirState == LOW) {
        // we have just turned on
        myServo.write(180);
        delay(10);
        pirState = HIGH;
      }
}

Jika hasilnya LOW, maka servo akan kembali ke posisi 0⁰.

else{
      if (pirState == HIGH){
        // we have just turned of
        myServo.write(0);
        delay(10);
        pirState = LOW;
      }
}



Berikut video percobaan sensor PIR dan motor servo menggunakan Arduino Uno.







1 comment:

  1. Hallo ingin bertanya, kalau ingin mendeteksi gerakan pada sensor PIRnya setiap 1 jam sekali (sehingga pirnya juga bergerak setiap 1 jam sekali sesuai PIR) yang diubah pada codingan itu delay yang mananya ya? terima kasih

    ReplyDelete