Interfacing PIR and Arduino to Detect Human Presence

by elegocart in Circuits > Arduino

188 Views, 2 Favorites, 0 Comments

Interfacing PIR and Arduino to Detect Human Presence

pir_sensor_bb.jpg

In this project, we will employ PIR sensor and Arduino to build motion detector unit. It is basically employed in projects or products that need to detect human presence, or if a person has left or entered the area, or has approached.

About PIR sensor:

PIR sensors use low power and are cost you very low, pretty rugged, have a wide lens range, and are easy to interface with most of the microcontroller boards. One important thing to be noted is that PIR sensor won’t tell you how many people are around or how close they are to the sensor, the lens is often fixed to a certain sweep and distance.

Components Required:

- Arduino board 1

- PIR sensor 1

- Jumper wires 3

- Breadboard 1

- LED 1

You can buy these components from elegocart.

Project Setup:

pir_sensor_bb.jpg

Code:

//the time we give the sensor to calibrate (10-60 secs according to the datasheet)
int calibrationTime = 30;

//the time when the sensor outputs a low impulse long unsigned int lowIn;

//the amount of milliseconds the sensor has to be low //before we assume all motion has stopped long unsigned int pause = 5000;

boolean lockLow = true; boolean takeLowTime;

int pirPin = 3; //the digital pin connected to the PIR sensor's output int ledPin = 13;

//SETUP

void setup(){ Serial.begin(9600); pinMode(pirPin, INPUT); pinMode(ledPin, OUTPUT); digitalWrite(pirPin, LOW);

//give the sensor some time to calibrate Serial.print("calibrating sensor "); for(int i = 0; i < calibrationTime; i++){ Serial.print("."); delay(1000); } Serial.println(" done"); Serial.println("SENSOR ACTIVE"); delay(50); }

//LOOP

void loop(){

if(digitalRead(pirPin) == HIGH){ digitalWrite(ledPin, HIGH); //the led visualizes the sensors output pin state if(lockLow){ //makes sure we wait for a transition to LOW before any further output is made: lockLow = false; Serial.println("---"); Serial.print("motion detected at "); Serial.print(millis()/1000); Serial.println(" sec"); delay(50); } takeLowTime = true; }

if(digitalRead(pirPin) == LOW){ digitalWrite(ledPin, LOW); //the led visualizes the sensors output pin state

if(takeLowTime){ lowIn = millis(); //save the time of the transition from high to LOW takeLowTime = false; //make sure this is only done at the start of a LOW phase } //if the sensor is low for more than the given pause, //we assume that no more motion is going to happen if(!lockLow && millis() - lowIn > pause){ //makes sure this block of code is only executed again after //a new motion sequence has been detected lockLow = true; Serial.print("motion ended at "); //output Serial.print((millis() - pause)/1000); Serial.println(" sec"); delay(50); } } }

Source: Arduino Site

Downloads

Code Result:

PIR-op-768x428.png