آموزش راه اندازی ماژول سنسور HC-SR501 PIR با آردوینو

آموزش راه اندازی ماژول سنسور PIR HC-SR501 با آردوینو

در این مقاله مرحله به مرحله راه اندازی ماژول سنسور HC-SR501 PIR با آردوینو را به شما آموزش خواهیم داد. اما پیش از آن اجازه دهید اطلاعات بیشتری در مورد این سنسور در اختیار شما قرار دهیم.

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

در ادامه بیشتر با این سنسور آشنا خواهید شد.

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

پیش از راه اندازی ماژول سنسور HC-SR501 PIR با آردوینو ، ابتدا شما را با نحوه عملکرد این سنسور آشنا می کنیم. همه اجسام با دمای بيشتر از صفر مطلق (صفر كلوين يا 15.273- درجه سانتي گراد)، از جمله بدن انسان‌ها، از خود يک انرژی گرمایی به شكل تشعشعات مادون قرمز متصاعد می‌كنند.

سنسور PIR بطور خاصی برای آشكارسازی اين سطح از تشعشعات مادون قرمز طراحی شده است. اين سنسور از دو بخش پايه‌ای تشكيل شده است:

  • يك سنسور پايروالكتريک
  • يك لنز خاص به نام لنز Fresnel

اين لنز امواج مادون قرمز را بر روی سنسور پايروالكتريک متمركز می‌كند.

عبور مادون قرمز از لنز Fresnel در سنسور PIR

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

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

آشكارساز حركتی سنسور HC-SR501 PIR

در بسياری از پروژ‌ه‌های آردوينو كه در آن‌ها به آشكارسازی ورود و خروج و يا به تشخيص نزديک شدن اشخاص نیازمندیم، يک انتخاب مناسب استفاده از سنسور PIR مدل HC-SR501 است. اين سنسورها ارزان قيمت اند، انرژی کمی مصرف می کنند و رنج گسترده ای از انواع لنز آن‌ها در بازار موجود است. همچنين، بسادگی قابل استفاده هستند و در میان كاربران بسیار شناخته شده اند.

همانطور كه در شكل زير نشان داده شده است، ماژول HC-SR501 PIR دارای سه پين است كه عبارتند از پين VCC، پين زمين و پين خروجی ديجيتال. همچنين، اين سنسور دارای يک رگولاتور ولتاژ داخلی است كه با يک ولتاژ DC از 4.5 تا 12 ولت می‌تواند تغذيه شود. اما معمولا 5 ولت برای تغذيه در نظر گرفته می‌شود. ساير ويژگی‌های اين سنسور در ادامه توضيح داده خواهند شد.

جامپر، دیود حفاظتی، رگولاتور، پتانسیومتر، آی سی BISS0001 و پین های سنسور  HC-SR501 PIR

بر روی برد سنسور، دو پتانسيومتر برای تنظيم پارامترهای حساسيت و تايم سنسور وجود دارد:

  • پتانسيومتر حساسيت (Sensitivity): برای تنظيم حداكثر فاصله‌ای كه در آن فاصله حركت قابل تشخيص باشد، از این پتانسيومتر استفاده می‌شود. رنج فاصله قابل تنظيم بين 3 تا حدود 7 متر می‌باشد. ساختار هندسی محل بكارگيری سنسور می‌تواند فاصله آشكارسازی واقعی سنسور را تحت تاثير قرار دهد.
  • پتانسيومتر تايم (Time): مشخص كننده مدت زمان فعال بودن خروجی سنسور پس از آشكارسازی حركت می‌باشد. اين زمان بين حداقل 3 و حداکثر 300 ثانيه قابل تنظيم است.

بعلاوه، برد سنسور HC-SR501 PIR دارای يک جامپر است كه دارای دو نوع مد كاری می‌باشد (در برخی مدل‌ها جامپر لحيم نشده است):

  • H: مد كاری Hold/Repeat/Retriggering كه در آن خروجی سنسور تا زمانی‌كه سنسور حركت را آشكار كند، كماكان فعال نگه داشته خواهد شد.
