قطعات الکترونیک مدارهای الکترونیک پروژه های آردوینو

معرفی سنسور PIR چگونگی کار و آموزش راه اندازی با برد آردوینو

what-is-pir-sensor-and-running-with-arduino-digispark
نوشته شده توسط اروند طباطبایی

ماژول تشخیص حرکت hc-sr501 یک ماژول PIR مادون قرمز است. این ماژول سنسور راه پله هم نام دارد. مناسب تشخیص حرکت انسان است. این ماژول با کمک یک کلاهک که بر روی آن قرار دارد کلیه اواج فروسرخ را بر روی سنسور خود متمرکز میکند.سنسور PIR که مخفف شده عبارت Passive Infra Red به معنی تاثیر پذیر از نور مادون قرمز می باشد. به عبارتی اساس کار این سنسور بر اساس تشخیص نور مادون قرمز است. در اثر حرارت بدن این نور توسط سنسور PIR قابل تشخیص است. از این رو در سیستم های حفاظتی و امنیتی از سنسورهای PIR جهت تشخیص حرکت استفاده می‌کنند. خروجی این ماژول به صورت  ۰ و ۳٫۳ ولت TTL است و میتواند به طور مستقیم به میکروکنترلر یا آردوینو متصل شود وحرکت را تشخیص دهد. در ادامه راه اندازی و شناخت سنسور PIR با مرجع تخصص الکترونیک، دیجی اسپارک همراه باشید.


سنسور PIR تشخیص حرکت چیست؟


سنسور تشخیص حرکت PIR (Passive Infrared) با نام HCSR501 یک سنسور حرکت بر اساس اصول تشخیص تغییرات در تابش مادون قرمز غیرفعال (Infrared) است. این سنسور برای تشخیص حرکت انسان در محیط‌های داخلی استفاده می‌شود و در سیستم‌های امنیتی، سیستم‌های روشنایی خودکار و سایر دستگاه‌های الکترونیکی که نیاز به تشخیص حرکت دارند، استفاده می‌شود.سنسور PIR تشخیص حرکت امواج مادو قرمز که از اجسام مختلف ساطع می‌شود را دریافت می‌کند. سنسور مادون قرمز pir دارای یک کلاهک شفاف پلاستیکی است که دقت و زاویه دید سنسور را افزایش می‌دهد. این کلاهک کمک می‌کند که امواج مادون قرمز محیط دقیق‌تر توسط ماژول دریافت شوند.

سنسور PIR دارای دو مد کارای No Reset , Auto Reset است که با لحیم کردن پد L به پد وسط در حالت No reset و با لحیم کردن پد H به پد وسط در حالت Auto reset قرار می‌گیرد. برای تنظیم کردن ماژول تشخیص حرکت PIR hc sr501 ابتدا می‌بایست این ماژول را در محیطی بدون حرکت به مدت ۱۰ الی ۶۰ ثانیه قرار دهیم. به وسیله‌ی پتانسیومتر sx میتوان فاصله‌ی قابل تشخیص توسط ماژول را تعیین کرد. حدودا برابر ۳ الی ۷ متر است. به وسیله‌ی پتانسیومتر tx می‌توان زمان high بودن خروجی را بین ۵ الی ۲۰۰ ثانیه تنظیم نمود. زاویه تشخیص سنسور PIR در حدود ۱۲۰ درجه است.

ثبت تصاویر به کمک سنسور PIR در ESP32-CAM


روش کار سنسور PIR


سنسور تشخیص حرکت PIR HCSR501 بر اساس اصول تشخیص تغییرات در تابش مادون قرمز غیرفعال (Infrared) عمل می‌کند.سنسور HCSR501 دارای دو حسگر مادون قرمز است که به صورت دو جفت قرار داده شده‌اند. این حسگرها تابش مادون قرمز غیرقابل مشاهده را تشخیص می‌دهند.هنگامی که یک جسم (مانند انسان) در محدوده دید حسگرها حرکت می‌کند، تابش مادون قرمز توسط حسگرها آشکارسازی می‌شود. تغییرات در تابش مادون قرمز باعث تغییر در الکتریکی شدن حسگرها می‌شود.

