سنسور حرکت PIR: راهنمای استفاده از سنسور PIR با آردوینو و رزبری پای

فهرست مطالب

مقدمه

در این آموزش نحوه استفاده از سنسور PIR را برای تشخیص حرکت می آموزید. در پایان این آموزش خواهید آموخت:
  • سنسور حرکتی PIR چگونه کار می کند؟
  • نحوه استفاده از سنسور PIR با آردوینو
  • نحوه استفاده از سنسور PIR با رزبری پای

سنسور حرکت PIR چگونه کار می کند؟

سنسورهای پسیو مادون قرمز توانایی تشخیص حرکت اشیایی که نور مادون قرمز ساطع می کنند(مانند بدن انسان) را دارند، از این رو استفاده از این سنسورها برای تشخیص حرکت انسان یا در تشخیص حضور در سیستم های امنیتی، بسیار رایج است. راه اندازی و کالیبراسیون این سنسورها چیزی حدود 10 تا 60 ثانیه زمان می برد. ماژول HC-SR501 یک سنسور کارآمد، ارزان و قابل تنظیم، برای تشخیص حرکت در محیط است. اندازه کوچک و طراحی فیزیکی این ماژول، اجازه استفاده راحت از آن را در پروژه های مختلف، به شما می دهد. خروجی سنسور PIR می تواند مستقیما به یکی از پایه های دیجیتال آردوینو (یا هر میکروکنترلر دیگری) متصل شود. اگر حرکتی تشخیص داده شود، مقدار این پایه “1” می گردد. دو پتانسیومتر پشت برد به شما اجازه می دهد که مقدار حساسیت و زمان تاخیر بعد از حرکت را تغییر دهید.
شما می توانید از این ماژول در سیستم های امنیتی، روشنایی هوشمند، اتوماسیون و … استفاده کنید. ماژول های PIR مختلفی در بازار وجود دارند که اساس کار همه آنها یکسان است و همگی حداقل دارای سه پایه GND، Vcc و Digital Out هستند. در برخی از این ماژول ها یک لنز توپکی شکل برروی سنسور قرار دارد که زاویه دید سنسور را بهبود می بخشد.

راه اندازی سنسور PIR با آردوینو

سیم بندی

شما میتوانید خروجی سنسور PIR را به هر پایه دیجیتال متصل کنید. در پشت این ماژول یک جامپر وجود دارد اگر جامپر را در موقعیت L قرار دهیم هنگام تشخیص حرکت خروجی سنسور تغییر می کند(toggle می شود)، اگر جامپر در وضعیت H باشد خروجی تا موقع تشخیص حرکت High می ماند، که به این وضعیت non-retriggering می گویند. قرار دادن جامپر در وضعیت H باعث می شود در صورت تشخیص حرکت خروجی سنسور HIGH شود و بعد از پایان حرکت LOW گردد، این سنسور، تایمر را هر بار که حرکت تشخیص داده شد، خاموش می کند. این حالت بعنوان مثال در تشخیص حضور در اتاق و کنترل نور آن، جایی که نمی خواهید چراغ ها چشمک بزنند، کاربرد دارد. به این وضعیت Retriggering (یا Repeatable trigger)می گویند. در پشت ماژول 2 پتانسیومتر نیز مشاهده می شود که با تغییر پتانسیومتر SENSITIVITY می توانیم میزان حساسیت سنسور را کم یا زیاد کنیم(چرخش ساعتگرد معادل افزایش حساسیت) و با تغییر پتانسیومتر TIME مدت زمان High بودن خروجی بعد از تشخیص حرکت تغییر می کند.

کد

اگر برای اولین بار است که روی برد آردینو برنامه می ریزید، مراحل زیر را دنبال کنید:

  1. به آدرس www.arduino.cc/en/Main/Software رفته و نرم افزار IDE را متناسب با سیستم عامل خود دانلود و نصب کنید.
  2. نرم افزار Arduino IDE را اجرا کنید.نوع آردوینو خود را از پنجره ی Tools و قسمت Board انتخاب کنید.
  3. پورتی که (COM) آردوینو به آن متصل است را در پنجره ی Tools انتخاب کنید.
  4. دکمه ی Upload (شکلی که شبیه فلش است) را بزنید تا کد شما روی آردوینو آپلود شود.
  5. شما با موفقیت کد خود را روی آردوینو ریختید.
