آموزش آردوینوپروژه های آردوینو

سنسور تشخیص حرکت PIR و آردوینو (آموزش جامع)

در این مطلب چگونگی اتصال یک سنسور پسیو مادون قرمز (PIR) یا سنسور تشخیص حرکت به آردوینو را یاد میگیریم. هم چنین نحوه عملکرد این سنسور و بخش های مختلف آن را بررسی میکنیم. پس تا انتهای این مطلب، با ما همراه باشید.

قطعات مورد نیاز

  1. آردوینو Uno
  2. سنسور تشخیص حرکت PIR
  3. سیم های جامپر
قطعات مورد نیاز را از فروشگاه قطعات آیرنکس تهیه کنید.

سنسور تشخیص حرکت HC-SR501 PIR

این سنسور از سه پایه VCC، GND (زمین) و پایه داده خروجی تشکیل شده است.

سنسور تشخیص حرکت HC-SR501 PIR

  • VCC : این پایه، پایه تغذیه ماژول است.
  • GND : این پایه، پایه زمین ماژول است.
  • Out : این پایه، پایه داده خروجی ماژول است. وقتی حرکتی تشخیص داده میشود، این پایه به وضعیت HIGH میرود.

اجزا ماژول سنسور PIR

بالاترین قسمت سنسور، در واقع یک لنز است که شیارهای متحدالمرکزی بر روی پلاستیک آن حک شده است. به این نوع لنزها، لنز فرنل یا فرنزل میگوییم.

لنز فرسنل سنسور تشخیص حرکت

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

حال اگر این لنز را برداریم، همان گونه که درتصویر زیر مشخص است، قسمت جلویی مدار ماژول را خواهیم دید.

سنسور پایروالکترونیک در تشخیص حرکت

در مرکز این ماژول، سنسور اصلی پیروالکتریک را میبینیم. این سنسور به پرتوهای مادون قرمز اجازه عبور از خود را داده و هر تابش دیگری را ثبت میکند. سنسور ما، قادر به خنثی کردن تشعشعات محیطی و تشخیص تغییرات در الگوی تابش است.

اگر ماژول را به پشت برگردانیم، چیزی شبیه به تصویر پایین را خواهیم دید.

قسمت پشتی سنسور PIR

قسمت پشتی ماژول سنسور PIR از:

  1. کنترل کننده BISS0001 PIR
  2. جامپر تعیین سطح تریگر
  3. پتانسیومتر تنظیم حساسیت
  4. پتانسیومتر تنظیم تاخیر زمانی
  5. لنت های لحیم کاری ترمیستور و LDR
  6. رگولاتور ولتاژ 3.3 ولت
  7. دیود حفاظت

تشکیل شده است.

کنترل کننده BISS0001 PIR

BISS0001 بخش جدایی ناپذیر و کنترل کننده اصلی ماژول ماست. وظیفه آن، پردازش سیگنال هایی است که سنسور PIR تولید کرده است، به علاوه مدیریت کارکرد کلی سنسور هم بر عهده دارد. از وظایف دیگر آن، میتوان تقویت سیگنال سنسور، دستکاری سیگنال به صورتی که برای پردازش در مرحله بعدی آماده شود و فعال کردن عناصر دیگر مثل مدار تنظیم تاخیر زمانی را نام برد.

جامپر تعیین سطح تریگر

به کمک این جامپر یا کلید، مد یا وضعیت کاری سنسور را پیکربندی میکنیم.

اگر در مورد این مطلب سوالی دارید در قسمت نظرات بپرسید

این جامپر خود؛ دو مد کاری دارد:

  1. مد تریگر تکی

در این حالت، سنسور در زمان تشخیص حرکت، فقط یک بار فعال میشود و تا زمانی که پایه خروجی از بیرون ریست نشود، دیگر فعال نخواهد شد.