پس از آشکارسازی تغییرات در تابش مادون قرمز، سنسور HCSR501 وضعیت خروجی خود را تغییر می‌دهد. خروجی سنسور به صورت یک سیگنال دیجیتال با مقادیر HIGH و LOW است. بعد از تشخیص حرکت، سنسور HCSR501 یک زمان تاخیر (قابل تنظیم) دارد. در طول این زمان، خروجی سنسور در وضعیت HIGH باقی می‌ماند. این زمان تاخیر با چرخاندن پتانسیومتر مربوطه تنظیم می‌شود. بعد از پایان زمان تاخیر، خروجی سنسور به وضعیت LOW بازمی‌گردد. اگر در این زمان دوباره تغییرات در تابش مادون قرمز تشخیص داده شود، زمان تاخیر مجدداً شروع می‌شود.

به این ترتیب، سنسور HCSR501 با مشاهده تغییرات در تابش مادون قرمز سنسورهای PIR دارای ساختار متفاوتی نسبت به یک سنسور مادون قرمز معمولی یا فتوسل دارند. به دلیل اینکه متغیرهای زیادی در ورودی و خروجی آن‌ها تاثیر گذار هستند، در اصطلاح عامه به آن سنسور سه بعدی هم گفته می‌شود. به تصویر زیر دقت کنید. سنسور PIR روی یک برد قرار گرفته است. در جلوی آن یک لنز قرار دارد. این لنز عملکرد خاصی در کارکرد سنسور ندارد و فقط زاویه دید آن را بیشتر کرده و دقت را بالا می‌برد.

 


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


VCC: این پایه به منبع تغذیه مثبت (بین ۳ تا ۵ ولت) متصل می‌شود. با اتصال این پایه به منبع تغذیه، سنسور به تغذیه الکتریکی مورد نیاز خود می‌رسد.
GND: این پایه به منبع زمین متصل می‌شود و ارتباط الکتریکی سنسور با زمین فراهم می‌شود.
OUT: این پایه خروجی سنسور است. در صورتی که سنسور حرکتی را تشخیص دهد، خروجی را به وضعیت HIGH تغییر می‌دهد. در غیر این صورت، خروجی به وضعیت LOW بازمی‌گردد. شما می‌توانید این پایه را به ورودی میکروکنترلر، آردوینو متصل کنید تا از حرکت تشخیص داده شده توسط سنسور مطلع شوید و عملیات مورد نظر را انجام دهید.
با اتصال صحیح پایه‌های VCC، GND و OUT به منابع تغذیه و دستگاه‌های مورد استفاده، می‌توانید از سنسور تشخیص حرکت PIR HCSR501 بهره ببرید و حرکت‌ها را به صورت دیجیتال تشخیص دهید.

 


کاربردهای سنسور PIR


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

 j


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


مطابق هر سنسور و ماژول دیگری، سنسور PIR مدل hc-sr501 هم دارای یک سری پایه جهت اتصالات است. برای راه اندازی این سنسور به سه پایه نیاز دارید. دو پایه برای تغذیه هستند. که ولتاژ مثبت و منفی ۵ ولت را به آن متصل می‌کنید. پایه سوم همان سیگنال است که فرمان تشخیص حرکت را صادر می‌کند. این پایه میتواند به آردوینو یا دیگر بردهای میکروکنترلر متصل شود. سپس اقدامات بعدی مطابق دستورات نوشته شده در برنامه اجرا شوند. راه اندازی سنسور مادون قرمز pir به دو روش امکان پذیر است.

اتصالات سخت‌افزاری:

  • اتصال پایه VCC سنسور به منبع تغذیه ۵ ولت آردوینو.
  • اتصال پایه GND سنسور به زمین (GND) آردوینو.
  • اتصال پایه OUT سنسور به یک پین ورودی دیجیتال (پین ۲) آردوینو.

اتصالات سنسور PIR


اتصال سنسور تشخیص حرکت PIR به برد های آردوینو و یا سری ESP8266 به صورت زیر است. سنسور pir مدل‌های sr501 و sr505 هر دو به همین صورت قابل اتصال هستند.


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


