ESP32 کے ساتھ مائیکرو پیتھون اور تھونی IDE کا استعمال کرتے ہوئے PIR موشن سینسر

Esp32 K Sat Mayykrw Pyt Wn Awr T Wny Ide Ka Ast Mal Krt Wy Pir Mwshn Synsr



ESP32 مختلف سینسر کو کنٹرول کرنے اور پڑھنے کے لیے متعدد بیرونی آلات کو انٹرفیس کر سکتا ہے۔ PIR یا موشن سینسر ان مثالوں میں سے ایک ہے جسے ہم ESP32 کے ساتھ انٹرفیس کر سکتے ہیں تاکہ ESP32 کا استعمال کرتے ہوئے PIR سینسر کی ایک مخصوص رینج میں حرکت کا پتہ لگایا جا سکے۔

اس سے پہلے کہ ہم PIR سینسر کے ساتھ ESP32 کو انٹرفیس کرنا شروع کریں ہمیں یہ جاننا چاہیے کہ رکاوٹیں کیسے کام کرتی ہیں اور انہیں ESP32 میں کیسے پڑھنا اور ہینڈل کرنا ہے۔ آئیے ESP32 کے ساتھ PIR کے کام پر تفصیل سے بات کرتے ہیں۔

اس مضمون کا مواد یہ ہے:







1: رکاوٹیں کیا ہیں؟



1.1: ESP32 میں پنوں کو روکتا ہے۔



2: ESP32 میں مداخلت کو کال کرنا - مائیکرو پائتھون





3: ESP32 کے ساتھ PIR سینسر کا انٹرفیس کرنا - MicroPython

3.1: PIR موشن سینسر (HC-SR501)



3.2: پن آؤٹ HC-SR501

3.3: کوڈ

3.4: آؤٹ پٹ

1: رکاوٹیں کیا ہیں؟

ESP32 پروگرامنگ میں ہونے والے زیادہ تر واقعات ترتیب وار چلتے ہیں جس کا مطلب ہے کوڈ کی لائن بہ لائن عملدرآمد۔ ان واقعات کو ہینڈل اور کنٹرول کرنے کے لیے جنہیں کوڈ این کے ترتیب وار عمل کے دوران چلانے کی ضرورت نہیں ہے۔ مداخلت کرتا ہے۔ استعمال کیا جاتا ہے.

مثال کے طور پر، اگر ہم کسی خاص کام کو انجام دینا چاہتے ہیں جب کوئی خاص واقعہ پیش آتا ہے، یا مائکرو کنٹرولر کے ڈیجیٹل پنوں کو ٹرگر سگنل دیا جاتا ہے تو ہم انٹرپٹ کا استعمال کرتے ہیں۔

رکاوٹ کے ساتھ ہمیں ESP32 ان پٹ پن کی ڈیجیٹل حالت کو مسلسل چیک کرنے کی ضرورت نہیں ہے۔ جب کوئی مداخلت ہوتی ہے تو پروسیسر مرکزی پروگرام کو روک دیتا ہے، اور ایک نیا فنکشن کہا جاتا ہے جسے ISR کے نام سے جانا جاتا ہے ( سروس روٹین میں خلل ڈالنا )۔ یہ آئی ایس آر فنکشن اس رکاوٹ کو سنبھالتا ہے جس کے بعد مین پروگرام پر واپس لوٹنا اور اس پر عمل کرنا شروع کرنا۔ ISR کی مثالوں میں سے ایک PIR موشن سینسر ہے جو حرکت کا پتہ چلنے کے بعد ایک رکاوٹ پیدا کرتا ہے۔

1.1: ESP32 میں پنوں کو روکتا ہے۔

کسی بھی ہارڈویئر ماڈیول جیسے ٹچ سینسر یا پش بٹن کی وجہ سے بیرونی یا ہارڈ ویئر میں خلل پڑ سکتا ہے۔ ٹچ انٹرپٹ اس وقت ہوتا ہے جب ESP32 پنوں پر ٹچ کا پتہ چلتا ہے یا GPIO انٹرپٹ بھی استعمال کیا جا سکتا ہے جب کوئی کلید یا پش بٹن دبایا جاتا ہے۔