از این مد کاری در مواردی که میخواهیم برای هر حرکت، سنسور فقط یک بار فعال شود استفاده میکنیم. ( به بیان دیگر، سنسور فقط وقتی حرکت را تشخیص داد، فعال شده و سپس دوباره غیرفعال میشود. حتی اگر همچنان همان حرکت در میدان دیدش حس شود، نسبت به ادامه پیدا کردن آن واکنشی نشان نمیدهد.)

  1. مد تریگر تکراری

در این حالت، وقتی سنسور یک حرکت را شناسایی کرد، به صورت تکراری و تا وقتی که حرکت در میدان دید آن باشد، به فعال ماندن خود ادامه خواهد داد. به ریست شدن خارجی نیازی ندارد و تا وقتی که حرکت قابل تشخیص است، فعال میماند.

در مواقعی که هدف ما دنبال کردن یا نظارت مستمر بر یک حرکت است، از این مد کاری استفاده میکنیم.

پتانسیومتر تنظیم حساسیت

این پتانسیومتر برای تنظیم دقیق حساسیت سنسور PIR طراحی شده است. با چرخاندن ولوم یا دسته آن، سطح حساسیت سنسور کاهش یا افزایش می یابد. افزایش حساسیت، محدوده تشخیص را گسترده کرده و درنتیجه میتوانیم از فواصل دورتر هم حرکت را تشخیص دهیم، درحالیکه کاهش حساسیت، محدوده تشخیص را محدود میکند.

پتانسیومتر تاخیرزمانی

با استفاده از این پتانسیومتر، زمان تاخیر یا مدت زمانی که سنسور بعد از تشخیص حرکت HIGH باقی میماند را تنظیم میکنیم. ( HIGH بودن وضعیت سنسور به معنی تشخیص حرکت است.) با تنظیم ولوم یا دسته آن، میتوان مناسب با نیازمان این زمان را کم یا زیاد کنیم.

تاخیر زمانی کمتر به معنی وجود حرکت به صورت کوتاه مدت و تاخیر زمانی بیشتر در مواقعی کاربرد دارد که سنسور باید به صورت طولانی مدت حرکت را تشخیص دهد و “1” بماند.

پد های لحیم کاری ترمیستور و LDR

به کمک این لنت های لحیم کاری میتوان قطعات اضافی مثل ترمیستورها (RT) یا مقاومت های نوری (LDR) را به ماژول متصل کرد. اتصال این اجزا میتواند با افزودن به حساسیت به نور یا دما، عملکرد سنسور را بهبود ببخشد. همچنین سبب میشود که سنسور در شرایط محیطی متفاوت، پاسخ های متفاوتی از خود نشان دهد.

رگولاتور ولتاژ 3.3 ولت

این عنصر، به عنوان یک رگولاتور ولتاژ عمل کرده و منبع تغذیه 3.3 ولت پایداری را برای ماژول سنسور PIR فراهم میکند. کارکرد ماژول در محدوده ولتاژ خاصی را تضمین کرده و ما را از عملکرد قابل اعتماد و پایدار آن مطمئن میکند.

دیود حفاظت

دیود حفاطت، از ماژول سنسور PIR در برابر آسیب های ناشی از ولتاژ معکوس جلوگیری میکند. این دیود با یکسوسازی جریان، ماژول را از افزایش ولتاژ ناگهانی یا معکوس شدن پلاریته ولتاژ به صورت تصادفی حفظ میکند.

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

هر جسمی که دمای آن بالاتر از 0 درجه است، از خود نور مادون قرمز ساطع میکند. اگرچه که ما قادر به دیدن این اشعه نیستیم، اما این نور دارای اطلاعات مهمی درباره دما و حرکت جسم است.

عملکرد سنسور HC-SR501 PIR در چند مرحله قابل بررسی است.

درهنگام روشن شدن، سنسور وارد فاز آغازین شده و در طی آن، خود را با تشعشعات مادون قرمز در محیط کالیبره و تنظیم میکند.

