Arduino Motion Detector using PIR Sensor

Arduino

ByAswinth Raj 14

Arduino Motion Sensor/Detector Project using PIR Sensor

Detecting motions or movements has always been important in most projects. With the help of the PIR Sensor it has become very easy to detect human/animal movements. In this project we will learn how we can interface a PIR Sensor with a microcontroller like Arduino. We will interface an Arduino with PIR module and blink a LED and beep a Buzzer whenever a movement is detected. The following components will be needed to build this project.

 

Materials Required:

  1. PIR Sensor Module
  2. Arduino UNO (any version)
  3. LED
  4. Buzzer
  5. Breadboard
  6. Connecting Wires
  7. 330 ohm resistor

 

PIR sensor:  

The PIR sensor stands for Passive Infrared sensor. It is a low cost sensor which can detect the presence of Human beings or animals. There are two important materials present in the sensor one is the pyroelectric crystal which can detect the heat signatures from a living organism (humans/animals)   and the other is a Fresnel lenses which can widen the range of the sensor. Also the PIR sensor modules provide us some options to adjust the working of the sensor as shown in below image.

PIR Sensor Pinout

PIR Sensor from Inside

The two potentiometers (orange color) are used to control the sensitivity and trigger on time of the sensor. Basically the Dout pin of the sensor is present in between the Vcc and Gnd pins. The module works on 3.3V but can be powered with 5V as well. On the top left corner it also has a trigger pin setup which can be used to make the module work in two different modes. One is the “H” mode and the other is the “I” mode.

 

In “H” mode the output pin Dout will go high (3.3V) when a person is detected within range and goes low after a particular time (time is set by potentiometer). In this mode the output pin will go high irrespective of whether the person is still present inside the range or has left the area. We are using our module in “H” mode in our project.

 

In “I” mode the output pin Dout will go high (3.3V) when  a person is detected within range and will stay high as long as he/she stays within the limit of the Sensors range. Once the person has left the area the pin will go low after the particular time which can be set using the potentiometer.

 

Note: The position of potentiometers or pins may vary based on your PIR sensor vendor. Follow the Silk screen to determine you pinouts

 

Circuit Diagram and Explanation:

The circuit Diagram for arduino motion detector project by interfacing Arduino with PIR module and blinking an LED/Buzzer is shown in the below image.

Arduino Motion Sensor Circuit Diagram

We have powered the PIR sensor using he 5V Rail of the Arduino. The output pin of the PIR Sensor is connected to the 2nd digital pin of Arduino. This pin will be the INPUT pin for Arduino. Then the 3rd pin of Arduino is connected to the LED and Buzzer. This pin will act as the output pin of the Arduino. We will program the Arduino to trigger an Output on 3rd pin if an Input has been detected at 2nd pin. The complete Program is explained below.

 

Programming the Arduino:

The program for Arduino is pretty simple and straight forward. To connect Arduino PIR Sensor, we have to assign the pin number 2 as input and pin number 3 as output. Then we have to produce a discontinuous trigger whenever the pin 2 goes high. Each line is explained below.

In the void setup function shown below, we have to declare that the pin 2 connected to PIR output will be used as input and the pin 3 connected to LED/Buzzer will be used as input.

void setup() {

  pinMode(2, INPUT); //Pin 2 as INPUT

  pinMode(3, OUTPUT); //PIN 3 as OUTPUT

}

 

Then we proceed to the loop() function. As we know the code in here gets executed as long as the MCU is powered on. So we always check if the Pin 2 has gone high by using the below line inside the loop() function.

 

if (digitalRead(2) == HIGH)

 

If we find that the particular pin has gone high, it means that the PIR module has be triggered. So, now we has make our output pin (pin 3) to go high. We turn this pin on and off with a delay of 100 milli second so that we can attain the flashing or buzzing output. The code to do the same is shown below.

 

void setup() {

  pinMode(2, INPUT); //Pin 2 as INPUT

  pinMode(3, OUTPUT); //PIN 3 as OUTPUT

}


void loop() {

  if (digitalRead(2) == HIGH) // check if PIR is triggered.

  {

  digitalWrite(3, HIGH);   // turn the LED/Buzz ON

  delay(100);                       // wait for 100 msecond

  digitalWrite(3, LOW);   // turn the LED/Buzz OFF

  delay(100);                       // wait for 100 msecond

  }

}

 