اس آرٹیکل میں جب ESP32 کے ساتھ PIR سینسر کا استعمال کرتے ہوئے حرکت کا پتہ چل جائے گا تو ہم ایک رکاوٹ کو متحرک کریں گے۔

6 SPI مربوط پنوں کے علاوہ تقریباً تمام GPIO پن جو عام طور پر میں آتے ہیں۔ 36 ESP32 بورڈ کا پن ورژن انٹرپٹ کالنگ کے مقصد کے لیے استعمال نہیں کیا جا سکتا۔ لہذا، بیرونی مداخلت کو حاصل کرنے کے لیے درج ذیل پنز ہیں جو آپ ESP32 میں استعمال کر سکتے ہیں:

2: مائیکرو پائتھون کا استعمال کرتے ہوئے ESP32 میں مداخلت کو کال کرنا

مائیکرو پائتھون کوڈ کا استعمال کرتے ہوئے PIR سینسر کے ساتھ ESP32 بورڈ کو پروگرام کرنے کے لیے۔ ہمیں ایک انٹرپٹ فنکشن کی وضاحت کرنی ہوگی۔ ذیل میں کچھ آسان اقدامات ہیں جو ESP32 بورڈ کے لیے رکاوٹ کی وضاحت میں مدد کرتے ہیں۔

مرحلہ 1: انٹرپٹ ہینڈلنگ فنکشن شروع کریں: انٹرپٹ ہینڈلنگ فنکشن کو آسان طریقے سے بیان کیا جانا چاہئے تاکہ یہ تیزی سے کام کر سکے اور جلد از جلد مرکزی پروگرام میں واپس آ سکے۔ یہ ایک عالمی متغیر کی وضاحت کر کے کیا جا سکتا ہے تاکہ اسے کال کرنے پر کوڈ کے اندر کہیں بھی رسائی حاصل کی جا سکے۔

یہاں PIR سینسر کی صورت میں ہم GPIO پن کو بطور a استعمال کریں گے۔ عالمی متغیر انٹرپٹ فنکشن ایک پن کو بطور دلیل لے گا اور GPIO پن کی وضاحت کرے گا جس کی وجہ سے انٹرپٹ فنکشن ہوتا ہے۔

def handle_interrupt ( پن ) :

مرحلہ 2: مداخلت کے لیے GPIO پن سیٹ اپ کریں: GPIO پن کی قدر حاصل کرنے کے لیے ہمیں ایک آبجیکٹ بنانے کی ضرورت ہے جو اس سے ان پٹ لے گی۔ Pin.IN ہماری پن کلاس کے اندر دوسری دلیل کے طور پر۔ ہم کسی دوسرے کے ساتھ اس کا نام تبدیل کر سکتے ہیں.

پن = پن ( 13 , پن۔ میں )

مرحلہ 3: irq() طریقہ استعمال کرتے ہوئے PIR سینسر کے لیے GPIO پن سے انٹرپٹ منسلک کریں:

نیچے دی گئی کمانڈ کا استعمال کرتے ہوئے، ہم انٹرپٹ کو ایک پن پر سیٹ کر سکتے ہیں جس کی وضاحت ہم نے پہلے کی تھی۔

پل. irq ( محرک = پن۔ IRQ_RISING , ہینڈلر = ہینڈل_انٹرپٹ )

دی irq() مداخلت کو پن سے جوڑنے کے لیے طریقہ استعمال کیا جاتا ہے۔ irq() دو مختلف دلائل کو قبول کرتا ہے:

  • محرک
  • ہینڈلر

محرک: یہ دلیل محرک کے موڈ کی وضاحت کرتی ہے۔ مندرجہ ذیل تین طریقے ہیں:

  • Pin.IRQ_FALLING: جب پن HIGH سے LOW میں تبدیل ہوتا ہے تو ایک رکاوٹ شروع ہو جاتی ہے۔
  • Pin.IRQ_RISING: پن کے LOW سے HIGH میں منتقلی پر، ایک رکاوٹ شروع ہو جاتی ہے۔
  • Pin.IRQ_FALLING|Pin.IRQ_RISING: جب بھی پن اپنی حالت بدلتا ہے تو مداخلت کو متحرک کریں۔ یا تو پن ہائی یا لو پر جاتا ہے۔

ہینڈلر: اس فنکشن کو ایک بار مداخلت شروع ہونے پر بلایا جائے گا۔