این کالیبراسیون، باعث سازگار شدن سنسور با دمای محیط و به حداقل رسیدن محرک های کاذب میشود.

بعد از این مرحله، سنسور به طور مداوم، محیط اطراف خود را زیر نظر میگیرد و الگو تابش IR شناسایی شده را با آنچه که در مرحله قبل خود را با آن کالیبره کرده بود، مقایسه میکند. هنگامی که یک جسم گرم، مانند انسان یا حیوان خانگی، در میدان دید سنسور حرکت میکند، در الگو تابش IR (مادون قرمز) سنسور پیروالکتریک تفاوت دینامیکی ایجاد میشود. سنسور این تغییر را به سرعت شناسایی میکند.

مدار داخلی سنسور، سیگنال خروجی سنسور پیروالکتریک را پردازش میکند. این پردازش شامل تقویت سیگنال و مکانیزم های فیلتر است تا مطمئن شویم که سنسور حرکت را به درستی تشخیص میدهد.

خروجی نهایی سنسور HC-SR501 PIR معمولا یک سیگنال دیجیتال است. زمانی که هیچ حرکتی تشخیص داده نشده، این سیگنال در حالت LOW باقی میماند. اما وقتی در میدان دید سنسور حرکتی اتفاق افتاد، سیگنال به حالت HIGH میرود. مدت زمانی هم که در حالت HIGH باقی میماند توسط پتانسیومتر تنظیم تاخیرزمانی مشخص میشود. بعد از گذشت این زمان، سیگنال دوباره به حالت LOW  برمیگردد که نشان دهنده عدم وجود حرکت در میدان دید سنسور است.

سوالات متداول درباره سنسور PIR

1- محدوده تشخیص سنسور PIR  چقدر است؟

محدوده تشخیص سنسور PIR متغیر است، اما معمولا بین 5 تا 15 فوت (1.5 تا 4.5 متر) متناسب با مشخصات سنسور تغییر میکند.

2- چگونه میتوان تشخیص و آلارم های اشتباه را کاهش داد؟

برای به حداقل رساندن تشخیص های اشتباه، از قرار دادن سنسور در نزدیکی منابع گرما یا نور مستقیم خورشید جلوگیری کنید. میزان حساسیت و تاخیر زمانی را تنظیم کنید و از یک لنز برای محدود کردن میدان دید سنسور استفاده کنید.

3- آیا سنسورهای PIR قادر به تشخیص حرکت از پشت دیوار هستند؟

خیر، سنسورهای PIR نمی توانند حرکت را از پشت دیوار شناسایی کنند. آن ها برای تشخیص حرکت صرفا در میدان دید خود طراحی شده اند و موانع فیزیکی مانند دیوار بر آن ها تاثیر میگذارد.

مدار اتصال سنسور تشخیص حرکت PIR به آردوینو

مدار اتصال سنسور تشخیص حرکت PIR به آردوینو

پایه VCC یا مثبت سنسور PIR را به پایه 5V آردوینو متصل کنید. پایه GND یا منفی سنسور PIR را به هر کدام از پایه های GND آردوینو که خواستید متصل کنید. پایه OUT (signal) ماژول سنسور PIR را به پایه ورودی دیجیتال آردوینو ( مثل پایه 5) متصل کنید.

کد آردوینو برای سنسور تشخیص حرکت

در این قسمت، کد را به طور کامل برایتان توضیح میدهیم. میتوانید کد کامل را در انتهای همین مطلب مشاهده کنید.

const int pirPin = 5;

یک ثابت از نوع int (صحیح) به نام pirPin تعریف کرده و به آن مقدار 5 را نسبت میدهیم. در واقع نشان میدهیم که سنسور PIR را به پایه 5 دیجیتال آردوینو متصل کرده ایم.

