কোড অনুসন্ধান

পাঠ ৭/৩১-২ : রিড সুইচ ব্যবহার করে চৌম্বক ক্ষেত্র শনাক্তকরণ | সানফাউন্ডার কিট

পাঠ ৭/৩১-২ : রিড সুইচ ব্যবহার করে চৌম্বক ক্ষেত্র শনাক্তকরণ | সানফাউন্ডার কিট

একটি চৌম্বক ক্ষেত্র শনাক্ত করা হলো আর্ডুইনোতে ডিজিটাল ইনপুট দিয়ে শুরু করার সবচেয়ে সহজ এবং সবচেয়ে সন্তোষজনক উপায়গুলোর একটি। এই প্রকল্পে আপনি একটি রিড সুইচ ব্যবহার করে একটি চৌম্বক ক্ষেত্র ডিটেক্টর তৈরি করবেন — একটি ছোট কাচের ক্যাপসুলে মোড়ানো সুইচ যা চুম্বক কাছে আসলেই তার সংযোগ বন্ধ করে দেয়। যেহেতু রিড সুইচটি ঠিক একটি পুশ বাটনের মতো আচরণ করে (এটি হয় খোলা নয়তো বন্ধ), এটি digitalRead() ফাংশনের একটি নিখুঁত পরিচিতি, এবং এটি আপনাকে শেখায় কেন একটি পুল-ডাউন রেজিস্টর গুরুত্বপূর্ণ এবং কীভাবে আর্ডুইনোর অন্তর্নির্মিত ইনপুট পুল-আপ এটি সম্পূর্ণভাবে প্রতিস্থাপন করতে পারে।

reed_switch

একবার এটি কাজ করলে, একই সার্কিট অনেক বাস্তব-জগতের নির্মাণের হৃদয় হয়ে ওঠে। এখানে কয়েকটি ব্যবহারিক ধারণা রয়েছে যা আপনি চেষ্টা করতে পারেন:

  • দরজা ও জানালার অ্যালার্ম — রিড সুইচটি একটি ফ্রেমে এবং একটি ছোট চুম্বক দরজায় লাগান; চুম্বক সরে যাওয়ার সাথে সাথে আর্ডুইনো "খোলা" রিপোর্ট করে।
  • নন-কন্টাক্ট ট্যাকোমিটার — একটি ঘূর্ণায়মান চাকায় একটি চুম্বক আঠালো করুন এবং RPM পরিমাপ করতে পালসগুলো গণনা করুন।
  • পানি বা গ্যাস মিটার রিডার — অনেক ইউটিলিটি মিটারে একটি চৌম্বক পালস আউটপুট থাকে যা একটি রিড সুইচ কুড়াতে এবং লগ করতে পারে।
  • ল্যাপটপের ঢাকনা / এনক্লোজার সেন্সর — একটি ঢাকনা বন্ধ হলে তা শনাক্ত করে স্লিপ বা একটি স্ট্যাটাস LED ট্রিগার করুন।
  • সাইকেল স্পিডোমিটার — স্পোকে একটি চুম্বক এবং ফর্কে একটি রিড সুইচ আপনাকে প্রতি চাকা ঘূর্ণনে একটি পালস দেয়।
  • ট্যাম্পার ডিটেকশন — একটি এনক্লোজারের ভিতরে একটি চুম্বক এবং রিড সুইচ জোড়া লুকিয়ে রাখুন যাতে আপনি জানতে পারেন এটি খোলা হয়েছে কিনা।

একটি রিড সুইচ কীভাবে কাজ করে

lesson-7-reading-reed-with-magnet-multimeter

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

আপনি একটি মাল্টিমিটার দিয়ে কন্টিনিউইটি মোডে এই আচরণ যাচাই করতে পারেন (ভিডিওতে 13:59 এ): কাছে কোনো চুম্বক না থাকলে মিটার একটি খোলা সার্কিট দেখায়, এবং একটি চুম্বক কাছে আসার সাথে সাথে বাজার বাজে এবং মিটার একটি বন্ধ সার্কিট পড়ে। যেহেতু সুইচটি বৈদ্যুতিকভাবে একটি পুশ বাটনের সাথে অভিন্ন, আর্ডুইনো কোড এবং তারের সংযোগ অন্য যেকোনো ডিজিটাল ইনপুটের মতোই।

ডিজিটাল ইনপুট এবং পুল রেজিস্টর ব্যাখ্যা

