مستشعر حركة PIR مع ESP32 باستخدام MicroPython و Thonny IDE

Mstsh R Hrkt Pir M Esp32 Bastkhdam Micropython W Thonny Ide



يمكن لـ ESP32 واجهة العديد من الأجهزة الخارجية للتحكم في أجهزة الاستشعار المختلفة وقراءتها. يعد PIR أو مستشعر الحركة أحد الأمثلة التي يمكننا التفاعل مع ESP32 لاكتشاف الحركة في نطاق معين من مستشعر PIR باستخدام ESP32.

قبل أن نبدأ في ربط ESP32 بمستشعر PIR ، يجب أن نعرف كيفية عمل المقاطعات وكيفية قراءتها والتعامل معها في ESP32. دعونا نناقش عمل PIR مع ESP32 بالتفصيل.

هذا هو محتوى هذا المقال:







1: ما هي المقاطعات



1.1: مقاطعات الدبابيس في ESP32



2: استدعاء مقاطعة في ESP32 - MicroPython





3: واجهة مستشعر PIR مع ESP32 - MicroPython

3.1: مستشعر حركة PIR (HC-SR501)



3.2: Pinout HC-SR501

3.3: كود

3.4: الإخراج

1: ما هي المقاطعات

تعمل معظم الأحداث التي تحدث في برمجة ESP32 بالتتابع مما يعني تنفيذ التعليمات البرمجية سطريًا. للتعامل مع الأحداث التي لا تحتاج إلى تشغيلها أثناء التنفيذ المتسلسل للكود والتحكم فيها المقاطعات يستخدم.

على سبيل المثال ، إذا أردنا تنفيذ مهمة معينة عند حدوث أي حدث خاص ، أو إذا تم إعطاء إشارة تشغيل إلى المسامير الرقمية الخاصة بالمتحكم الدقيق ، فإننا نستخدم المقاطعة.

مع المقاطعة ، لا نحتاج إلى التحقق باستمرار من الحالة الرقمية لدبوس إدخال ESP32. عند حدوث مقاطعة ، يوقف المعالج البرنامج الرئيسي ، وتسمى وظيفة جديدة تعرف باسم ISR ( يقطع خدمة روتينية ). هذه ISR تعالج الوظيفة المقاطعة الناتجة بعد ذلك تعود إلى البرنامج الرئيسي وتبدأ في تنفيذه. أحد أمثلة ISR هو مستشعر الحركة PIR الذي يولد مقاطعة بمجرد اكتشاف الحركة.

1.1: مقاطعات الدبابيس في ESP32

يمكن أن تحدث مقاطعة خارجية أو مقاطعة بسبب أي وحدة أجهزة مثل مستشعر اللمس أو زر الضغط. تحدث مقاطعات اللمس عند اكتشاف لمسة في دبابيس ESP32 أو يمكن أيضًا استخدام مقاطعة GPIO عند الضغط على مفتاح أو زر ضغط.

في هذه المقالة سنقوم بتشغيل مقاطعة عند اكتشاف الحركة باستخدام مستشعر PIR مع ESP32.

تقريبًا جميع دبابيس GPIO باستثناء 6 دبابيس SPI مدمجة والتي تأتي عادةً في 36 لا يمكن استخدام إصدار دبوس من لوحة ESP32 لغرض مقاطعة الاتصال. لذلك ، لتلقي المقاطعة الخارجية ، فيما يلي الدبابيس التي يمكن للمرء استخدامها في ESP32:

2: استدعاء مقاطعة في ESP32 باستخدام MicroPython

لبرمجة لوحة ESP32 مع مستشعر PIR باستخدام كود MicroPython. علينا تحديد وظيفة المقاطعة. فيما يلي بعض الخطوات البسيطة التي تساعد في تحديد مقاطعة للوحة ESP32.

الخطوة 1: تهيئة وظيفة معالجة المقاطعة: يجب تحديد وظيفة معالجة المقاطعة بطريقة سهلة بحيث يمكن تنفيذها بسرعة والعودة إلى البرنامج الرئيسي في أسرع وقت ممكن. يمكن القيام بذلك عن طريق تحديد متغير عام بحيث يمكن الوصول إليه في أي مكان داخل الكود إذا تم استدعاؤه.

