MicroPython এবং Thony IDE ব্যবহার করে ESP32 সহ PIR মোশন সেন্সর

Micropython Ebam Thony Ide Byabahara Kare Esp32 Saha Pir Mosana Sensara



ESP32 বিভিন্ন সেন্সর নিয়ন্ত্রণ এবং পড়তে একাধিক বাহ্যিক ডিভাইস ইন্টারফেস করতে পারে। PIR বা মোশন সেন্সর হল একটি উদাহরণ যা আমরা ESP32 ব্যবহার করে PIR সেন্সরের একটি নির্দিষ্ট পরিসরে গতিবিধি সনাক্ত করতে ESP32 এর সাথে ইন্টারফেস করতে পারি।

PIR সেন্সরের সাথে ESP32 ইন্টারফেস করা শুরু করার আগে আমাদের অবশ্যই জানতে হবে কিভাবে বাধা কাজ করে এবং কিভাবে ESP32 এ তাদের পড়তে এবং পরিচালনা করতে হয়। ESP32 এর সাথে PIR এর কাজ সম্পর্কে বিস্তারিত আলোচনা করা যাক।

এই নিবন্ধের বিষয়বস্তু এখানে:







1: বাধা কি?



1.1: ESP32-এ পিন বাধা দেয়



2: ESP32 - মাইক্রোপাইথনে একটি বাধা কল করা





3: ESP32 - মাইক্রোপাইথনের সাথে PIR সেন্সর ইন্টারফেসিং

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 ইএসপি 32 বোর্ডের পিন সংস্করণটি ইন্টারাপ্ট কলিংয়ের উদ্দেশ্যে ব্যবহার করা যাবে না। সুতরাং, বাহ্যিক বাধা পেতে নিম্নলিখিত পিনগুলি ESP32 এ ব্যবহার করতে পারেন:

2: মাইক্রোপাইথন ব্যবহার করে ESP32-এ একটি ইন্টারাপ্ট কল করা

MicroPython কোড ব্যবহার করে PIR সেন্সর সহ একটি ESP32 বোর্ড প্রোগ্রাম করতে। আমরা একটি interrupt ফাংশন সংজ্ঞায়িত করতে হবে. নিম্নলিখিত কিছু সহজ পদক্ষেপ যা ESP32 বোর্ডের জন্য একটি বিঘ্ন সংজ্ঞায়িত করতে সহায়তা করে।

ধাপ 1: ইন্টারাপ্ট হ্যান্ডলিং ফাংশন শুরু করুন: ইন্টারাপ্ট হ্যান্ডলিং ফাংশনটি একটি সহজ উপায়ে সংজ্ঞায়িত করা উচিত যাতে এটি দ্রুত কার্যকর করতে পারে এবং যত তাড়াতাড়ি সম্ভব মূল প্রোগ্রামে ফিরে যেতে পারে। এটি একটি গ্লোবাল ভেরিয়েবল সংজ্ঞায়িত করে করা যেতে পারে যাতে কল করা হলে এটি কোডের ভিতরে যে কোনও জায়গায় অ্যাক্সেস করা যায়।

এখানে PIR সেন্সরের ক্ষেত্রে আমরা GPIO পিনকে a হিসেবে ব্যবহার করব বিশ্বব্যাপী পরিবর্তনশীল ইন্টারাপ্ট ফাংশন একটি আর্গুমেন্ট হিসাবে একটি পিন নেবে এবং GPIO পিন বর্ণনা করবে যার ফলে ইন্টারাপ্ট ফাংশন ঘটতে পারে।

def handle_interrupt ( পিন ) :

ধাপ 2: একটি বাধার জন্য GPIO পিন সেটআপ করুন: GPIO পিনের মান পেতে আমাদের একটি অবজেক্ট তৈরি করতে হবে যা এটি ব্যবহার করে ইনপুট নেবে Pin.IN আমাদের পিন ক্লাসের ভিতরে দ্বিতীয় যুক্তি হিসাবে। আমরা অন্য যে কোনো সঙ্গে এই নাম পরিবর্তন করতে পারেন.

পিন = পিন ( 13 , পিন। ভিতরে )

ধাপ 3: irq() পদ্ধতি ব্যবহার করে PIR সেন্সরের জন্য GPIO পিনের সাথে ইন্টারাপ্ট সংযুক্ত করুন:

নীচের কমান্ডটি ব্যবহার করে, আমরা আগে সংজ্ঞায়িত একটি পিনে বাধা সেট করতে পারি।

সেতু. irq ( ট্রিগার = পিন। IRQ_RISING , হ্যান্ডলার = handle_interrupt )

দ্য irq() পদ্ধতিটি পিনের সাথে বাধা সংযুক্ত করতে ব্যবহৃত হয়। irq() দুটি ভিন্ন যুক্তি গ্রহণ করে:

  • ট্রিগার
  • হ্যান্ডলার

