آموزش Espآموزش ESP32آموزش اینترنت اشیاپروژه های Esp

اتصال سنسور حرکت PIR HC-SR501 به ESP32

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

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

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

یک سنسور PIR از دو بخش اساسی تشکیل شده است.

  1. یک سنسور پیروالکتریک که میتوانید آن را در تصویر پایین مشاهده کنید. این سنسور گرد است و یک کریستال مستطیلی شکل در وسط آن قرار گرفته است.
  2. یک لنز مخصوص به نام لنز فرنل یا لنز فرنزل که سیگنال های مادون قرمز را روی سنسور پیروالکتریک متمرکز میکند.

سنسور پیروالکتریک

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

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

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

لنزهای فرنل

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

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

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

پین اوت ماژول سنسور تشخیص حرکت HC-SR501 PIR

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

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

VCC : این پایه، پایه تغذیه ماژول است. این پایه ورودی 4.5 ولت تا 12 ولت را پشتیبانی میکند ولی معمولا برای تغذیه سنسور PIR از 5 ولت استفاده میکنیم.

Out : این پایه، پایه خروجی ماژول سنسور PIR است و سطح منطقی 3.3 ولت دارد پس هنگامی که حرکت تشخیص داده میشود، HIGH شده و هنگامی که حرکتی تشخیص داده نشده، LOW میشود.

GND : این پایه، پایه زمین ماژول است که باید به زمین تغذیه مدار متصل شود.

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

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

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

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

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

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

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

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

  1. مد تریگر تکی : حرکت پیوسته تنها باعث یک تریگر میشود.
  2. مد تریگر تکراری : حرکت پیوسته باعث مجموعه ای از تریگرها میشود.

L : با این نوع تنظیم، سنسور در مد تریگر تکی است. در این مد کاری، هنگامی که حرکت تشخیص داده شد، خروجی HIGH شده و برای مدت زمانی نیز HIGH باقی میماند. این بازه زمانی توسط پتانسیومتر تاخیر زمانی تعیین میشود. سنسور تا هنگامی که خروجی LOW نشده، حرکت دیگری را تشخیص نمیدهد.

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

تنظیمات حساسیت

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

تنظیم تاخیر زمانی

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

RT و RL (ترمیستور و LDR)

سنسور HC-SR501 دارای دو قسمت اختیاری برای لحیم کاری قطعات اضافی است که معمولا به صورت RL و RT مشخص میشوند.

RT برای ترمیستورهای اضافی یا مقاومت حساس به دماست. با اضافه کردن این بخش، HC-SR501 میتواند تا دماهای فوق العاده بالا نیز کار کند. این کار همچنین دقت آشکارساز را افزایش میدهد.

RL برای اتصال مقاومت های نوری است. افزودن این قطعه باعث کارکردن سنسور HC-SR501 در تاریکی میشود.

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

این ماژول درون خود یک رگولاتور 3.3 ولتی دارد تا بتواند با منبع تغذیه 4.5 تا 12 ولت نیز روشن شود. هرچند که معمولا از ولتاژ 5 ولت استفاده میشود.

دیود حفاظت

این ماژول یک دیود حفاظت دارد که مدار را از ولتاژ و جریان معکوس حفظ میکند.

مدار اتصال سنسور HC-SR501 PIR و ESP32

حال که دید واضحی درباره نحوه عملکرد سنسور PIR داریم، وقت آن است که تمام اتصالات لازم را به ESP32 انجام دهیم. اتصال سنسور PIR به ESP32 کار ساده ایست. شما باید پایه های تغذیه را به پایه 5V و پایه ESP32 GND متصل کنید. ولتاژ کاری سنسور PIR از 4.5 تا 12 ولت است پس ضروری است که سنسور را از طریق پایه +5V میکروکنترلر روشن کنیم.

مدار اتصال سنسور HC-SR501 PIR و ESP32

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

1-چگونه حساسیت سنسور را تنظیم کنیم؟

شما میتوانید از ولوم یا دکمه تنظیم حساسیت این سنسور استفاده کنید. این دکمه فاصله ای که سنسور میتواند تا آنجا، حرکت را تشخیص دهد، مشخص میکند و میتواند بین 3 تا 7 متر تغییر کند.

2-معایب سنسور PIR چیست؟

این سنسور نسبت به سنسورهای مایکروویو حساسیت کمتر و پوشش کمتری دارد. در دمای بالا 35 درجه سلسیوس کار نمیکند. هم چنین در امتداد خط دید خود (LOS) به خوبی عمل کرده اما در دیدن گوشه ها به مشکلاتی برمیخورد. نسبت به حرکت های بسیار آرام اجسام حساس نیست و آن ها را شناسایی نمیکند.

3-چرا بعضی از سنسورهای PIR کار نمیکنند؟

دلیل اصلی از کار نکردن سنسور، معیوب بودن آن است. در مواردی ممکن است لنز سنسور PIR پوشیده شده باشد یا برای مثال پلاستیک داخلی لنز جابه جا شده باشد. سیم های دورن سنسور شل شده باشند یا اتصالات از ابتدا با مشکل همراه بوده و به درستی انجام نشده باشد.

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

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

کدمان را با تعریف کردن تمام متغیرهای لازم شروع میکنیم. متغیرهای ما ledPin  ( که پایه متصل به LED است) و inputPin ( که متصل به سنسور مادون قرمز است) هستند.

int ledPin = 25;      // choose the pin for the LED
int inputPin = 26;     // choose the input pin (for PIR sensor)

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

void setup() {
  pinMode(ledPin, OUTPUT);      // declare LED as output
  pinMode(inputPin, INPUT);     // declare sensor as input
  Serial.begin(9600);
}

در ادامه تابع loop را داریم. در تابع ()void loop ، داده را از پایه متصل به سنسور خوانده و وضعیت HIGH یا LOW بودن آن را بررسی میکنیم. اگر پایه HIGH باشد، LED راروشن کرده و پیام “حرکتی تشخیص داده شد” را در سریال مانیتور چاپ میکنیم.

 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، پایه را LOW کرده و LED متصل به پایه سنسور را خاموش میکنیم. پیام پایان تشخیص حرکت را هم در سریال مانیتور چاپ میکنیم.

else {
    digitalWrite(ledPin, LOW);
    if (pirState == HIGH) {
      Serial.println("Motion Detection ended!"); 
      pirState = LOW;
    }
  }
}

عملکرد ماژول HC-SR501 با ESP32

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

عیب یابی ماژول سنسور HC-SR501

ممکن است چند دلیل برای اینکه سنسور PIR به درستی کار نمیکند، وجود داشته باشد. لازم با انجام چند آزمایش دلیل اصلی را بیابید.

  1. ولتاژ کاری سنسور بین 4.8 تا 20 ولت است، پس اگر آن را با ولتاژ 3.3 ولت تغذیه کنیم، کار نمیکند.
  2. در بعضی موارد نیاز است که لنز روی سنسور را از گرد و غبار پاک کنید.
  3. در بعضی موارد باید گرد و غبار از درون لنز سنسور تمیز شوند.
  4. اگر سنسور با هیچ کدام از روش های بالا کار نکرد، پتانسیومتر را بچرخانید. ممکن است تنظیم شدن حساسیت سنسور روی کمترین مقدارش عامل کارنکردن سنسور باشد.
  5. اگر بعد از امتحان کردن تمام روش های بالا باز هم سنسور کار نکرد، مطمئن باشید که سنسور شما معیوب است.

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

نظر خود را اعلام کنید

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

محمد رحیمی

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

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

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