How to interface HC SR501 PIR sensor with Raspberry pi

rjrobotics007rjrobotics007 wrote 06/23/2020 at 09:03 • 6 min read • Like

All living beings radiate energy to the surroundings in the form of infrared radiations which are invisible to human eyes. A PIR (Passive infrared) sensor can be used to detect these passive radiations. When an object (human or animal) emitting infrared radiations passes through the field of view of the sensor, it detects the change in temperature and therefore can be used to detect motion.

HC-SR501 uses differential detection with two pyroelectric infrared sensors. By taking difference of the values, the average temperature from the field of view of sensor is removed and thereby reducing false positives.

Interfacing HC-SR501 with Raspberry Pi is easy because the output of sensor is Pi friendly ie. 3.3V and it can be powered from the 5V rail of  Pi.

You will require following components:

  1. A breadboard (we are using a 400 points breadboard)
  2. an HC-SR501 PIR motion sensor
  3. Dupont jumper wires
  4. A 40 pin GPIO cable (optional)

The PIR sensor, HC-SR501 consist of 3 pins:

Vcc – 4.5V to 20V, Input power

OUTPUT – TTL output of sensor 0V, 3.3V

GND – Ground

HC-SR501 PIR bottom view:

Jumper set:

 The jumper is used to control the trigger mode. When the jumper cap is at the “L” position, the mode is set up as “unrepeated trigger mode”, which means when the module is outputting an HIGH voltage because of human motion it will not be triggered again even if another human motion is detected. When the jumper cap is at the “H” position, the module is setup as “repeated trigger mode”, which means the delaying time will be recalculated when a second human motion is detected during its delaying time.

Sensitivity adjust: to adjust the detection range

Time Delay Adjust

Working of PIR sensor HC-SR501

The module has a rectangular window with two sub probes 1 and 2 located at two ends of the rectangle. When a body emitting infrared radiation moves from side to side, the time for each probe for detection varies. Larger the time difference, more sensitive the device. It also uses a Fresnel lens to improve sensing aperture and filter in infrared waves.


  1. For adjusting the detection delay (0.3 seconds to 600 seconds): Turn the potentiometer clockwise to increase and anticlockwise to decrease
  2. For adjusting the sensing distance (3 meters to 7 meters): Turn the potentiometer clockwise to increase and anticlockwise to decrease

Circuit diagram:

VccOutputGround are connected to 2 (5V), 26 (GPIO) and 6 (GND) pins of Pi respectively.

Python Program:

Copy and paste the following code into your Raspberry Pi

import RPi.GPIO as GPIO                       #Import GPIO library

import time                                   #Import time library

GPIO.setmode(GPIO.BOARD)                      #Set GPIO pin numbering

pir = 26                                      #Associate pin 26 to pir

GPIO.setup(pir, GPIO.IN)                      #Set pin as GPIO in 

print "Waiting for sensor to settle"

time.sleep(2)                   #Waiting 2 seconds for the sensor to initiate

print "Detecting motion"

while True:

if GPIO.input(pir):             #Check whether pir is HIGH

print "Motion Detected!"

time.sleep(2)              #D1- Delay to avoid multiple detection

time.sleep(0.1)  #While loop delay should be less than detection delay


Go Here for HC SR501 PIR sensor

Click Here to explore Raspberry Pi

This guide has been written in reference to the blog published by