ট্রিগার: এই যুক্তিটি ট্রিগারের মোড ব্যাখ্যা করে। নিম্নলিখিত তিনটি মোড আছে:

  • পিন.IRQ_FALLING: যখন একটি পিন উচ্চ থেকে নিম্নে রূপান্তরিত হয়, তখন একটি বাধা শুরু হয়।
  • পিন.IRQ_RISING: পিনের নিম্ন থেকে উচ্চে স্থানান্তর করার পরে, একটি বাধা শুরু হয়।
  • পিন.IRQ_FALLING|Pin.IRQ_RISING: যখনই একটি পিন তার অবস্থা পরিবর্তন করে তখনই বাধা ট্রিগার করুন। হয় পিন উচ্চ বা নিম্ন যায়।

হ্যান্ডলার: একবার একটি বাধা ট্রিগার হলে এই ফাংশনটি কল করা হবে।

3: ESP32 এর সাথে PIR সেন্সর ইন্টারফেসিং

এখন আমরা মাইক্রোপাইথন ব্যবহার করে ESP32 এর সাথে ইন্টারাপ্টের ধারণাগুলি কভার করেছি এখন আমরা PIR সেন্সরকে ESP32 এর সাথে ইন্টারফেস করব। এখানে আমরা ব্যবহার করা হবে পিন.IRQ_RISING PIR সেন্সরের জন্য MicroPython কোডে মোড কারণ PIR সেন্সর যখনই কিছু মুভমেন্ট শনাক্ত করে তখন আমরা একটি LED ট্রিগার করতে চাই। এই LED একটি নির্দিষ্ট সময়ের জন্য চালু থাকবে তারপর এটি বন্ধ হয়ে যাবে।

নিম্নলিখিত উপাদান প্রয়োজন হবে:

  • ESP32 উন্নয়ন বোর্ড
  • PIR মোশন সেন্সর (HC-SR501)
  • 220 ওহম প্রতিরোধক
  • জাম্পার তারের
  • ব্রেডবোর্ড
  • এলইডি

পরিকল্পিত ESP32 সহ PIR সেন্সরের জন্য:

PIR সেন্সর সহ ESP32 এর পিন কনফিগারেশন হল:

  সারণী বিবরণ স্বয়ংক্রিয়ভাবে উত্পন্ন

3.1: PIR মোশন সেন্সর (HC-SR501)

PIR এর সংক্ষিপ্ত রূপ প্যাসিভ ইনফ্রারেড সেন্সর . দুটি পাইরোইলেকট্রিক সেন্সর একসাথে ব্যবহৃত হয় যা তার চারপাশে তাপের পরিমাণ সনাক্ত করবে। এই দুটি পাইরোইলেকট্রিক সেন্সর একের পর এক পড়ে থাকে এবং যখন কোনো বস্তু তাদের সীমার মধ্যে আসে তখন তাপ শক্তির পরিবর্তন বা এই দুটি সেন্সরের মধ্যে সংকেত পার্থক্যের কারণে পিআইআর সেন্সর আউটপুট কম হয়। PIR আউট পিন কম হয়ে গেলে, আমরা কার্যকর করার জন্য একটি নির্দিষ্ট নির্দেশ সেট করতে পারি (LED ব্লিঙ্ক)।

  ডায়াগ্রাম বর্ণনা স্বয়ংক্রিয়ভাবে তৈরি

পিআইআর সেন্সরের বৈশিষ্ট্যগুলি নিম্নরূপ:

  • সংবেদনশীলতা প্রকল্পের অবস্থানের উপর নির্ভর করে সেট করা যেতে পারে (যেমন সেন্সিং মাউস বা পাতার নড়াচড়া)
  • PIR সেন্সর কতক্ষণ এটি একটি বস্তু সনাক্ত করতে পারে সেট করা যেতে পারে
  • হোম সিকিউরিটি অ্যালার্ম এবং অন্যান্য তাপভিত্তিক আন্দোলন সনাক্তকরণ অ্যাপ্লিকেশনগুলিতে ব্যাপকভাবে ব্যবহৃত হয়।

3.2: পিনআউট HC-SR501

PIR HC-SR501 তিনটি পিনের সাথে আসে। এর মধ্যে দুটি হল Vcc এবং GND এর পাওয়ার পিন এবং একটি হল ট্রিগার সিগন্যালের জন্য আউটপুট পিন।

নিচে PIR সেন্সর পিনের বর্ণনা দেওয়া হল:

পিন নাম বর্ণনা
1 ভিসিসি সেন্সরের জন্য ইনপুট পিন ESP32 ভিন পিনের সাথে সংযুক্ত করুন
দুই আউট সেন্সর আউটপুট
3 জিএনডি সেন্সর GND

