Search Code

পাঠ ২৫/৩১: কার-৩ স্মার্ট কার ইনফ্রারেড সেন্সর ব্যবহার করে বাধা এড়ায় | সানফাউন্ডার রোবোজ্যাক্স

পাঠ ২৫/৩১: কার-৩ স্মার্ট কার ইনফ্রারেড সেন্সর ব্যবহার করে বাধা এড়ায় | সানফাউন্ডার রোবোজ্যাক্স

এই প্রজেক্টটি আপনার SunFounder 3-in-1 Arduino স্মার্ট কারকে একটি স্বায়ত্তশাসিত বাধা-এড়ানো যানে রূপান্তরিত করে। দুটি ইনফ্রারেড (IR) সেন্সর—একটি বাম দিকে এবং একটি ডান দিকে—মাউন্ট করার মাধ্যমে, গাড়িটি তার পথে বস্তু শনাক্ত করতে পারে এবং সেগুলিকে এড়িয়ে চলার জন্য তাৎক্ষণিক সিদ্ধান্ত নিতে পারে। এটি রোবোটিক্সের একটি মৌলিক ধাপ, যা আপনাকে শেখায় কীভাবে সেন্সর ইনপুট এবং মোটর নিয়ন্ত্রণ লজিক একত্রিত করে একটি প্রতিক্রিয়াশীল, স্ব-চালিত মেশিন তৈরি করা যায়। এখানে আপনি যে নীতিগুলি শিখবেন তা বাস্তব-বিশ্বের বিভিন্ন প্রয়োগে প্রযোজ্য, যার মধ্যে রয়েছে:

  • একটি রোবোটিক ভ্যাকুয়াম ক্লিনার তৈরি করা যা আসবাবপত্রে ধাক্কা না খেয়ে ঘরে চলাচল করে।
  • একটি লাইন-ফলোয়িং বা মেজ-সলভিং রোবট তৈরি করা প্রতিযোগিতা বা শিক্ষামূলক প্রকল্পের জন্য।
  • একটি স্বয়ংক্রিয় নিরাপত্তা টহল বট তৈরি করা যা একটি পরিধি ঘুরে বেড়াতে পারে এবং দেয়াল এড়াতে পারে।
  • একটি স্মার্ট খেলনা গাড়ি ডিজাইন করা যা আটকে না গিয়ে স্বাধীনভাবে খেলতে পারে।

এই গাইডটি পূর্ববর্তী পাঠগুলির উপর সরাসরি ভিত্তি করে তৈরি, যেখানে আপনি গাড়ির মোটর নিয়ন্ত্রণ করতে এবং IR সেন্সর কীভাবে কাজ করে তা বুঝতে শিখেছেন। এখানে, আমরা সেই দক্ষতাগুলি একত্রিত করে একটি সহজ কিন্তু কার্যকর বাধা-এড়ানো অ্যালগরিদম বাস্তবায়ন করব।

বাধা এড়ানোর লজিক কীভাবে কাজ করে

মূল ধারণাটি সহজ: গাড়িটি তার বাম এবং ডান দিকে বাধা পরীক্ষা করার জন্য দুটি IR সেন্সর ব্যবহার করে। প্রতিটি সেন্সর একটি ডিজিটাল সংকেত আউটপুট করে: LOW (0) যখন এটি তার পরিসরের মধ্যে (প্রায় 20 সেমি) একটি বস্তু শনাক্ত করে এবং HIGH (1) যখন পথ পরিষ্কার থাকে। লজিকটি তখন সেন্সর অবস্থার উপর ভিত্তি করে গাড়ির ক্রিয়া নির্ধারণ করে (ভিডিওতে 02:35 এ):

  • বাম দিকে বাধা, ডান দিক পরিষ্কার: গাড়িটি এটি এড়াতে ডান দিকে ঘুরে যায়।
  • ডান দিকে বাধা, বাম দিক পরিষ্কার: গাড়িটি বাম দিকে ঘুরে যায়।
  • উভয় দিকে বাধা: গাড়িটি সম্ভাব্য শেষ-প্রান্ত থেকে বের হওয়ার জন্য পিছনের দিকে চলে যায়।
  • কোনো বাধা নেই: গাড়িটি সামনের দিকে চলে।

এই প্রতিক্রিয়াশীল পদ্ধতিটি একটি সসীম-অবস্থা মেশিনের একটি ক্লাসিক উদাহরণ, যেখানে গাড়ির আচরণ তার বর্তমান সেন্সর ইনপুটগুলির সরাসরি প্রতিক্রিয়া।

Sunfounder-Smartcar-Obstacle-avoideance-1

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