هنا في حالة مستشعر PIR ، سنستخدم دبوس GPIO كملف عالمي عامل. ستأخذ وظيفة المقاطعة دبوسًا كوسيطة وتصف دبوس GPIO الذي يتسبب في حدوث وظيفة المقاطعة.

def handle_interrupt ( دبوس ) :

الخطوة 2: قم بإعداد دبوس GPIO للمقاطعة: للحصول على قيمة دبوس GPIO ، نحتاج إلى إنشاء كائن يأخذ مدخلات منه باستخدام دبوس في كالحجة الثانية داخل فئة الدبوس. يمكننا إعادة تسمية هذا مع أي شخص آخر.

دبوس = دبوس ( 13 و دبوس. في )

الخطوة 3: قم بتوصيل المقاطعة بدبوس GPIO الخاص بمستشعر PIR باستخدام طريقة irq ():

باستخدام الأمر أدناه ، يمكننا ضبط المقاطعة على دبوس قمنا بتعريفه مسبقًا.

الجسر. irq ( اثار = دبوس. IRQ_RISING و معالج = مقبض_مقاطعة )

ال irq () يتم استخدام الطريقة لربط المقاطعة بالدبوس. irq () يقبل حجتين مختلفتين:

  • اثار
  • معالج

اثار: تشرح هذه الحجة طريقة المشغل. فيما يلي ثلاثة أوضاع:

  • دبوس .IRQ_FALLING: عندما ينتقل دبوس من HIGH إلى LOW ، تبدأ المقاطعة.
  • دبوس .IRQ_RISING: عند انتقال الدبوس من LOW إلى HIGH ، تبدأ المقاطعة.
  • الدبوس .IRQ_FALLING | الدبوس .IRQ_RISING: قم بتشغيل المقاطعة عندما يغير دبوس حالته. يذهب إما الدبوس إلى HIGH أو LOW.

المعالج: سيتم استدعاء هذه الوظيفة بمجرد تشغيل المقاطعة.

3: واجهة مستشعر PIR مع ESP32

الآن قمنا بتغطية مفاهيم المقاطعة مع ESP32 باستخدام MicroPython الآن سنقوم بتوصيل مستشعر PIR بـ ESP32. هنا سوف نستخدم تثبيت .IRQ_RISING الوضع في رمز MicroPython لمستشعر PIR لأننا نريد تشغيل مؤشر LED في كل مرة يكتشف فيها مستشعر PIR بعض الحركة. سيظل هذا المؤشر قيد التشغيل لفترة محددة ثم ينطفئ.

المكونات التالية ستكون مطلوبة:

  • مجلس التنمية ESP32
  • مستشعر حركة PIR (HC-SR501)
  • 220 أوم المقاوم
  • أسلاك العبور
  • اللوح
  • قاد

تخطيطي لمستشعر PIR مع ESP32:

تكوين دبوس ESP32 مع مستشعر PIR هو:

  يتم إنشاء وصف الجدول تلقائيًا

3.1: مستشعر حركة PIR (HC-SR501)

PIR هو اختصار لـ مجسات الأشعة تحت الحمراء السلبية . يتم استخدام مستشعرين كهربيين حراريين معًا للكشف عن كمية الحرارة حول محيطها. يقع كل من المستشعرات الكهروحرارية واحدًا تلو الآخر وعندما يدخل جسم ما داخل نطاقهما ، يتسبب تغيير في الطاقة الحرارية أو اختلاف الإشارة بين هذين المستشعرين في أن يكون خرج مستشعر PIR منخفضًا. بمجرد أن يتحول دبوس PIR إلى LOW ، يمكننا تعيين تعليمات محددة للتنفيذ (وميض LED).

  يتم إنشاء وصف الرسم التخطيطي تلقائيًا

فيما يلي خصائص مستشعر PIR:

  • يمكن ضبط الحساسية اعتمادًا على موقع المشروع (مثل استشعار الماوس أو حركة الأوراق)
  • يمكن ضبط مستشعر PIR على المدة التي يكتشف فيها كائنًا
  • تستخدم على نطاق واسع في أجهزة إنذار أمن المنزل وغيرها من تطبيقات الكشف عن الحركة الحرارية.