فعال بودن مد H جامپر
  • L: مد كاری No-Repeat/Non-Retriggering كه در آن به محض تشخيص حركت توسط سنسور، خروجی سنسور برای مدت زمان مشخصی كه توسط پتانسيومتر تایم تنظيم شده است، فعال نگه داشته خواهد شد.
فعال بودن مد L جامپر

ایجاد انعطاف در عملکرد ماژول سنسور HC-SR501 PIR

مدار برد ماژول سنسور HC-SR501 PIR دارای دو پد اضافی می‌باشد كه معمولا به نام‌های ‘RT’ و ‘RL’ برچسب ‌گذاری می‌شوند. اما در برخی برد ها ممكن است اين برچسب‌ها با لنزهای “dome” در طرف مقابل پوشانده شده باشند.

  • پد RT: اين پد برای يک ترميستور يا مقاومت حرارتی در نظر گرفته شده است كه امكان كار سنسور در دماهای خيلی بالا را فراهم می‌كند. همچنين صحت اندازه گيری سنسور در برخی دماهای خاص را افزايش می دهد.
  • پد RL:  اين پد برای اتصال يک مقاومت حساس به نور (LDR) و يا فتوسل در نظر گرفته شده است. با اضافه كردن مقاومت LDR، سنسور PIR فقط در محيط‌ های تاريک كار خواهد كرد كه برای كاربردهای سيستم روشنايی حساس به حركت قابل استفاده است.

المان‌های مداری و تجهيزات ديگر را نيز می‌توان به صورت مستقیم به اين برد الكترونيكی لحیم کرد و یا آن را با استفاده از سیم و اتصالات توسعه داد.

پد RT و پد RL برای اضافه کردن ترميستور و مقاوت حساس به نور

پين‌های خروجی ماژول سنسور HC-SR501 PIR

ماژول سنسور HC-SR501 PIR دارای سه پين خروجی به شكل زير است:

پين‌هاي ماژول سنسور HC-SR501 PIR

پین VCC پين تغذيه الكتريكی سنسور است كه پين 5 ولت آردوينو را به آن وصل می‌كنيم.

پين خروجی دارای منطق 3.3 ولتی TTL است. منطق Low نشان دهنده عدم آشكارسازی حركت و منطق High بيانگر آشكارسازی حركت توسط سنسور خواهد بود.

پين GND پینی است که به زمين آردوينو متصل می‌شود.

استفاده از ماژول سنسور HC-SR501 PIR به عنوان يک واحد مستقل

يكی از دلايل اصلی گسترش كاربرد ماژول سنسور HC-SR501 PIR اين است كه اين سنسور دارای انعطاف كاری بسيار بالايی است و می‌توان آن را به عنوان يک واحد مستقل و متكی بخود بكار گرفت. البته با اتصال اين سنسور به ميكروكنترلرهايی نظير آردوينو می‌توان قابليت‌ها و كارايی آن را افزايش داد.

به عنوان مثال اول، ما اين سنسور را بصورت مستقل (بدون اتصال به آردوينو) مورد استفاده قرار مي‌دهيم.

سيم کشی اين آزمايش بسيار ساده است. دو سر باتری‌ها به پين‌های VCC و GND سنسور متصل می‌شوند. با استفاده از يک مقاومت 220 اهمی يک لامپ LED كوچک را به پين خروجی سنسور وصل می‌كنيم. با این کار مدار تكميل می‌شود.

پس از این هر زمان كه حركتی توسط سنسور PIR تشخيص داده شود، خروجی پین high می شود و لامپ LED روشن خواهد شد.

تست کردن ماژول سنسور HC-SR501 PIR بدون استفاده از آردوینو
همان طور که در تصویر می بیبنید، این سنسور می تواند به عنوان یک واحد مستقل مورد استفاده قرار بگیرد.


لازم به ذكر است كه پس از اعمال تغذيه الكتريكی، اين سنسور به مدت زمانی در حدود 30 تا 60 ثانيه برای سازگاری با سطح انرژی تشعشعات مادون قرمز محيط نياز دارد. در طی اين مدت، لامپ LED متصل به پين خروجی سنسور ممكن است چندين بار چشمک بزند. بايد منتظر خاموش شدن كامل لامپ LED باقی بمانيم و سپس با حركت دست در مقابل سنسور می توانیم روشن شدن LED را مشاهده کنیم.

