راه اندازی سنسور تشخیص حرکت PIR توسط رزبری پای

الکترونیک و رباتیک -> ماژول ها و سنسور ها 1151 2 کاربر آکادمی پارتینه

معرفی سنسور تشخیص حرکت PIR
سنسور مادون قرمز غیرفعال موسوم به سنسور تشخیص حرکتPIR  برگرفته از عبارت Passive Infrared Sensor است. به کار بردن واژه‌ی غیرفعال به این دلیل است که سنسور از خود هیچگونه تابشی نداشته و فقط با جذب اشعه کار می‌کند. این سنسورها توانایی تشخیص حرکت اشیایی که نور مادون قرمز ساطع می‌کنند داشته؛ از این رو به منظور تشخیص حرکت انسان و سایر موجودات زنده استفاده می‌شوند. ساختار این سنسور شامل دو بخش وابسته به یک‌دیگر بوده که اگر سطح نور مادون قرمز یکی از این دو بخش تغییر کند به نسبت آن سطح ولتاژ خروجی نیز تغییر خواهد کرد.

مواد اولیه :
# عنوان تعداد لینک
0 بورد رزبری پای ( Raspberry Pi ) 1 لینک خرید
1 ماژول سنسور تشخیص حرکت hc-sr501 1 لینک خرید
2 سیم جامپر 1 لینک خرید

مرحله 1 : اتصالات و دیاگرام مداری

همانطور که در دیاگرام  فوق نشان داده شده است، پین مثبت تغذیه سنسور PIR به پین 4 (5v) و پین زمین سنسوربه پین 6 (Ground) رزبری پای وصل شده است. پین خروجی سنسوربه GPIO 23 متصل شده است که به عنوان ورودی رزبری پای محسوب می‌شود. پین 24 GPIO که به عنوان خروجی به بازر متصل شده و زمین بازر به زمین (پین 6) رزبری پای متصل می‌شود.

مرحله 2 : کدنویسی و تنظیمات نرم‌افزاری

برنامه‌نویسی رزبری پای برای راه‌اندازی سنسوربسیار ساده است. بدین منظور پین‌های GPIO 23 و 24  به ترتیب به عنوان پین‌های ورودی و خروجی تعیین می‌شوند.

while True:
  if GPIO.input(23): #If there is a movement, PIR sensor gives input to GPIO23
     GPIO.output(24, True) #Output given to Buzzer through GPIO24 
     time.sleep(1) #Buzzer turns on for 1 second
     GPIO.output(24, False)

در یک حلقه با بی نهایت تکرار اگر سنسور حرکت را تشخیص داده یا به عبارت دیگرGPIO.input (23) فعال شود، پین خروجی 24 فعال شده و بازر صدا می‌دهد.تابع (time.sleep (sec برای توقف برنامه در پایتون برای مدت زمانی خاص استفاده می شود. در گام بعدی در حالتی که پین خروجی 24 false باشد، بازر متوقف شده تا زمانی که سنسور تحریک شود.

کد کامل:

#Raspberry Pi Motion Detector Code 

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)

GPIO.setup(23, GPIO.IN) 
GPIO.setup(24, GPIO.OUT) 

while True:
  if GPIO.input(23): #If there is a movement, PIR sensor gives input to GPIO 23
     GPIO.output(24, True) #Output given to Buzzer through GPIO 24  
     time.sleep(1) #Buzzer turns on for 1 second
     GPIO.output(24, False)
     time.sleep(5) 
  time.sleep(0.1)