این نمونه کد از پیشفرض‌های معرفی شده برای آردوینو است. شیوه‌ی کلی برنامه این گونه است که ابتدا ماژول به مدت ۱۰ ثانیه با محیط اطرف خود کالیبره می‌شود. سپس وضعیت پین OUT که به پایه شماره ۲ آردوینو متصل شده است را بررسی می‌کنیم. اگر این پین در وضعیت HIGH قرار گیرد بدین معنی است که حرکتی رخ داده است. برای بررسی این پایه کافیست سریال مانیتور آردوینو را باز کرده و اطلاعات دریافتی را برررسی کنید.

/*
 Arduino with PIR motion sensor
*/

int led = 13; // the pin that the LED is atteched to
int sensor = 2; // the pin that the sensor is atteched to
int state = LOW; // by default, no motion detected
int val = 0; // variable to store the sensor status (value)

void setup() {
 pinMode(led, OUTPUT); // initalize LED as an output
 pinMode(sensor, INPUT); // initialize sensor as an input
 Serial.begin(9600); // initialize serial
}

void loop(){
 val = digitalRead(sensor); // read sensor value
 if (val == HIGH) { // check if the sensor is HIGH
 digitalWrite(led, HIGH); // turn LED ON
 delay(100); // delay 100 milliseconds

 if (state == LOW) {
 Serial.println("Motion detected!");
 state = HIGH; // update variable state to HIGH
 }
 }
 else {
 digitalWrite(led, LOW); // turn LED OFF
 delay(200); // delay 200 milliseconds

 if (state == HIGH){
 Serial.println("Motion stopped!");
 state = LOW; // update variable state to LOW
 }
 }
}

لوازم مورد نیاز


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

برد آردوینو Arduino UNO


دیگر آموزش‌های مرتبط با سنسور PIR


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

طراحی و پیاده سازی سنسور راه پله هوشمند بدون آردوینو و برنامه نویسی

طراحی و پیاده سازی سیستم هشدار قطعی برق آسانسور در زمان حضور انسان

پروژه‌ی سیستم تشخیص حرکت انسان با میکروپایتون و رزبری پای پیکو

آموزش ساخت دوربین مخفی امنیتی با برد ESP32-Cam و سنسور PIR

پروژه راه اندازی سنسور PIR با برد رزبری پای پیکو Pico و Thonny Python

طراحی و پیاده سازی سیستم خوش آمدگویی به کمک آردوینو و DFPLAYER

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

در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.

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

اروند طباطبایی

بنیانگذار دیجی اسپارک: اولین مرجع تخصصی امبدد سیستم به زبان فارسی / کارشناس سئو و تولید محتوا

هرچه می آموزم میبینم که خیلی کم آموختم. علاقه به رباتیک و تکنولوژی دارم. امیدوارم بتونم دانشی را که آموخته‌ام، به روش‌های مختلفی به کاربران علاقمند منتقل کنم.

تبادل نظر و رفع عیب با ثبت دیدگاه