سیم کشی – راه اندازی ماژول سنسور HC-SR501 PIR با آردوینو

پس از اطلاعاتی که تا به اینجا کسب کردید، زمان راه اندازی ماژول سنسور HC-SR501 PIR با آردوینو است. برای آغاز این کار به وسایل زیر نیاز خواهید داشت که می توانید از طریق لینک های زیر تهیه کنید:

اتصال PIR به آردوينو بسيار ساده است. این سنسور به عنوان يک خروجی ديجيتال عمل می‌كند و تنها باید منتظر فعال و يا غير فعال شدن پين خروجی سنسور باقی بمانيم. سپس يک تغذيه 5 ولت به پين Vcc اعمال می‌كنيم و پين زمين سنسور را به زمين آردوينو و پين خروجی سنسور را به پين ديجيتال شماره 2 آردوينو متصل می‌كنيم.

جامپر ماژول سنسور HC-SR501 PIR را به صورت H ست می‌كنيم. همچنين زمان را روی 3 ثانيه تنظيم می‌كنيم كه برای اينكار پتانسيومتر تايم را تا آخرين حد ممكن، خلاف عقربه‌های ساعت می ‌چرخانيم. مقدار حساسيت را بر روی فاصله مورد نظر تنظيم می کنیم. در صورت عدم اطمينان، می‌توان میزان حساسيت را بر روی مقدار ميانی تنظيم كرد. اكنون می‌توانیم كد را بر روی آردوينو بارگذاری کنیم و راه اندازی ماژول سنسور HC-SR501 PIR را آغاز کنیم.

اتصال ماژول سنسور HC-SR501 PIR به آردوینو

كد آردوينو:

كد برنامه آردوينو بسيار ساده است. این کد وضعیت LOW  یا HIGH بودن ورودی پین 2 را مشخص می کند:

int ledPin = 13;                // choose the pin for the LED
int inputPin = 8;               // choose the input pin (for PIR sensor)
int pirState = LOW;             // we start, assuming no motion detected
int val = 0;                    // variable for reading the pin status
 
void setup() {
  pinMode(ledPin, OUTPUT);      // declare LED as output
  pinMode(inputPin, INPUT);     // declare sensor as input
 
  Serial.begin(9600);
}
 
void loop(){
  val = digitalRead(inputPin);  // read input value
  
  if (val == HIGH)	// check if the input is HIGH
  {            
    digitalWrite(ledPin, HIGH);  // turn LED ON
	
    if (pirState == LOW) 
	{
      Serial.println("Motion detected!");	// print on output change
      pirState = HIGH;
    }
  } 
  else 
  {
    digitalWrite(ledPin, LOW); // turn LED OFF
	
    if (pirState == HIGH)
	{
      Serial.println("Motion ended!");	// print on output change
      pirState = LOW;
    }
  }
}

در آخر، با هر بار آشکار شدن حرکت، پيامی همانند تصویر زیر بر روی سریال مانیتور ارسال می شود:

خروجی سنسور بر روی سریال مانیتور

نكاتی كه پیش از بكارگيری سنسور HC-SR501 PIR بايد مد نظر قرار داد:

  • مشابه اغلب سنسورهای PIR، ماژول HC-SR501 نيز پس از تغذیه شدن، برای سازگاری با سطح انرژی مادون قرمز محيط، به زمان نياز دارد. اين مدت زمان بين 30 تا 60 ثانيه می‌باشد.
  • بعلاوه، پس از هر آشكارسازی، سنسور دارای يک دوره زمانی ريست در حدود 5 يا 6 ثانيه است كه طی اين مدت هيچ آشكارسازی انجام نمی‌دهد.

در زمان طراحی يک سيستم با استفاده از ماژول HC-SR501 لازم است اين تاخير‌ها در نظر گرفته شود.


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

مقالات مشابه