আর্ডুইনো একটি ডিজিটাল পিনকে HIGH বা LOW হিসেবে পড়ে। একটি 5 V বোর্ডে, মোটামুটি 2.2 V এর উপরে যেকোনো কিছু HIGH হিসেবে গণ্য হয় এবং প্রায় 1.5 V এর নিচে যেকোনো কিছু LOW হিসেবে (ভিডিওতে 01:49 এ)। সমস্যা হলো একটি পিন এবং 5 V এর মধ্যে সরাসরি সংযুক্ত একটি সুইচ সুইচ খোলা থাকলে পিনটিকে ফ্লোটিং রেখে দেয় — এটি কিছুর সাথে সংযুক্ত নয়, তাই এটি নয়েজ কুড়ায় এবং এলোমেলো মান রিপোর্ট করে।

why_use_resistor_switch-1
why_use_resistor_switch-2
why_use_resistor_switch-3
why_use_resistor_switch-4
why_use_resistor_switch-5
why_use_resistor_switch-6
why_use_resistor_switch-7
why_use_resistor_switch-8
INPUT_PULLUP সহ পুশ বাটন

সেজন্যই একটি রেজিস্টর ব্যবহার করা হয়। দুটি বিন্যাস সমানভাবে কাজ করে:

  • পুল-ডাউন: পিন থেকে গ্রাউন্ডে একটি 10 kΩ রেজিস্টর। সুইচ খোলা থাকলে পিন LOW পড়ে এবং সুইচ পিনটিকে 5 V-এর সাথে সংযুক্ত করলে HIGH পড়ে।
  • পুল-আপ: পিন থেকে 5 V-এ একটি 10 kΩ রেজিস্টর। সুইচ খোলা থাকলে পিন HIGH পড়ে এবং সুইচ পিনটিকে গ্রাউন্ডের সাথে সংযুক্ত করলে LOW পড়ে।

Arduino-তে একটি অভ্যন্তরীণ পুল-আপ রেজিস্টরও রয়েছে যা INPUT_PULLUP দিয়ে সফটওয়্যারে সক্রিয় করা যায় (ভিডিওতে 19:52-এ)। এটি সম্পূর্ণভাবে বাহ্যিক রেজিস্টরের প্রয়োজনীয়তা দূর করে — পিনটি HIGH অবস্থায় থাকে, এবং সুইচটি গ্রাউন্ডে বন্ধ করলে এটি LOW হয়ে যায়। অসুবিধা হল যুক্তিটি উল্টো: চাপা (বা চুম্বক উপস্থিত) এখন 1-এর পরিবর্তে 0 পড়ে।

হার্ডওয়্যার এবং উপাদান

  • Arduino Uno (বা যেকোনো সামঞ্জস্যপূর্ণ বোর্ড)
  • রিড সুইচ মডিউল বা খালি রিড সুইচ
  • 10 kΩ রেজিস্টর (শুধুমাত্র পুল-ডাউন সংস্করণের জন্য প্রয়োজন)
  • ব্রেডবোর্ড এবং জাম্পার তার
  • পরীক্ষার জন্য একটি ছোট চুম্বক
  • প্রোগ্রামিং এবং পাওয়ারের জন্য USB কেবল

ওয়্যারিং গাইড

lesson-7-reading-reed-schematic
lesson-7-reading-reed-wiring

রিড সুইচটি ঠিক একটি পুশ বোতামের মতো তারযুক্ত। রিড সুইচের একটি পা 5 V-এ যায়, অন্য পা Arduino পিন 2 এবং 10 kΩ রেজিস্টরের এক প্রান্তে যায়। রেজিস্টরের অন্য প্রান্ত গ্রাউন্ডে যায় (ভিডিওতে 14:40-এ)। এটি একটি পুল-ডাউন কনফিগারেশন, তাই চুম্বক না থাকলে পিন LOW পড়ে এবং চুম্বক সুইচ বন্ধ করলে HIGH পড়ে।

ব্রেডবোর্ডে, রিড সুইচটি এমনভাবে রাখুন যাতে এর দুটি পা ভিন্ন সারিতে থাকে, একই সারি থেকে রেজিস্টরটি গ্রাউন্ড রেলে সংযুক্ত করুন, অন্য পা থেকে 5 V রেলে একটি লাল তার চালান, এবং রিড সুইচ ও রেজিস্টরের সংযোগস্থল থেকে পিন 2-এ একটি সবুজ তার চালান (ভিডিওতে 15:53-এ)। কালো গ্রাউন্ডে যায়, লাল 5 V-এ যায়, সবুজ পিন 2-এ যায় — SunFounder কিট জুড়ে ব্যবহৃত একই রঙের নিয়ম।

