آردوینو Arduinoرزبری پای - Raspberry PIمطالب آموزشی

راه اندازی ماژول سنسور حرکت مادون قرمز HC-SR501

سنسورهای PIR  یا Passive Infra-Red  برای تشخیص حرکت بر مبنای نور مادون قرمز ناشی از گرمای موجود در محیط کاربرد دارند. از همین رو استفاده از این سنسور ها در سیستم های امنیتی برای تشخیص حرکت انسان و یا ورود های غیر مجاز بسیار رایج می باشد. راه اندازی اولیه و کالیبره شدن این سنسورها چیزی در حدود 10 تا 60  ثانیه به طول می انجامد و در طی این مدت برای تنظیم دقیق نباید در شعاع دید آنها حرکتی انجام پذیرد.
سنسور حرکت مادون قرمز  پیروالکتریک
  HC-SR501  یک ماژول موثر، ارزان قیمت و قابل تنظیم برای تشخیص حرکت در محیط می باشد ، اندازه کوچک و طراحی فیزیکی این ماژول به شما این امکان را می دهد به راحتی از آن در پروژه خود استفاده نمایید.
خروجی این
سنسور تشخیص حركت می تواند مستقیما به یکی از پایه های میکروکنترل متصل گردد و در صورت تشخیص هر نوع حرکتی توسط سنسور مقداراین پین یک می گردد. دو پتانسیومتر موجود بر روی برد این امکان را به شما می دهد تا بتوانید حساسیت  و زمان انتظار برای ایجاد تاخیر پس از تشخیص یک حرکت را تنظیم نمایید.

sr501کاربردها

  1. ‌ سیستم های امنیتی و ساخت دزدگیر
  2. ‌ روشن نمودن چراغ های منازل، پارکینگ، ساختمان و … به صورت هوشمند و بر اساس تشخیص حرکت
  3. ‌ کنترل و اتوماسیون صنعتی
  4. ‌ سیستم های هشدار
  5. ‌ درب های اتوماتیک
  6. ‌ نور پردازی هوشمند

مشخصات فنی

  1. ابعاد : تقریبا 3.2cmx2.4cm x1.8cm
  2. سنسور مادون قرمز با مدار کنترل
  3. ‌ با قابلیت تنظیم حساسیت و زمان انتظار
  4. محدوده ولتاژ کاری : DC 4.5V- 20V
  5. ‌ جریان drain : <60uA
  6. محدوده تشخیص : 3–7 متر (قابل تنظیم)
  7. زاویه تشخیص: 120 درجه
  8. زمان انتظار برای تشخیص حرکت بعدی: 0.3 تا 18 ثانیه قابل تنظیم
  9. محدوده تشخیص : <100°
  10. زمان تاخیر : 5-200S
  11. ‌ دمای کاری : -20-+80°C
  12. ‌ وزن : تقریبا 6 گرم

hc-sr501-2

اتصال به آردوینو

در این مثال نحوه ی اتصال سنسور به آردوینو نشان داده شده است.

pirsensor_bb

 int pirPin = 8;
int val;

void setup() {
  Serial.begin(9600);
}

void loop() {
  val = digitalRead(pirPin); //read state of the PIR
  
  if (val == LOW) {
    Serial.println("No motion"); //if the value read is low, there was no motion
  }
  else {
    Serial.println("Motion!"); //if the value read was high, there was motion
  }
  
  delay(1000);
}

در مثال بعدی با نزدیک شدن سوژه به سنسور، چراغ LED هشدار خواهد داد.

600px-hc-sr501-4

int czujnik =11;
int val = 0;
void setup() {
 
pinMode(10, OUTPUT);
pinMode(6, OUTPUT);
pinMode(11, INPUT);
Serial.begin(9600);
}
void loop() {
 
digitalRead(czujnik);
val=digitalRead(czujnik);
 
Serial.println(val);
 
if (digitalRead(czujnik)==1){
digitalWrite(10, HIGH);
digitalWrite(6, HIGH);
}
 
else {
digitalWrite(10, LOW);
digitalWrite(6, LOW);
}
 
delay(300);
}

اتصال به برد رسپبری پای

سنسور HC-SR501 مطابق تصویر زیر به رسپبری پای متصل می شود.

550px-hc-sr501-6

در تصویر بالا، پایه های Vcc و Output و Ground به ترتیب به پین های 2 (5V) و 26 (GPIO) و 6 (GND) روی رسپبری پای متصل خواهند شد.

 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(hardware) delay

با اجرای برنامه ی فوق باید چیزی شبیه به تصویر زیر به عنوان خروجی مشاهده کنید.

500px-hc-sr501-7

در این مثال نیز سنسور به رسپبری پای متصل شده و با نزدیک شدن سوژه، چراغ LED روشن خواهد شد.

700px-hc-sr501-8

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."

نوشته های مشابه

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا