Overview
PIR sensors allow you to sense motion, almost always used to detect whether a human has moved in or out of the sensors range. They are small, inexpensive, low-power, easy to use and don’t wear out. For that reason they are commonly found in appliances and gadgets used in homes or businesses. They are often referred to as PIR, “Passive Infrared”, “Pyroelectric”, or “IR motion” sensors.
Parts
To build the projects described in this lesson, you will need the following parts.
1 PIR Motion Sensor
Half-size Breadboard
1
Arduino Uno R3
1
Jumper wire pack
1
How PIRs Work?
The Breadboard Layout
Most PIR modules have a 3-pin connection at the side or bottom.
Connecting PIR sensors to a microcontroller is really simple. The PIR acts as a digital output so all you need to do is listen for the pin to flip high (detected) or low (not detected).
Power the PIR with 5V and connect ground to ground. Then connect the output to a digital pin. In this example we’ll use pin 7.
To connect your PIR sensor to your arduino follow the instructions by the image above.
VCC Pin to +5V of Arduino and GND Pin to GND (Ground) of your Arduino Board. Then connect the signal pin to the digital 7 pin of Arduino.
Arduino Code
The code is very simple, and is basically just keeps track of whether the input to pin 7 is high or low. It also tracks the state of the pin, so that it prints out a message when motion has started and stopped.
- /*
- * PIR sensor tester
- */
- int ledPin = 13; // choose the pin for the LED
- int inputPin = 7; // choose the input pin (for PIR sensor)
- int pirState = LOW; // we start, assuming no motion detected
- int val = 0; // variable for reading the pin status
- void setup() {
- pinMode(ledPin, OUTPUT); // declare LED as output
- pinMode(inputPin, INPUT); // declare sensor as input
- Serial.begin(9600);
- }
- void loop(){
- val = digitalRead(inputPin); // read input value
- if (val == HIGH) { // check if the input is HIGH
- digitalWrite(ledPin, HIGH); // turn LED ON
- if (pirState == LOW) {
- // we have just turned on
- Serial.println(“Motion detected!”);
- // We only want to print on the output change, not state
- pirState = HIGH;
- }
- } else {
- digitalWrite(ledPin, LOW); // turn LED OFF
- if (pirState == HIGH){
- // we have just turned of
- Serial.println(“Motion ended!”);
- // We only want to print on the output change, not state
- pirState = LOW;
- }
- }
- }
Leave a Reply