এই প্রজেক্টটি সম্পূর্ণ করতে, আপনার নিম্নলিখিত উপাদানগুলির প্রয়োজন হবে, যার সবকটিই SunFounder 3-in-1 Arduino কিটে অন্তর্ভুক্ত:

  • 1x SunFounder 3-in-1 Arduino স্মার্ট কার কিট (বা সমতুল্য অংশ)
  • 2x ইনফ্রারেড বাধা এড়ানো সেন্সর
  • 1x Arduino Uno (বা সামঞ্জস্যপূর্ণ বোর্ড)
  • 1x মোটর ড্রাইভার শিল্ড/বোর্ড
  • জাম্পার তার

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

এই প্রজেক্টটি কাজ করার জন্য সঠিক সেন্সর সারিবদ্ধকরণ অত্যন্ত গুরুত্বপূর্ণ। IR সেন্সরগুলিকে সামনের দিকে এবং সামান্য বাইরের দিকে মুখ করে সারিবদ্ধ করতে হবে, কারণ তারা গাড়ির পাশে বাধা শনাক্ত করবে (ভিডিওতে 02:07 এ)। নিম্নলিখিত ওয়্যারিং ডায়াগ্রামটি দেখায় কীভাবে সেন্সরগুলিকে Arduino-তে সংযুক্ত করতে হয়। দয়া করে মনে রাখবেন যে প্রশিক্ষক গাড়ির ব্রেডবোর্ডে একটি নির্দিষ্ট পাওয়ার ডিস্ট্রিবিউশন পয়েন্ট ব্যবহার করেছেন, তবে Arduino-তে সংযোগগুলিই গুরুত্বপূর্ণ।

Sunfounder-Smartcar-Obstacle-avoideance-wiring

ওয়্যারিং সংযোগগুলি নিম্নরূপ (ভিডিওতে 03:47 এ):

  • পাওয়ার (VCC): উভয় IR সেন্সরের VCC পিনটি Arduino-তে 5V আউটপুট বা গাড়ির পাওয়ার রেলের সাথে সংযুক্ত করুন।
  • গ্রাউন্ড (GND): উভয় IR সেন্সরের GND পিনটি Arduino-তে একটি সাধারণ গ্রাউন্ড বা গাড়ির গ্রাউন্ড রেলের সাথে সংযুক্ত করুন।
  • ডান সেন্সর আউটপুট (OUT): ডান IR সেন্সরের ডিজিটাল আউটপুট পিনটি Arduino-তে ডিজিটাল পিন 7-এর সাথে সংযুক্ত করুন।
  • বাম সেন্সর আউটপুট (OUT): বাম IR সেন্সরের ডিজিটাল আউটপুট পিনটি Arduino-তে ডিজিটাল পিন 8-এর সাথে সংযুক্ত করুন।

বাম এবং ডান মোটরগুলির জন্য মোটর ড্রাইভার সংযোগগুলি মোটর নিয়ন্ত্রণের পূর্ববর্তী পাঠে প্রতিষ্ঠিত সংযোগগুলির মতোই।

কোড ব্যাখ্যা

এই প্রজেক্টের কোডটি সরল। মূল প্রোগ্রামটি নিবন্ধের নীচে ডাউনলোডের জন্য উপলব্ধ। এখানে, আমরা ব্যবহারকারী-কনফিগারযোগ্য অংশগুলিতে ফোকাস করব যা আপনি আপনার নিজের গাড়ির জন্য সামঞ্জস্য করতে পারেন।

const int A_1B = 5;
const int A_1A = 6;
const int B_1B = 9;
const int B_1A = 10;

const int rightIR = 7;
const int leftIR = 8;

এই লাইনগুলি মোটর ড্রাইভার এবং IR সেন্সরগুলির জন্য ব্যবহৃত পিনগুলিকে সংজ্ঞায়িত করে। মোটর পিনগুলি (A_1B, A_1A, B_1B, B_1A) দুটি মোটরের গতি এবং দিক নিয়ন্ত্রণ করে। rightIR এবং leftIR পিনগুলি যেখানে আপনি আপনার সেন্সর থেকে সিগন্যাল তারগুলি সংযুক্ত করেন। আপনি যদি ভিন্ন পিন ব্যবহার করেন, তাহলে আপনি এখানে এই মানগুলি পরিবর্তন করবেন।

int speed = 150;

এই ভেরিয়েবলটি গাড়ির জন্য বেস গতি নির্ধারণ করে। মানটি 0 থেকে 255 পর্যন্ত হতে পারে, যেখানে 255 সর্বোচ্চ গতি। শেখার জন্য 150 একটি ভালো শুরুর পয়েন্ট, কারণ এটি যথেষ্ট দ্রুত যা আকর্ষণীয় কিন্তু প্রতিক্রিয়া সময়ের জন্য যথেষ্ট ধীর (ভিডিওতে 07:10 এ)। আপনি আপনার গাড়িকে দ্রুত বা ধীর করতে এটি সামঞ্জস্য করতে পারেন।