3.3: কোড

এখন ESP32 প্রোগ্রাম করতে থনি আইডিই এডিটর বা অন্য কোন মাইক্রোপাইথন আইডিই-তে প্রদত্ত কোডটি লিখুন এবং এটি ESP32 এ আপলোড করুন।

মেশিন আমদানি পিন থেকে
থেকে সময় ঘুম আমদানি করুন
গতি = মিথ্যা
def handle_interrupt ( পিন ) :
বিশ্বব্যাপী গতি
গতি = সত্য
গ্লোবাল ইন্টারাপ্ট_পিন
interrupt_pin = পিন
এলইডি = পিন ( 4 , পিন। আউট )
সেতু = পিন ( 13 , পিন। ভিতরে )
সেতু. irq ( ট্রিগার = পিন। IRQ_RISING , হ্যান্ডলার = handle_interrupt )
যখন সত্য :
যদি গতি :
ছাপা ( 'গতি সনাক্ত করা হয়েছে' )
এলইডি. মান ( 1 )
ঘুম ( 5 )
এলইডি. মান ( 0 )
ছাপা ( 'মোশন স্টপড' )
গতি = মিথ্যা

প্রথমত, আমরা আমদানি করেছি পিন মেশিন মডিউল থেকে ক্লাস এবং ঘুম বিলম্ব যোগ করার পদ্ধতি। এরপর নাম দিয়ে একটি ভেরিয়েবল তৈরি করা হয় গতি এই পরিবর্তনশীলটি একটি গতি সনাক্ত করা হয়েছে কিনা তা সনাক্ত করবে।

তারপর আমরা একটি ফাংশন তৈরি করেছি handle_interrupt. প্রতিবার PIR সেন্সর গতি শনাক্ত করে, এই ফাংশন সক্রিয় করা হবে। এটি একটি ইনপুট প্যারামিটার হিসাবে একটি পিন নেয় এবং পিনটি নির্দেশ করে যা বাধা সৃষ্টি করে।

সহজ কথায় প্রতিবার PIR গতি শনাক্ত করে, handle_interrupt মোশন ভেরিয়েবলটিকে সত্যে সেট করবে এবং পিনটি সংরক্ষণ করবে যা বাধা সৃষ্টি করে। একটা কথা মনে রাখবেন সর্বদা ঘোষণা করা হয় গতি বৈশ্বিক হিসাবে পরিবর্তনশীল কারণ এটি কোড জুড়ে প্রয়োজন।

এগিয়ে গিয়ে আমরা দুটি পিন অবজেক্ট তৈরি করেছি, একটি এলইডি পিন সংরক্ষণের জন্য এবং দ্বিতীয়টি GPIO পিন 13 এ পিআইআর সেন্সর আউটপুট নেবে। আরও আমরা ট্রিগার পিন ঘোষণা করেছি উদীয়মান মোড.

মধ্যে লুপ কোডের অংশ, এটি মোশন ভেরিয়েবলের মান পরীক্ষা করবে একবার এটি সত্য হয়ে গেলে ESP32 এর পিন 4 এ সংযুক্ত LED চালু হবে। গতি বন্ধ হলে LED 5 সেকেন্ড পরে বন্ধ হয়ে যাবে।

3.4: আউটপুট

আউটপুট বিভাগে আমরা দেখতে পাচ্ছি যে বস্তুটি PIR সেন্সরের সীমার বাইরে, তাই এলইডি পরিণত হয় বন্ধ .

এখন PIR সেন্সর LED দ্বারা সনাক্ত করা গতি ঘুরবে চালু জন্য 5 সেকেন্ড এর পরে যদি কোন গতি সনাক্ত না করা হয় তবে এটি থাকবে বন্ধ পরবর্তী ট্রিগার প্রাপ্ত না হওয়া পর্যন্ত।

নিম্নলিখিত আউটপুট দ্বারা দেখানো হয় শেল/টার্মিনাল থনি আইডিই-তে।

  গ্রাফিকাল ইউজার ইন্টারফেস, টেক্সট, অ্যাপ্লিকেশন বর্ণনা স্বয়ংক্রিয়ভাবে তৈরি

উপসংহার

ESP32 সহ একটি PIR সেন্সর বিভিন্ন জিনিসের গতি শনাক্ত করতে সাহায্য করতে পারে। ESP32 এর সাথে MicroPython-এ interrupt ফাংশন ব্যবহার করে আমরা কিছু নির্দিষ্ট GPIO পিনে প্রতিক্রিয়া ট্রিগার করতে পারি। পরিবর্তন শনাক্ত হলে ইন্টারাপ্ট ফাংশনটি ট্রিগার হবে এবং একটি LED চালু হবে।