A PIR (Passive Infrared) Motion Sensor detects changes in infrared radiation, which usually means it senses movement of warm objects like people or animals.
Click to reveal answer
beginner
How do you connect a PIR sensor to a Raspberry Pi?
You connect the PIR sensor's power pin to 5V or 3.3V, ground pin to GND, and the output pin to a GPIO pin on the Raspberry Pi to read motion signals.
Click to reveal answer
beginner
What Python library is commonly used to read GPIO pins on a Raspberry Pi?
The RPi.GPIO library is commonly used to control and read GPIO pins on a Raspberry Pi in Python programs.
Click to reveal answer
intermediate
What is the basic Python code structure to detect motion using a PIR sensor?
Set up the GPIO pin as input, then use a loop to check if the pin reads HIGH (motion detected) or LOW (no motion), and respond accordingly.
Click to reveal answer
intermediate
Why is it important to add a delay or debounce when reading PIR sensor signals?
Adding a delay helps avoid false triggers caused by sensor noise or rapid changes, ensuring the program reacts only to real motion events.
Click to reveal answer
What type of signal does a PIR sensor output when motion is detected?
ADigital HIGH signal
BAnalog voltage
CPWM signal
DNo signal
✗ Incorrect
A PIR sensor outputs a digital HIGH signal on its output pin when it detects motion.
Which Raspberry Pi pin type should you use to read a PIR sensor output?
AGPIO output pin
BGPIO input pin
CPower pin
DGround pin
✗ Incorrect
The PIR sensor output connects to a GPIO input pin to read motion signals.
What Python command sets a GPIO pin as input using RPi.GPIO?
AGPIO.output(pin, True)
BGPIO.setup(pin, GPIO.OUT)
CGPIO.input(pin)
DGPIO.setup(pin, GPIO.IN)
✗ Incorrect
GPIO.setup(pin, GPIO.IN) configures the pin as an input to read signals.
Why should you use a try-except or cleanup in a PIR sensor Python script?
ATo safely release GPIO resources on exit
BTo speed up the sensor
CTo increase sensor sensitivity
DTo change sensor voltage
✗ Incorrect
Using try-except or GPIO.cleanup() ensures GPIO pins are properly reset when the program ends.
What does a PIR sensor NOT detect?
AMotion of warm objects
BChanges in infrared radiation
CSound waves
DPresence of people
✗ Incorrect
PIR sensors do not detect sound waves; they detect infrared radiation changes.
Explain how a PIR sensor works with a Raspberry Pi to detect motion.
Think about how the sensor senses heat changes and how the Pi reads that signal.
You got /4 concepts.
Describe the steps to write a Python program that alerts you when motion is detected by a PIR sensor.
Start from setting up the pin to cleaning up after the program ends.
You got /5 concepts.
Practice
(1/5)
1.
What does a PIR MotionSensor detect when connected to a Raspberry Pi?
easy
A. Temperature changes in the room
B. Sound levels around the sensor
C. Movement by sensing infrared changes
D. Light intensity variations
Solution
Step 1: Understand PIR sensor function
A PIR sensor detects motion by sensing changes in infrared radiation emitted by objects.
Step 2: Compare options with sensor purpose
Only Movement by sensing infrared changes matches the PIR sensor's function of detecting movement via infrared changes.
Final Answer:
Movement by sensing infrared changes -> Option C
Quick Check:
PIR sensor = Movement detection [OK]
Hint: PIR sensors detect motion, not temperature or sound [OK]
Common Mistakes:
Confusing PIR with temperature sensors
Thinking PIR detects sound or light
Assuming PIR measures humidity
2.
Which of the following is the correct way to set up a GPIO pin as input for a PIR sensor in Python using RPi.GPIO?
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
# What goes here?
easy
A. GPIO.setup(17, GPIO.IN)
B. GPIO.setup(17, GPIO.OUT)
C. GPIO.input(17)
D. GPIO.output(17, GPIO.HIGH)
Solution
Step 1: Identify pin mode for PIR sensor input
PIR sensor output should be read as input on the Raspberry Pi GPIO pin.
Step 2: Match correct GPIO setup syntax
GPIO.setup(pin_number, GPIO.IN) sets the pin as input, which is needed to read sensor data.
Final Answer:
GPIO.setup(17, GPIO.IN) -> Option A
Quick Check:
GPIO input setup = GPIO.setup(pin, GPIO.IN) [OK]
Hint: Use GPIO.IN to read sensor signals, not GPIO.OUT [OK]
Common Mistakes:
Using GPIO.OUT instead of GPIO.IN
Calling GPIO.input() instead of GPIO.setup() to configure pin
Trying to write output to sensor pin
3.
What will be the output of this Python code snippet when the PIR sensor detects motion?
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
PIR_PIN = 4
GPIO.setup(PIR_PIN, GPIO.IN)
if GPIO.input(PIR_PIN):
print("Motion Detected")
else:
print("No Motion")
medium
A. Motion Detected
B. No Motion
C. SyntaxError
D. GPIO pin not set
Solution
Step 1: Understand GPIO.input behavior
GPIO.input(PIR_PIN) returns True (1) if motion is detected, False (0) otherwise.
Step 2: Analyze if condition with PIR sensor detecting motion
If motion is detected, GPIO.input returns True, so the code prints "Motion Detected".
Final Answer:
Motion Detected -> Option A
Quick Check:
GPIO.input True = Motion Detected [OK]
Hint: GPIO.input True means motion detected, prints accordingly [OK]
Common Mistakes:
Assuming GPIO.input returns string
Confusing True/False logic in if statement
Not setting up GPIO pin before reading
4.
Identify the error in this PIR sensor code snippet and choose the fix:
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
PIR_PIN = 18
GPIO.setup(PIR_PIN, GPIO.IN)
try:
while True:
if GPIO.input(PIR_PIN):
print("Motion!")
time.sleep(1)
except KeyboardInterrupt:
print("Exit")
medium
A. Use GPIO.input() outside the loop
B. Change GPIO.setup to GPIO.OUT
C. Remove time.sleep(1)
D. Add GPIO.cleanup() in except block
Solution
Step 1: Check for GPIO cleanup after program ends
GPIO pins should be cleaned up to reset their state when the program exits.
Step 2: Add GPIO.cleanup() in the except block
Adding GPIO.cleanup() ensures pins are properly reset on KeyboardInterrupt.
Final Answer:
Add GPIO.cleanup() in except block -> Option D
Quick Check:
Always cleanup GPIO pins on exit [OK]
Hint: Always call GPIO.cleanup() when program ends [OK]
Common Mistakes:
Forgetting GPIO.cleanup() causes warnings on rerun
Setting input pin as output
Removing sleep causes high CPU usage
5.
You want to count how many times motion is detected in 10 seconds using a PIR sensor on GPIO pin 23. Which code snippet correctly implements this?
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
PIR_PIN = 23
GPIO.setup(PIR_PIN, GPIO.IN)
count = 0
start_time = time.time()
while time.time() - start_time < 10:
if GPIO.input(PIR_PIN):
count += 1
time.sleep(0.5) # debounce delay
print(count)
GPIO.cleanup()
hard
A. Does not count because GPIO pin is not set as output
B. Counts motion detections with debounce, prints count after 10 seconds
C. Counts continuously without delay, causing multiple counts per motion
D. Infinite loop without exit condition
Solution
Step 1: Analyze loop timing and counting logic
The loop runs for 10 seconds, checking PIR input and incrementing count on detection.
Step 2: Understand debounce with time.sleep(0.5)
The 0.5 second sleep prevents counting the same motion multiple times quickly.
Step 3: Confirm GPIO cleanup and print
After loop ends, count is printed and GPIO.cleanup() resets pins properly.
Final Answer:
Counts motion detections with debounce, prints count after 10 seconds -> Option B
Quick Check:
Debounce delay + timed loop = correct count [OK]
Hint: Use sleep to debounce and time.time() for timed loops [OK]
Common Mistakes:
Missing debounce causes inflated counts
Setting pin as output instead of input
No exit condition causes infinite loop
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.