আপনি যদি রেজিস্টর এড়িয়ে যেতে পছন্দ করেন, রিড সুইচের একটি পা পিন 2-এ এবং অন্য পা সরাসরি গ্রাউন্ডে তারযুক্ত করুন, তারপর নিচে বর্ণিত হিসাবে কোডে INPUT_PULLUP সক্রিয় করুন।

কোড ব্যাখ্যা

স্কেচটি ইচ্ছাকৃতভাবে ছোট। আপনি যা পরিবর্তন করতে চাইবেন সবকিছু ফাইলের উপরের দুটি জায়গায় থাকে।

int reedPin = 2;//the pin reed switch is connected to 

void setup() {
  Serial.begin(9600);
  pinMode(reedPin, INPUT);
}

reedPin — আপনি যদি রিড সুইচটি একটি ভিন্ন ডিজিটাল পিনে তারযুক্ত করেন তবে এই সংখ্যাটি পরিবর্তন করুন। Uno-তে যেকোনো ডিজিটাল পিন কাজ করে; পিন 2 এখানে শুধুমাত্র ব্যবহার করা হয়েছে কারণ এটি ব্রেডবোর্ডে সুবিধাজনক।

Serial.begin(9600) — সিরিয়াল মনিটরের গতি সেট করে। আপনি যদি এই মানটি পরিবর্তন করেন তবে Serial Monitor উইন্ডোতে বড রেট ড্রপডাউনও পরিবর্তন করতে হবে, অন্যথায় আপনি আবর্জনা অক্ষর দেখতে পাবেন (ভিডিওতে 11:25-এ)।

pinMode(reedPin, INPUT) — পিনটিকে একটি উচ্চ-প্রতিবন্ধকতা ইনপুট হিসাবে কনফিগার করে যাতে এটি রিড সুইচ এবং রেজিস্টর দ্বারা সেট করা ভোল্টেজ অনুভব করতে পারে। আপনি যদি পরিবর্তে অভ্যন্তরীণ পুল-আপ ব্যবহার করেন, এই লাইনটি pinMode(reedPin, INPUT_PULLUP); এ পরিবর্তন করুন এবং মনে রাখবেন যে রিডিংগুলি উল্টো হবে।

লুপটি কেবল পিনটি পড়ে এবং ফলাফল প্রিন্ট করে:

void loop() {
  Serial.println(digitalRead(reedPin));
  delay(10);       
}

digitalRead(reedPin) পিন HIGH থাকলে 1 এবং LOW থাকলে 0 ফেরত দেয়। যেহেতু মানটি সরাসরি Serial.println()-এ পাস করা হয়, একটি মধ্যবর্তী ভেরিয়েবলের প্রয়োজন নেই — রিডিংটি সরাসরি প্রিন্ট করা হয়। পুল-ডাউন ওয়্যারিংয়ের সাথে, 0 মানে "কোনো চৌম্বক ক্ষেত্র নেই" এবং 1 মানে "চুম্বক সনাক্ত হয়েছে" (ভিডিওতে 18:31-এ)।

delay(10) নিয়ন্ত্রণ করে কত ঘন ঘন একটি রিডিং প্রিন্ট হয়। দশ মিলিসেকেন্ড যথেষ্ট দ্রুত যে আপনি চুম্বক কাছে আসার সাথে সাথে মান পরিবর্তন দেখতে পাবেন। আপনি যদি আরও শান্ত ডিসপ্লে পছন্দ করেন তবে এটি 200 ms-এ বাড়াতে পারেন, তবে মনে রাখবেন যে এটি সনাক্তকরণও ধীর করে দেয় (ভিডিওতে 12:01-এ)।

লাইভ প্রকল্প প্রদর্শন

স্কেচ আপলোড করার পরে, Serial Monitor খুলুন এবং বড রেট 9600-এ সেট করুন। কাছাকাছি কোনো চুম্বক না থাকলে উইন্ডোটি শূন্য দিয়ে ভরে যায়। একটি ছোট চুম্বক কাচের ক্যাপসুলের কাছে আনুন এবং আউটপুট অবিলম্বে এক-এ পরিবর্তিত হয়; চুম্বকটি দূরে সরান এবং এটি শূন্যে ফিরে আসে (ভিডিওতে 17:04-এ)। প্রতিক্রিয়া তাৎক্ষণিক এবং চুম্বকটি সুইচ থেকে এক বা দুই সেন্টিমিটার দূরে ধরে রাখলেও কাজ করে।

lesson-7-reading-reed-wiring-on-breadboard