Working:

The circuit and program for this arduino motion detector project is already discussed above. Now, you can build this circuit on a breadboard by following the schematics given above and upload the program which could found at the end of this tutorial. Once your connections are done your set-up should look like something shown below.

Arduino Motion Sensor Project

Now, power on the Arduino and wait for about 50-60 seconds for your PIR sensor to calibrate. Do not be frustrated by the output that you get during this period. After that, try moving in front of the PIR sensor and you LED/Buzzer should be triggered as shown in the video below.

 

The beeping/flashing should stop after some time; you can now toy around the output by varying the potentiometer to change the sensitivity or the low time of the module. Hope you understood the project and got it working, if you have any trouble in getting this thing work, you can search out through the comment section or on our forums. 

Code

void setup() {
  pinMode(2, INPUT); //Pin 2 as INPUT
  pinMode(3, OUTPUT); //PIN 3 as OUTPUT
}

void loop() {
  if (digitalRead(2) == HIGH)
  {
  digitalWrite(3, HIGH);   // turn the LED/Buzz ON
  delay(100);                       // wait for 100 msecond 
  digitalWrite(3, LOW);   // turn the LED/Buzz OFF
  delay(100);                       // wait for 100 msecond 
  }
}

Video

Comments

  • Josh 's picture
    Josh
    Sep 26, 2017

    I just wanted to thank you for spending the time to make this tutorial !! This worked for me after only a couple hiccups of my own, you did a great job

  • sadikshya poudel's picture
    sadikshya poudel
    Oct 15, 2017

    i have designed the circuit as the circuit diagram you have given, uploaded the code mentioned above but the buzzer makes beep sound continuously after some interval...it is not responding to the motion...can yo please tell me what's missing..i would be very grateful if you could help me..please.

  • Aswinth Raj's picture
    Aswinth Raj
    Oct 16, 2017

    The problem should be with your potentiometers (yellow color ones) on your PIR sensor. Just make sure your connections are correct, then vary you sensitivity potentiometer to make it stop beeping. Also note that you have to walk away from the sensor to check if the beeping is stopped after every time you modify the value of POT

  • Abhishek Nayak's picture
    Abhishek Nayak
    Jan 09, 2018

    Can we use it to sense the distance at which the PIR sensor is detecting an obstacle?

  • divya katakam's picture
    divya katakam
    Apr 10, 2018

    hi this is divya i have trouble write code for counting number of people for a window of 15 mins using pir sensor . can any one help me in doing this programing part pleasre

  • Afiq's picture
    Afiq
    May 01, 2018

    Hi, I just want to ask about how u manage to make the buzzer and the LED activate at the same time in the code sketch? Is it bcuz of the resistor? Also you're using the resistor which has 330 ohms to prevent the LED from burning out, would one with 300 ohms, which I'm using, suffice?

    Best regards,

  • AISHA's picture
    AISHA
    May 03, 2018

    Yes Afiq, the source current of Arduino is enough to drive a buzzer and LED to gather. The resistor is used for current limiting. You can also use a 300 ohm resistor it would work just fine 

  • Afiq's picture
    Afiq
    May 19, 2018

    Ok thnx. One more thing, the sketch given only shows the code to make one beep. Did he continuously wrote a lot of them or is there something I'm missing.

  • Afiq's picture
    Afiq
    May 01, 2018

    Oh one more thing are you using a passive or an active buzzer?

  • Jeremy's picture
    Jeremy
    Jun 14, 2018

    your project is awesome but how can I add a button to activate it and disactivate it?

  • AISHA's picture
    AISHA
    Jun 18, 2018

    Just add a power switch as simple as that. Also you should be save to save power this way 

  • muhammad salisu's picture
    muhammad salisu
    Jul 29, 2018

    hello i did a project on automatic door opening system using arduino and pir the code i wrote is working but i want a situation where by wen the door is closing and the pir sensed another movement it should stop at that instance and opening again please some one should help.

  • muhammad salisu's picture
    muhammad salisu
    Jul 29, 2018

    hello my project was in movement sensed automatic door oprning system using arduino and pir sensor, the code i wrote is working but i want to make the door or code to open the door again in the process of closing if it detect any movement again. please someone should help please..

Log in or register to post Comment