Selasa, 01 Desember 2015

Pendeteksi Gerakan Manusia menggunakan sensor Passive Infra Red (PIR) dan Arduino

PENDAHULUAN
PIR (Passive Infrared Receiver) merupakan sebuah sensor berbasiskan infrared. Akan tetapi, tidak seperti sensor infrared kebanyakan yang terdiri dari IR LED dan fototransistor. PIR tidak memancarkan apapun seperti IR LED. Sesuai dengan namanya ‘Passive’, sensor ini hanya merespon energi dari pancaran sinar inframerah pasif yang dimiliki oleh setiap benda yang terdeteksi olehnya. Benda yang bisa dideteksi oleh sensor ini biasanya adalah tubuh manusia.

Mengapa sensor PIR hanya bereaksi pada tubuh manusia saja? Hal ini disebabkan karena adanya IR Filter yang menyaring panjang gelombang sinar inframerah pasif. IR Filter dimodul sensor PIR ini mampu menyaring panjang gelombang sinar inframerah pasif antara 8 sampai 14 mikrometer, sehingga panjang gelombang yang dihasilkan dari tubuh manusia yang berkisar antara 9 sampai 10 mikrometer ini saja yang dapat dideteksi oleh sensor.
Jadi, ketika seseorang berjalan melewati sensor, sensor akan menangkap pancaran sinar inframerah pasif yang dipancarkan oleh tubuh manusia yang memiliki suhu yang berbeda dari lingkungan sehingga menyebabkan material pyroelectric bereaksi menghasilkan arus listrik karena adanya energi panas yang dibawa oleh sinar inframerah pasif tersebut. Kemudian sebuah sirkuit amplifier yang ada menguatkan arus tersebut yang kemudian dibandingkan oleh comparator sehingga menghasilkan output.
Ketika manusia berada di depan sensor PIR dengan kondisi diam, maka sensor PIR akan menghitung panjang gelombang yang dihasilkan oleh tubuh manusia tersebut. Panjang gelombang yang konstan ini menyebabkan energi panas yang dihasilkan dapat digambarkan hampir sama pada kondisi lingkungan disekitarnya. Ketika manusia itu melakukan gerakan, maka tubuh manusia itu akan menghasilkam pancaran sinar inframerah pasif dengan panjang gelombang yang bervariasi sehingga menghasilkan panas berbeda yang menyebabkan sensor merespon dengan cara menghasilkan arus pada material Pyroelectricnya dengan besaran yang berbeda beda. Karena besaran yang berbeda inilah comparator menghasilkan output.
Jadi sensor PIR tidak akan menghasilkan output apabila sensor ini dihadapkan dengan benda panas yang tidak memiliki panjang gelombang inframerah antar 8 sampai 14 mikrometer dan benda yang diam seperti sinar lampu yang sangat terang yang mampu menghasilkan panas, pantulan objek benda dari cermin dan suhu panas ketika musim panas.
Nahhh..sudah mengertikah kalian tentang cara kerja sensor PIR ?? jika sudah langsung saja kita bereksperimen dengan sensor PIR itu..

Disana terlihat kalo pin input PIR dimasukkan di pin 2 dan LED di pin 13. LED disini dijadikan sebagai output dimana nanti jika terdeteksi pergerakan maka LED akan menyala.
List Program
/* Pendeteksi Gerak Manusia dengan Sensor PIR
 Gunk Celulux 2011
 */

int ledPin = 12;                // pilih digital pin untuk LED
int speakerPin = 13;             // pilih digital pin untuk speaker
int inputPin = 2;               // pilih input pin untuk sensor PIR
int pirState = LOW;             // diasumsikan tidak ada gerakan terdeteksi
int val = 0;                    // variable untuk membaca status pin

void setup() {
  pinMode(ledPin, OUTPUT);      // deklarasi LED sebagai output
  pinMode(speakerPin, OUTPUT);  // deklarasi speaker sebagai output
  pinMode(inputPin, INPUT);     // deklarasi sensor sebagai input
  Serial.begin(9600);
  for(int i=0;i<10;i++)
  {
    digitalWrite(ledPin,HIGH);
    delay(500);
    digitalWrite(ledPin,LOW);
    delay(500);
  }
}

void loop(){
  val = digitalRead(inputPin);  // membaca nilai input
  if (val == HIGH) {            // cek jika input adalah HIGH
  delay(150);
    if (pirState == LOW) {
      digitalWrite(ledPin, HIGH);  // LED menyala
      Serial.println("MALING !");
      pirState = HIGH;
    }
  } else {
    if (pirState == HIGH){
      // hanya memadamkan
      digitalWrite(ledPin, LOW); // padamkan LED
      Serial.println("Aman..Kondusif !");
      // hanya memunculkan pergantian output, bukan status
      pirState = LOW;
    }
  }
}

Tidak ada komentar:

Posting Komentar