void setup() {

در این خط، تابع ()setup  را فراخوانی میکنیم. این تابع، یک تابع خاص در آردوینو است که شامل تنظیمات اولیه مثل مشخص کردن پایه های ورودی و خروجی است.

pinMode(pirPin, INPUT);

در این خط، pirPin (پایه ای از آردوینو که سنسور به آن متصل شده است) را به عنوان پایه ورودی پیکربندی میکنیم. در واقع به آردوینو میگوییم که باید داده را از روی این پایه بخواند. در اینجا، داده همان وضعیت (HIGH/LOW) سنسور PIR است.

  Serial.begin(9600);  
delay(20000);
}

ارتباط سریال را با نرخ باد 9600 بیت در ثانیه آغاز میکنیم. ارتباط سریال با هدف دیباگ کردن یا اشکال زدایی استفاده میشود. به این شکل که میتوانیم پیام هایی را که آردوینو میفرستد (خروجی آردوینو) را در سریال مانیتور در IDE آردوینو ببینیم و در صورت وجود مشکل و خطا، آن را حل کنیم.

همچنین یک تاخیر 2000 میلی ثانیه ای (2 ثانیه ای) داریم تا سنسور آماده کار شود.

void loop() {

در این خط، تابع ()loop را فراخوانی میکنیم. این تابع بخش اساسی کد آردوینو است و بعد از تابع ()setup به طور مداوم اجرا میشود و شامل کد اصلی است.

 int pirState = digitalRead(pirPin);

یک متغیر صحیح به نام pirState تعریف میکنیم. با استفاده از تابع ()digitalRead، داده پایه pirPin را خوانده و در این متغیر ذخیره میکنیم. داده پایه pirPin همان وضعیت سنسور PIR است که میتواند LOW یا HIGH  باشد. ( HIGH برای وقتی که حرکت تشخیص داده شده و LOW برای وقتی که حرکت نداریم.)

 if (pirState == HIGH) {

یک دستور if داریم که وضعیت pirState  را بررسی میکند. اگر سنسور حرکتی را تشخیص داده و به تبع آن، pirState ، HIGH باشد وارد بلوک کد میشویم.

  Serial.println("Motion detected!");

جمله “!Motion detected” بر روی سریال مانیتور نوشته خواهد شد. ( این خط برای دیباگ کردن یا اشکال زدایی است.)

 delay(1000);

یک تاخیر 1000 میلی ثانیه ای ( 1 ثانیه ای) به کد اضافه میکنیم تا از پیام های پشت سر هم جلوگیری کرده و زمان کافی برای تثبیت حرکت داشته باشیم. این تاخیر متناسب با نیازمان قابل تنظیم است.

  } else {
Serial.println("No motion detected.");
 }
}

این خط، بلوک کد else  را آغاز میکند. این قسمت به شرطی اجرا میشود که وضعیت pirState، HIGH نباشد. در این صورت پیام “.No motion detected” به معنی “هیچ حرکتی تشخیص داده نشد” روی سریال مانیتور نشان داده خواهد شد.

در اینجا، خروجی پروژه کامل شده را مشاهده میکنید. خروجی سنسور میتواند روی سریال مانیتور هم دیده شود.

موارد موجود در فایل : سورس کامل

5 (1 نفر)

برای دریافت مطالب جدید کانال تلگرام یا پیج اینستاگرام ما را دنبال کنید.

محمد رحیمی

محمد رحیمی هستم. سعی میکنم در آیرنکس مطالب مفید قرار بدهم. سوالات مربوط به این مطلب را در قسمت نظرات همین مطلب اعلام کنید. سعی میکنم در اسرع وقت به نظرات شما پاسخ بدهم.

2 نظر

  1. لطفاً در مورد تنظیم پوتانسیومتر های پشت ماژول بیشتر توضیح دهید
    برای مثال کدوم طرف باشه بهتره یا …
    دقت‌ش در کدوم طرف بیشتره ؟

    1. سلام وقت بخیر
      پتانسیومتر را بچرخانید و چند بار تست کنید. باید خودتان تنظیم کنید با چه دقتی میخواهید فعال شود.

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

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