বাকি কোডটি loop() ফাংশনের লজিক সংজ্ঞায়িত করে। এটি বাম এবং ডান সেন্সরের অবস্থা পড়ে এবং তারপর উপযুক্ত চলাচলের ফাংশন (moveForward(), moveBackward(), backLeft(), backRight()) কল করে। এই ফাংশনগুলো পূর্বনির্ধারিত এবং মোটর ড্রাইভার নিয়ন্ত্রণ করে কাঙ্ক্ষিত গতি অর্জন করে। প্রশিক্ষক পরবর্তী পরিবর্তনে একটি stop() ফাংশনও যোগ করেছেন, যা বাধা এড়ানোর কৌশলের পরে গাড়িটিকে অল্প সময়ের জন্য থামিয়ে দেয়, যার ফলে এর চলাচল আরও সচেতন হয় (ভিডিওতে ১০:২৯ মিনিটে)।

লাইভ প্রজেক্ট প্রদর্শন

ভিডিওতে, প্রশিক্ষক প্রথমে সিরিয়াল মনিটর ব্যবহার করে লজিকটি প্রদর্শন করেন। সেন্সরের কাছে একটি বাক্স রাখলে, আপনি স্ক্রিনে "Go Left", "Go Right" বা "Go Backward" এর মতো সংশ্লিষ্ট বার্তাগুলি দেখতে পাবেন, যা নিশ্চিত করে যে সেন্সর রিডিং এবং লজিক সঠিক (ভিডিওতে ০৯:১১ মিনিটে)।

লজিক যাচাই করার পরে, প্রশিক্ষক একটি গুরুত্বপূর্ণ উন্নতি যোগ করেন: একটি stop() ফাংশন। এই ফাংশনটি গাড়িটিকে একটি নির্দিষ্ট সময়ের জন্য (যেমন, ১ সেকেন্ড) সম্পূর্ণ থামিয়ে দেয় যখন এটি একটি বাঁক বা বিপরীত দিকে চালনা সম্পন্ন করে, যা ঝাঁকুনিপূর্ণ চলাচল প্রতিরোধ করে এবং গাড়িটিকে তার চারপাশ পুনরায় মূল্যায়ন করার সুযোগ দেয় (ভিডিওতে ১০:২৯ মিনিটে)।

অবশেষে, গাড়িটি মেঝেতে একাধিক বাধার সাথে পরীক্ষা করা হয়। ভিডিওতে দেখা যায় গাড়িটি সফলভাবে বাক্সগুলির চারপাশে চলাচল করছে, প্রয়োজন অনুযায়ী বামে, ডানে বাঁক নিচ্ছে এবং বিপরীত দিকে যাচ্ছে, যাতে একটি পরিষ্কার পথ খুঁজে পায়, যা এই বাধা-এড়ানো অ্যালগরিদমের বাস্তব-বিশ্ব প্রয়োগ প্রদর্শন করে (ভিডিওতে ১২:১৩ মিনিটে)।

অধ্যায়সমূহ

  • [০০:০০] আইআর সেন্সর দিয়ে বাধা এড়ানোর ভূমিকা
  • [০১:২৪] পূর্বশর্ত এবং প্রজেক্টের সারসংক্ষেপ
  • [০২:৩৫] বাধা এড়ানোর লজিক কীভাবে কাজ করে
  • [০৩:৪৭] আইআর সেন্সর এবং মোটর সংযোগ
  • [০৫:৪০] কোড খোলা এবং ব্যাখ্যা
  • [০৯:১১] সিরিয়াল মনিটর দিয়ে লজিক পরীক্ষা
  • [১০:২৯] মসৃণ নেভিগেশনের জন্য স্টপ ফাংশন যোগ করা
  • [১১:৪২] স্টপ ফাংশন পরীক্ষা
  • [১২:১৩] মেঝেতে চূড়ান্ত ব্যবহারিক পরীক্ষা

ছবি

Sunfounder-Smartcar-Obstacle-avoideance-1
Sunfounder-Smartcar-Obstacle-avoideance-1
Sunfounder-Smartcar-Obstacle-avoideance-wiring
Sunfounder-Smartcar-Obstacle-avoideance-wiring
894-Lesson 25: SunFounder's 3-in-1 Arduino kit Car-3 Smart Car Avoids Obstacle Using Infrared Sensors
ভাষা: C++
This code has not been parsed yet. Please return to the admin panel to parse it.

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

ফাইলসমূহ📁

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