আপনি যদি পরিবর্তে পুল-আপ সংস্করণ তৈরি করেন, যুক্তিটি উল্টো: মনিটর বিশ্রামে 1 দেখায় এবং চুম্বক উপস্থিত থাকলে 0 দেখায় (ভিডিওতে 22:13-এ)। যেভাবেই হোক, আপনার এখন একটি নির্ভরযোগ্য, যোগাযোগহীন চৌম্বক ক্ষেত্র সনাক্তকারী রয়েছে যা প্রায় কিছুই খরচ করে না এবং এই নিবন্ধের শীর্ষে তালিকাভুক্ত যেকোনো প্রকল্প ধারণায় ব্যবহার করা যেতে পারে।

এই একই ডিজিটাল-রিড পাঠের পুশ-বাটন সংস্করণটি আলাদাভাবে পাঠ ৭/৩১: ডিজিটাল রিড পুশ বাটন, চৌম্বক ক্ষেত্র শনাক্তকরণ SunFounder কিট | Robojax-এ আলোচনা করা হয়েছে।

এই ভিডিও থেকে সম্পর্কিত প্রকল্প

অধ্যায়সমূহ

  • [০০:০০] ভূমিকা: দুটি ডিজিটাল রিড উদাহরণ
  • [০১:৩৩] ডিজিটাল রিড এবং HIGH/LOW বলতে কী বোঝায়
  • [০২:৪৬] একটি পুশ বাটন সুইচ কীভাবে কাজ করে
  • [০৩:২৫] পুল-আপ এবং পুল-ডাউন রেজিস্টরের তত্ত্ব
  • [০৫:১৮] ব্রেডবোর্ডে পুশ বাটন সংযোগ করা
  • [০৮:২১] বাটন স্কেচ খোলা এবং ব্যাখ্যা করা
  • [১০:৫৫] বাটন উদাহরণ আপলোড এবং পরীক্ষা করা
  • [১২:৩৮] রিড সুইচ পরিচিতি এবং মাল্টিমিটার দিয়ে পরীক্ষা করা
  • [১৪:৪০] রিড সুইচ পিন ২-এ সংযোগ করা
  • [১৬:৪৬] চুম্বক দিয়ে রিড সুইচ পরীক্ষা করা
  • [১৭:১৯] রিড সুইচ স্কেচ ব্যাখ্যা করা
  • [১৯:৪৫] বাহ্যিক রেজিস্টর ছাড়াই INPUT_PULLUP ব্যবহার করা

ছবি

reed_switch
reed_switch
push button with INPUT_PULLUP
push button with INPUT_PULLUP
why_use_resistor_switch-1
why_use_resistor_switch-1
why_use_resistor_switch-2
why_use_resistor_switch-2
why_use_resistor_switch-3
why_use_resistor_switch-3
why_use_resistor_switch-4
why_use_resistor_switch-4
why_use_resistor_switch-5
why_use_resistor_switch-5
why_use_resistor_switch-6
why_use_resistor_switch-6
why_use_resistor_switch-7
why_use_resistor_switch-7
why_use_resistor_switch-8
why_use_resistor_switch-8
lesson-7-reading-reed-with-magnet-multimeter
lesson-7-reading-reed-with-magnet-multimeter
lesson-7-reading-push-button-schematic
lesson-7-reading-push-button-schematic
lesson-7-reading-push-button-wiring
lesson-7-reading-push-button-wiring
lesson-7-reading-reed-schematic
lesson-7-reading-reed-schematic
lesson-7-reading-reed-wiring
lesson-7-reading-reed-wiring
lesson-7-reading-reed-wiring-on-breadboard
lesson-7-reading-reed-wiring-on-breadboard
932-Lesson 7/31-2: Digital read, working with reed switch
ভাষা: C++
/*
 * Lesson 7/31-2: Digital read, working with reed switch
Download and resource page https://robojax.com/RJT590
watch video tutorial https://www.youtube.com/watch?v=yyJrqFKn-X4
 * written/updated by Ahmad Shamshiri www.Robojax.com
 * Dec 12, 2022
 * 

*/

int reedPin = 2;//the pin reed switch is connected to 

void setup() {
  Serial.begin(9600);
  pinMode(reedPin, INPUT);
}

void loop() {
  Serial.println(digitalRead(reedPin));
  delay(10);       
}

আপনাকে যা প্রয়োজন হতে পারে

সম্পদ ও রেফারেন্সসমূহ

ফাইলসমূহ📁

আর্ডুইনো লাইব্রেরি (জিপ)

ব্যবহারকারীর ম্যানুয়াল