3: ESP32 کے ساتھ PIR سینسر کو انٹرفیس کرنا

جیسا کہ اب ہم نے مائیکرو پائتھون کا استعمال کرتے ہوئے ESP32 کے ساتھ مداخلت کے تصورات کا احاطہ کیا ہے اب ہم PIR سینسر کو ESP32 کے ساتھ انٹرفیس کریں گے۔ یہاں ہم استعمال کریں گے۔ پن۔IRQ_RISING PIR سینسر کے لیے MicroPython کوڈ میں موڈ کیونکہ جب بھی PIR سینسر کسی حرکت کا پتہ لگاتا ہے تو ہم LED کو متحرک کرنا چاہتے ہیں۔ یہ ایل ای ڈی ایک مقررہ وقت تک آن رہے گی پھر بند ہو جاتی ہے۔

مندرجہ ذیل اجزاء کی ضرورت ہوگی:

  • ESP32 ترقیاتی بورڈ
  • PIR موشن سینسر (HC-SR501)
  • 220 اوہم ریزسٹر
  • جمپر کی تاریں۔
  • بریڈ بورڈ
  • ایل. ای. ڈی

منصوبہ بندی ESP32 کے ساتھ PIR سینسر کے لیے:

PIR سینسر کے ساتھ ESP32 کی پن کنفیگریشن ہے:

  ٹیبل کی تفصیل خود بخود تیار ہو گئی۔

3.1: PIR موشن سینسر (HC-SR501)

PIR کا مخفف ہے۔ غیر فعال اورکت سینسر . دو پائرو الیکٹرک سینسرز ایک ساتھ استعمال ہوتے ہیں جو اس کے گردونواح میں گرمی کی مقدار کا پتہ لگائیں گے۔ یہ دونوں پائرو الیکٹرک سینسرز ایک کے بعد ایک جھوٹ بولتے ہیں اور جب کوئی چیز ان کی رینج کے اندر آتی ہے تو حرارت کی توانائی میں تبدیلی یا ان دونوں سینسر کے درمیان سگنل کا فرق PIR سینسر کی پیداوار کو کم کرنے کا سبب بنتا ہے۔ ایک بار جب PIR آؤٹ پن کم ہو جاتا ہے، تو ہم عمل کرنے کے لیے ایک مخصوص ہدایات مقرر کر سکتے ہیں (LED blink)۔

  خاکہ کی تفصیل خود بخود تیار ہو گئی۔

مندرجہ ذیل پی آئی آر سینسر کی خصوصیات ہیں:

  • حساسیت کو پروجیکٹ کے محل وقوع کے لحاظ سے سیٹ کیا جا سکتا ہے (جیسے ماؤس یا پتوں کی حرکت کو سینس کرنا)
  • پی آئی آر سینسر کو اس بات کے لیے سیٹ کیا جا سکتا ہے کہ یہ کسی چیز کا پتہ لگانے کے لیے کتنی دیر تک
  • بڑے پیمانے پر گھریلو سیکورٹی کے الارم اور دیگر تھرمل پر مبنی تحریک کا پتہ لگانے والے ایپلی کیشنز میں استعمال کیا جاتا ہے.

3.2: پن آؤٹ HC-SR501

PIR HC-SR501 تین پنوں کے ساتھ آتا ہے۔ ان میں سے دو Vcc اور GND کے لیے پاور پن ہیں اور ایک ٹرگر سگنل کے لیے آؤٹ پٹ پن ہے۔

PIR سینسر پنوں کی تفصیل درج ذیل ہے:

پن نام تفصیل
1 وی سی سی سینسر کے لیے ان پٹ پن ESP32 Vin پن سے جڑیں۔
دو باہر سینسر آؤٹ پٹ
3 جی این ڈی سینسر GND

3.3: کوڈ

اب پروگرام ESP32 کے لیے Thonny IDE ایڈیٹر یا کسی اور MicroPython IDE میں دیا گیا کوڈ لکھیں اور اسے ESP32 پر اپ لوڈ کریں۔