۵۱ دیدگاه

  • ببخشید با استفاده از این سنسور آیا حرکت اجسام هم قابل مشاهده هست ؟؟ یا فقط بدن انسان را بخاطر حرارت تشخیص میدهد؟ با تشکر

  • سلام ایا من میتوانم از این ماژول روی برد اردوینو مگا ۲۵۶۰ استفاده کنم یا خیر .
    در کل تفاوت برد مگا با اونو چیست؟

  • […] نوشته اصلی توسط payam سلام دوستان ، میخواستم بدونم ماژول سنسور حرکت مادون قرمز hc-sr501 فقط حرکت بدن انسان یا هر شی که دمای بخوصصوی داره رو تشخیص میده؟؟ یعنی مثلا اگر یک دری جابجا بشه تشخیص نمیده؟ راستی میخوساتم بدونم فرق این سنسور از نظر عملکرد با سنسور تشخیص حرکت مادون قرمز EL-55 در چیست ؟ لینک زیر شاید بتونه کمکتون کنه آموزش راه اندازی ماژول تشخیص حرکت hc sr501 با استفاده از آر… […]

  • من میخوام با استفاده از این ماژول یه مداری بسازم که وقتی حرکتی بود دزدگیر به صدا در بیاد تو محیط code vision
    چطوری میتونم برنامه اش رو بنویسم؟

    • با سلام و تشکر از توجه شما
      در حال حاضر موارد برای Code vision در سایت منتشر نشده است. از دیگر کاربران که در این خصوص تخصص دارند، تقاضا دارم تا در این بحث شرکت کنند.

  • با سلام و تشکر از آموزشتون
    می‌خواستم بدونم که میشه این ماژول رو به Raspberry Pi متصل کرد؟
    اگه نه یه توضیح مختصر و اگه آره بازم یه توضیح مختصر بدین که چرا و چگونه!!!
    ممنون

    • سلام می توان بردش را تغییر داد و لی نمیتوان به طور دقیق این کار را انجام داد

  • اگه بخواهیم که این سنسور فقط به حرارت بدن انسان حساس باشه باید چیکار کرد؟
    آیای سنسور دیگه ای هست که این کار رو انجام بده؟

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

    • با سلام
      ضمن تشکر از توجه شما، بله چنین سنسوری وجود دارد، که دارای سنسور حرارتی دقیق‌تری هستند.

  • سلام.
    تو این سناریو اینجوریه که تعریف میکنیم “اگه حرکتی دیده شد, کاری انجام بده(مثلا چراغ روشن شه). و با یک تاخیر چراغ خاموش بشه” ممکنه دراین زمان همچنان حرکت باشد,
    چطور میشه تعریف کرد که ” تا زمانیکه حرکت هست, چراغ روشن بمونه و بعد از رفتن جسم یا انسان, بعد از زمان مشخصی, چراغ خاموش شه”
    با تشکر

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

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

      • سلام
        اتفاقا بنده خوشحال میشوم تا پروژ] هامو با شما به اشتراک بزارم
        بنده شغلمم برنامه نویسی تحت وب هستش . و با وردپرس هم اشنایی کاملی دارم
        الان دارم پروژه ی iot ای مینویسم و تو قسمتیش به مشکل خوردم
        میخوام سنسور تشخیص جرکت اضافه کنم به این کدهام ولی هرکاری میکنم درست کار نمیکند
        https://1drv.ms/u/s!Ahl0PabGfqIru3KRYUBmO7i-9hWf
        لینک کد
        ممنون میشم کمک کنید

  • سلام.
    من این سنسور رو راه اندازی کردم.و با آردوینو و ماژول سیمکارت خور a6 ترکیب کردم و یه دزدگیر ساختم.فقط تنها مشکلی که دارم اینه که ماژول بعضا اشتباه تشخیص میده.یعنی با اینکه کسی از جلوش رد نمیشه ،ماژول اشتباهی حرکت تشخیص میده و اس ام اس میاد برام.شاید در عرض ۳/۴ ساعت ۲۰ بار اشتباه تشخیص داد.به نظرتون میشه این مشکل رو حل کرد؟

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

      • در خصوص انتشار پروژه با کمال میل این کار رو انجام میدم.
        و امام مشکل بنده:
        یکی از پتانسیومتر ها که Delay هست فکر نکنم مرتبط باشه.ولی اون یکی که حساسیت رو تنظیم میکنه رو خیلی دستکاری کردم ولی نتیجه ای نداد.
        بعضی از سایت ها پیشنهاد داده بودن که از مقاومت PullUp استفاده بشه .اون رو هم امتحان کردم ولی جواب نداد.

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

        • سلام، این مشکل میتونه چندین دلیل داشته باشه.

          اولا توجه داشته باشید که اگر از آردویینویی استفاده میکنین که در اون از میکروکنترلر avr استفاده شده، میکروکنترلر ساختار cmos داره و در ساختار cmos با ولتاژ تغذیه ۵ ولت، ورودی یک منطقی از ۳٫۵ ولت الی ۵ ولت در نظر گرفته میشه و ولتاژهای مابین ۱٫۵ ولت الی ۳٫۵ به عنوان ناحیه گذار یا حاشیه نویز در نظر گرفته میشن و هر ولتاژی که در این بازه به آردویینو داده بشه، آردویینو به صورت تصادفی ۰ و یک منطقی تولید میکنه . خروجی سنسور تشخیص حرکت هم ۳٫۳ ولت هست که تو ناحیه گذار یا حاشیه نویز میکروکنترلر برد آردویینو قرار میگیره. برای رفع این مشکل یا می بایست از آی سی های تغییر سطح ولتاژ استفاده کنین یا از راه ساده تری مثل اندازی گیری ولتاژ سنسور توسط واحد آنالوگ به دیجتال داخلی برد آردویینو استفاده کنین.

          مورد بعدی، نویز الکترومغناطیسی یا emi منتشر شده توسط ماژول gsm هست. برای رفع این مشکل باید این نویز رو کم اثر یا به طور کامل برطرف کرد. برای این منظور می بایست ماژول مخابراتی رو خاموش کنین تا اثر نویزش بر سنسور تشخیص حرکت تاثیر نذاره، سپس وقتی که حرکت تشخیص داده شده، ماژول مخابراتی رو روشن کنین و اس ام اس بفرستین. برای خاموش کردن ماژول هم میشه از روش نرم افزاری استفاده کرد و یک روش سخت افزاری..

          در روش نرم افزاری ابتدا ماژول رو با دستور at+cfun=0 خاموش کنین، سپس هر وقت که حرکتی تشخیص دادین ماژول رو با دستور at+cfun=1 روشن کنین و به مدت یک دقیقه صبر کنین تا به شبکه متصل بشه و بعد و پیامک بفرستین

          در روش سخت افزاری می بایست ماژول را با یک ترانزیستور خاموش کنین و بعد زمانیکه که حرکت تشخیص داده شده، ماژول رو روشن کنین و پیامک بفرستین

          در این روش بهتره از یک ترانزیستور ماسفت با شماره irf840 استفاده کنین و ماسفت رو به صورت open drain قرار بدین. بدین صورت که ابتدا یکی از پایه های آردویینو رو به صورت خروجی تعریف کنین، سپس پایه گیت ماسفت رو به پایه ای از اردویینو که به صورت خروجی تعریف کردید، متصل کنین، اتصال زمین ماژول مخابراتی رو از زمین مشترک مدار جدا کنین، پایه درین ماسفت رو به زمین ماژول مخابراتی یا همون gnd متصل کنین و پایه سورس ماسفت رو به زمین مشترک مدار متصل کنین، یه مقاومت ۱۰ کیلو هم از پایه خروجی آردویینو که به گیت ماسفت متصل هست به صورت پول دان کنین. در این حالت در ابتدا وضعیت پایه خروجی رو در حالت صفر قرار بدید، سپس بعد از اینکه حرکت تشخیص داده شده پایه رو یک کنین که با این کار ماژول روشن میشه، سپس به مدت تقریبا یک دقیقا صبر کنین و بعد پیامک رو ارسال کنین.

  • با سلام
    لطف کنید اگر زحمت میکشید یک آموزش میزارید یا به صورت کامل باشه که همه استفاده کنند یا اصلا از گذاشتنش خودداری بفرمایید.

  • سلام و احترام
    من در خصوص این ماژول یه مشکل اساسی دارم.

    مشکل اینجاست که این ماژول رو تهیه کردیم اما وقتی خروجی سنسور sr501 رو به ورودی ماژول رله ۵ ولت تک کانال متصل میکنیم، رله به صورت دائمی فعال است.

    تقریبا تمام امروز رو با اون پتانسیومتر ها کار کردم و دستکاری کردم. اما نشد. خروجی سنسور sr501 به محض اینکه ماژول به ولثاژ ۵ ولت متصل میشه ثابت ۳٫۳ ولت میمونه و دقیقا همین مشکل رو با sr505 هم داریم.

    کسی میتونه من رو راهنمایی کنه؟

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

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