3.2: Pinout HC-SR501

يأتي PIR HC-SR501 بثلاثة دبابيس. اثنان منهم عبارة عن دبابيس طاقة لـ Vcc و GND وواحد هو دبوس الإخراج لإشارة الزناد.

فيما يلي وصف دبابيس مستشعر PIR:

دبوس اسم وصف
1 Vcc دبوس الإدخال الخاص بالمستشعر قم بتوصيله بـ ESP32 Vin Pin
اثنين خارج خرج المستشعر
3 GND مستشعر GND

3.3: كود

الآن لبرمجة ESP32 ، اكتب الكود المحدد في محرر Thonny IDE أو أي MicroPython IDE آخر وقم بتحميله على ESP32.

من دبوس استيراد الجهاز
من زمن استيراد النوم
حركة = خطأ شنيع
def handle_interrupt ( دبوس ) :
الحركة العالمية
حركة = حقيقي
interrupt_pin العالمية
interrupt_pin = دبوس
قاد = دبوس ( 4 و دبوس. خارج )
الجسر = دبوس ( 13 و دبوس. في )
الجسر. irq ( اثار = دبوس. IRQ_RISING و معالج = مقبض_مقاطعة )
في حين حقيقي :
إذا حركة :
مطبعة ( تم اكتشاف الحركة )
قاد. القيمة ( 1 )
ينام ( 5 )
قاد. القيمة ( 0 )
مطبعة ( 'الحركة متوقفة' )
حركة = خطأ شنيع

أولاً ، قمنا باستيراد ملف دبوس فئة من وحدة الآلة و ينام طريقة لإضافة تأخير. بعد ذلك يتم إنشاء متغير بالاسم حركة. سيكتشف هذا المتغير ما إذا تم اكتشاف الحركة أم لا.

ثم أنشأنا وظيفة مقبض_مقاطعة. في كل مرة يكتشف فيها مستشعر PIR الحركة ، سيتم تنشيط هذه الوظيفة. يأخذ دبوسًا كمعامل إدخال ويشير إلى الدبوس الذي يتسبب في حدوث المقاطعة.

بكلمات بسيطة في كل مرة يكتشف PIR الحركة ، مقبض_مقاطعة سيضبط متغير الحركة على صحيح ويخزن الدبوس الذي يتسبب في حدوث المقاطعة. شيء واحد لنتذكره يعلن دائمًا عن حركة متغير عالمي لأنه مطلوب في جميع أنحاء الكود.

من الآن فصاعدًا ، أنشأنا كائنين من الدبوس ، أحدهما لتخزين دبابيس LED والثاني سيأخذ خرج مستشعر PIR في دبوس GPIO 13. علاوة على ذلك ، أعلنا أن دبوس المشغل في ارتفاع الوضع.

في ال عقدة جزء من الكود ، سيتحقق من قيمة متغير الحركة بمجرد أن يصبح صحيحًا ، سيتم تشغيل LED متصل عند الطرف 4 من ESP32. إذا توقفت الحركة ، سينطفئ مؤشر LED بعد 5 ثوانٍ.

3.4: الإخراج

في قسم الإخراج ، يمكننا أن نرى الكائن خارج نطاق مستشعر PIR ، لذا فإن ملف قاد يتم تشغيل إيقاف .

الآن سوف تتحول الحركة التي اكتشفها مؤشر LED لمستشعر PIR على إلى عن على 5 ثانية بعد ذلك إذا لم يتم الكشف عن أي حركة فإنها ستبقى إيقاف حتى يتم استلام الزناد التالي.

يتم عرض الإخراج التالي بواسطة قذيفة / محطة في Thonny IDE.

  واجهة مستخدم رسومية ، نص ، وصف التطبيق يتم إنشاؤه تلقائيًا

استنتاج

يمكن أن يساعد مستشعر PIR المزود بـ ESP32 في اكتشاف حركة الأشياء المختلفة. باستخدام وظيفة المقاطعة في MicroPython مع ESP32 ، يمكننا تشغيل استجابة عند بعض دبوس GPIO المحدد. عند اكتشاف التغيير ، سيتم تشغيل وظيفة المقاطعة وسيتم تشغيل مؤشر LED.