/*

PIR HCSR501 

modified on 5 Feb 2019
by Saeed Hosseini @ ElectroPeak
Home
*/ int ledPin = 13; // LED int pirPin = 2; // PIR Out pin int pirStat = 0; // PIR status void setup() { pinMode(ledPin, OUTPUT); pinMode(pirPin, INPUT); Serial.begin(9600); } void loop(){ pirStat = digitalRead(pirPin); if (pirStat == HIGH) { // if motion detected digitalWrite(ledPin, HIGH); // turn LED ON Serial.println("Hey I got you!!!"); } else { digitalWrite(ledPin, LOW); // turn LED OFF if we have no motion } }

برای کالیبراسیون مناسب، برای 15 ثانیه لازم است هیچ حرکتی جلوی سنسور اتفاق نیفتد(تا زمانی که پایه 13 (LED روی برد)خاموش شود)، بعد از این زمان سنسور با تصویربرداری از محدوده دید خود می تواند حرکات را تشخیص دهد. هنگام تشخیص حرکت، خروجی سنسور HIGH می شود و در غیر اینصورت خروجی آن LOW می گردد.

راه اندازی سنسور PIR با رزبری پای

سیم بندی

کد

import sys
sys.path.append('/home/pi/Adafruit-Raspberry-Pi-Python-Code/Adafruit_CharLCD')
from Adafruit_CharLCD import Adafruit_CharLCD

lcd=Adafruit_CharLCD()     # instantiate LCD Display
lcd.clear()

from time import sleep
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)     # set up BCM GPIO numbering

# Set up input pin
GPIO.setup(21, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)

# Set up LED output
GPIO.setup(20, GPIO.OUT)

# Callback function to run when motion detected
def motionSensor(channel):
    lcd.clear()
    GPIO.output(20, GPIO.LOW)
    if GPIO.input(21):     # True = Rising
        global counter
        counter += 1
        lcd.message('Motion Detected\n{0}'.format(counter))
        GPIO.output(20, GPIO.HIGH)

# add event listener on pin 21
GPIO.add_event_detect(21, GPIO.BOTH, callback=motionSensor, bouncetime=300) 
counter = 0

try:
    while True:
        sleep(1)         # wait 1 second

finally:                   # run on exit
    GPIO.cleanup()         # clean up
    print "All cleaned up."

سنسور PIR بخرید

پروژه های مرتبط

آموزش های مشابه

Comments (5)

  • شهریار Reply

    ببخشید من یه اردوینو نانو دارم و طبق تصویر قطعات را به هم وصل کردم و برنامه رو روش اپلود کردم ولی نشد و نمی دونم چرا هر سنسوری رو بهش وصل می کنم و برنامشو روش اپلود می کنم بازم کار نمی کنه.شما می دونید مشکل از کجاست؟

    جولای 25, 2020 at 3:21 ب.ظ
    • Mohammad Damirchi Reply

      امکان دارد آردوینو شما دچار مشکل شده است
      برای تست میتواند ار برنامه firmata استفاده نمایید

      جولای 26, 2020 at 3:32 ب.ظ
  • شهریار Reply

    ممنون از راهنمایی شما با تشکر

    جولای 27, 2020 at 5:02 ب.ظ
  • شهریار Reply

    اگه میشه در مورد خود این برنامه firmata و روش نصبش توضیح بدید با تشکر

    جولای 27, 2020 at 5:26 ب.ظ
    • مهران ملکی Reply

      سلام
      از لینک زیر نرم افزار firmata را بر اساس سیستم عاملتون دانلود کنید و آن را اجرا کنید.
      http://firmata.org/wiki/Main_Page
      برد آردوینو را به سیستم متصل کنید. در نرم افزار Arduino IDE از قسمت File/Examples/Firmata برنامه StandardFirmata را باز کنید و آن را به روی برد آردوینو آپلود کنید. سپس در نرم افزار firmata دانلود شده می توانید پایه های آردوینو را مستقیما کنترل کرده و تست کنید.
      برای اطلاعات بیشتر می توانید از لینک داده شده استفاده کنید.

      دسامبر 5, 2020 at 11:19 ق.ظ

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.