۳۰ دیدگاه. Leave new

  • با سلام. میخواستم ازشما تشکر کنم بابت این مطلب بسیار مفید و با جزئیات دقیق. منتظر آموزش های دیگر تون هم هستیم. موفق باشید

    پاسخ
    • سلام محمد عزیز،
      خواهش می‌کنم.
      خوشحالیم که این مطلب برات مفید بوده و ممنون از شما که همراه ما هستی.
      امیدواریم که همیشه بتونیم مطالب مفیدی رو در اختیار شما عزیزان بذاریم.

      پاسخ
      • منصور درستی
        دی ۲۷, ۱۴۰۰ ۱۷:۴۲

        با سپاس از شما ،
        لطفا بفرمایید آیا کد آردوینو را باید تایپ کنیم یا بصورت آماده برای دانلود هست؟

        پاسخ
        • سلام منصور عزیز، مرسی از شما که ما رو همراهی می‌کنی
          کافیه کد رو در برنامه آردوینو کپی پیست و آپلود کنی.

          پاسخ
          • محمد رضا مهرپور
            شهریور ۹, ۱۴۰۱ ۱۶:۱۲

            سلام ، ضمن تشکر از مطالب خوبتون ، منبع تغذیه سیستم من ۱۲ ولت ۱۰ آمپر هست . میتونم این مقدار رو هم بعنوان تغذیه vcc استفاده کنم و همین مقدار رو از پین خروجی برای راه اندازی آژیر استفاده کنم ؟ یا اینکه منبع تغذیه جدا و رله رو تو مدار بیارم ؟

          • سلام محمد رضای عزیز،
            خواهش می‌کنم،
            اگر آژیر شما جریان کمی در حد ۲۰ میلی‌آمپر نیاز داره، به رله نیاز نیست، در غیر این صورت باید از ترانزیستور یا رله استفاده کنی.

    • محسن احمدی
      مهر ۹, ۱۴۰۱ ۱۰:۰۶

      سلام و خداقوت و تشکر بابت توضیحات واضح و مفیدتون.
      چند سوال داشتم.
      ۱_ برای افزایش زمان میتونم پتانسیومتر رو بردارم و بجاش مقاومت با مقدار بیشتری بزارم؟ (مثلا ۸M)
      ۲- برای Vcc دقیقا باید چند ولت بدیم؟ ۵ یا ۱۲؟

      پاسخ
      • سلام محسن عزیز،
        خواهش می‌کنم،
        تغییر پتانسیومتر نیاز به بررسی و تحلیل مدار ماژول داره، اما به‌صورت تجربی می‌تونی تست کنی و ببینی تا چه مقدار میشه زمان را افزایش داد.
        تغذیه ماژول می‌تونه مقداری در بازه ۴.۵ تا ۲۰ ولت داشته باشه.

        پاسخ
  • با سلام بخشید من دوتا از این ماژول ها از شما خریداری کردم که متاسفانه الان وقتی میخوام تست بکنم با مشکل روشن شدن خروجی در زمان های که چیزی عبور نمیکند مواجه شده ام! قبلا یکی توی جای دیگه ای خریدم بدون مشکل کار میکنه اما ماژول های شما هردو این مشکل رو دارن که ناخواسته خروجیشون وصل میشه. سیم ها بدون مشکل وصل شده و تغذیه هم از ۵ولت تا ۹ ولت وصل کردم ولی مشکل از تغذیه نیست.

    پاسخ
    • سلام مجدد به شما محمد عزیز،
      برای این موضوع باید با فروشگاه تماس بگیری تا همکاران ما شما رو راهنمایی کنند.
      شماره‌های فروشگاه:
      ۰۳۱۳۲۴۰۴۴۳۹
      ۰۳۱۳۲۴۰۴۴۳۸

      پاسخ
  • سلام
    چندتا از مطالب آموزشی تون رو دیدم… بسیار عالی و کاربردی تهیه شده اند… بهتون خداقوت میگم و براتون آرزوی موفقیت دارم

    پاسخ
  • سلام
    واقعا خیلی کد ها کاربردیه
    با اضافه کردن چند خط کد ساده میشه روی LCD کاراکتری هم نمایش داد 👌

    پاسخ
  • سلام
    واقعا خیلی کد ها عالی و کاربردیه
    با اضافه کردن چند خط کد ساده میشه روی LCD کاراکتری هم نمایش داد 👌

    پاسخ
  • سلام.برای اتصال سه عدد سنسور pir چه اقدامی باید انجام داد؟آیا امکان دارد خروجی های هر سه سنسور را به هم متصل کرد و به پایه دو اردینو متصل کرد؟یا باید جداگانه به پایه های مختلف متصل و کد جدید نوشت؟

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

      پاسخ
  • سلام خسته نباشید . اولا تشکر می کنم. از مطالب اموزندتون . دوما یه سوال داشتم. اولین مدار ساده با pir که شکلش رو کشیدید . با نرم افزار fritzing بوده ؟ اگر مال این نرم افزار هست . اسم سنسور رو چی سرچ کردید که قطعه رو براتون اورد؟

    پاسخ
  • مهداد کریمی
    مرداد ۲۳, ۱۴۰۱ ۱۳:۳۱

    سلام خسته نباشید ببخشید یک سوال داشتم چطوری با ماژول pir و Arduino و lcd تعداد نفرات داخل یک اتاق رو بفهمم اگه با pir نمیشه با چه سنسوری میشه؟

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

      پاسخ
  • درود بر شما ، مهندس سال نو شما مبارک . برای رفع نویز امواج الکترومغناطیس ماژول سیم هشتصد روی پی آی آر چه راه حلی ارائه میدید؟؟
    چون داخل پروژه م ار سنسور های دیگه هم استفاده کردم نمیتونم و کنترل اشیا هم دارم نمیتونم از کد اسلیپ استفاده کنم و باید همیشه ماژول سیم هشتصد فعال و آماده بکار باشه؟
    شیلد های نویز گیر استفاده کردم نشد . کاور آلومینیومی برای پی آی آر گذاشتم نشد . وقتی پیامک میفرستم به ماژول سیمکارت ، خروجی پی آی آر خود به خود یک منطقی میشود

    پاسخ
    • سلام و درود برشما مجید عزیز و ممنون از تبریکتان
      تیم ما نیز در مجموعه روبوایکیو، سال خوشی را برای شما آرزو دارد؛
      در پاسخ به سوال شما؛ اگر با شیلد کردن و تغییر حساسیت نتیجه نگرفته‌اید تنها راهی که به ذهن ما می‌رسد کنار گذاشتن ماژول و طراحی یک مدار آپ امپی برای خواندن سنسور PIR هست. خود مدار را می‌توانید از اینترنت پیدا کنید و نکات مربوط به شیلد کردن رو در طراحی PCB رعایت کنید. همچنین تغییر خود سنسور PIR و استفاده از کیفیتها و مدلهای مختلف، یا حتی استفاده از لنزهای مختلف میتونه نتایج متفاوتی را به همراه داشته باشه.
      پیروز باشید:)

      پاسخ
  • سلام ممنون از آموزش های خوبتون
    میخواستم ببینم از این سنسور می‌توان برای کوادکوپتر استفاده کرد؟ ؟

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

      پاسخ
  • سلام
    ببخشید می شود این سنسور را در بیرون از خانه به عنوان دزد گیر استفاده کرد یعنی خروجی آن را به یک آژیر دزدگیر خودرو وصل کنیم

    پاسخ
    • درود بر شما اسماعیل عزیز
      از خروجی این سنسور، در کاربردهای بسیار مختلفی می‌توانید استفاده کنید فقط ملاحظات جریان و ولتاژی را در نظر داشته باشید. مثلاً برای اتصال به آژیر دزدگیر خودرو، می‌توانید خروجی این ماژول را به یک سنسور رله متصل کنید و با رله، آژیر را خاموش و روشن کنید.
      موفق باشید 🙂

      پاسخ

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

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

Fill out this field
Fill out this field
لطفاً یک نشانی ایمیل معتبر بنویسید.
You need to agree with the terms to proceed

پر بازدید ترین مقالات