مشین درآمد پن سے
سے وقت نیند درآمد کریں
تحریک = جھوٹا۔
def handle_interrupt ( پن ) :
عالمی تحریک
تحریک = سچ ہے۔
عالمی مداخلت_پن
interrupt_pin = پن
ایل. ای. ڈی = پن ( 4 , پن۔ باہر )
پل = پن ( 13 , پن۔ میں )
پل. irq ( محرک = پن۔ IRQ_RISING , ہینڈلر = ہینڈل_انٹرپٹ )
جبکہ سچ ہے۔ :
اگر تحریک :
پرنٹ کریں ( 'حرکت کا پتہ چلا' )
ایل. ای. ڈی. قدر ( 1 )
سونا ( 5 )
ایل. ای. ڈی. قدر ( 0 )
پرنٹ کریں ( 'حرکت روک دی گئی' )
تحریک = جھوٹا۔

سب سے پہلے، ہم نے درآمد کیا پن مشین ماڈیول سے کلاس اور سونا تاخیر شامل کرنے کا طریقہ۔ اس کے بعد نام کے ساتھ ایک متغیر بنایا جاتا ہے۔ تحریک یہ متغیر اس بات کا پتہ لگائے گا کہ آیا حرکت کا پتہ چلا ہے یا نہیں۔

پھر ہم نے ایک فنکشن بنایا ہینڈل_انٹرپٹ جب بھی PIR سینسر حرکت کا پتہ لگاتا ہے، یہ فنکشن فعال ہو جائے گا۔ یہ ایک ان پٹ پیرامیٹر کے طور پر ایک پن لیتا ہے اور پن کی نشاندہی کرتا ہے جس کی وجہ سے رکاوٹ واقع ہوتی ہے۔

آسان الفاظ میں جب بھی PIR حرکت کا پتہ لگاتا ہے، ہینڈل_انٹرپٹ موشن متغیر کو درست پر سیٹ کرے گا اور پن کو اسٹور کرے گا جس کی وجہ سے مداخلت ہوتی ہے۔ ایک بات یاد رکھیں ہمیشہ اعلان کرتا ہے تحریک عالمی طور پر متغیر کیونکہ پورے کوڈ میں اس کی ضرورت ہے۔

آگے بڑھتے ہوئے ہم نے دو پن آبجیکٹ بنائے، ایک ایل ای ڈی پن کو ذخیرہ کرنے کے لیے اور دوسرا GPIO پن 13 پر PIR سینسر آؤٹ پٹ لے گا۔ مزید ہم نے ٹرگر پن کا اعلان کیا۔ بڑھتی ہوئی موڈ

میں لوپ کوڈ کا حصہ، یہ حرکت متغیر کی قدر کی جانچ کرے گا جب یہ درست ہو جائے گا تو LED ESP32 کے پن 4 پر منسلک ہو جائے گی۔ اگر حرکت بند ہو جائے تو LED 5 سیکنڈ کے بعد بند ہو جائے گی۔

3.4: آؤٹ پٹ

آؤٹ پٹ سیکشن میں ہم دیکھ سکتے ہیں کہ آبجیکٹ PIR سینسر کی حد سے باہر ہے، لہذا ایل. ای. ڈی بدل گیا ہے بند .

اب پی آئی آر سینسر ایل ای ڈی کے ذریعہ پائی جانے والی حرکت بدل جائے گی۔ آن کے لیے 5 سیکنڈ اس کے بعد اگر کوئی حرکت نہیں پائی جاتی ہے تو یہ باقی رہے گی۔ بند جب تک کہ اگلا ٹرگر موصول نہ ہو جائے۔

مندرجہ ذیل آؤٹ پٹ کے ذریعہ دکھایا گیا ہے۔ شیل/ٹرمینل تھونی IDE میں۔

  گرافیکل یوزر انٹرفیس، ٹیکسٹ، ایپلیکیشن کی تفصیل خود بخود تیار ہوتی ہے۔

نتیجہ

ESP32 والا PIR سینسر مختلف چیزوں کی حرکت کا پتہ لگانے میں مدد کر سکتا ہے۔ ESP32 کے ساتھ MicroPython میں interrupt فنکشن کا استعمال کرتے ہوئے ہم کچھ مخصوص GPIO پن پر ردعمل کو متحرک کر سکتے ہیں۔ جب تبدیلی کا پتہ چل جائے گا تو انٹرپٹ فنکشن شروع ہو جائے گا اور ایک ایل ای ڈی آن ہو جائے گی۔