রোবট তৈরিঃ আরডুইনো ও আলট্রাসনিক সেন্সর দিয়ে অবস্টাকল এভয়ডার

রোবট আমরা প্রায়ই মুভি তে দেখে থাকি। রোবট তৈরী করার স্বপ্নও দেখেছি।

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

কিন্তু সেজন্য আপনাকে প্রথমে একটি ছোট রোবট বানিয়ে রোবটিক্স এর জগতে প্রবেশ করতে হবে। আজকে আমরা তেমনি একটি রোবট তৈরির কৌশল নিয়ে লিখছি।

আমরা আজকে বানাবো অবস্টাকল এভয়ডার রোবট গাড়ি। শুরুতেই কিছু গুরুত্বপূর্ণ প্রশ্ন যেমন রোবট কাকে বলে, রোবট কি এসম্পর্কে জেনে নেই

পরিচ্ছেদসমূহ

রোবট কী বা রোবট কাকে বলে

রোবট (robot) হচ্ছে যান্ত্রিক ও কৃত্রিম বুদ্ধিমত্তা (Artificial IntelligenceAI) সম্পন্ন বিশেষ যন্ত্র। যা কিনা প্রোগ্রামিং, ইলেকট্রনিক এবং ইলেকট্রিক্যাল সার্কিট দ্বারা নিয়ন্ত্রিত হয়।

রোবট কিভাবে কাজ করে?

সব রোবটেরই একটি “ব্রেইন” থাকে, যেখানে যাবতীয় প্রাপ্ত তথ্য প্রক্রিয়াজাত করা হয় এবং সে অনুসারে সিদ্ধান্ত নেয়া হয়ে থাকে। এ ব্রেইন CPU (Central Processing Unit) নামেও পরিচিত।

ধরুন, একটি রোবট চলছে। হটাত তার সামনে থাকা সেন্সর রোবটের ব্রেইনে তথ্য পাঠালো যে সামনে পানি আছে। ব্রেইন তখন তার প্রোগ্রাম অনুযায়ী সিদ্ধান্ত নিবে যে সামনে পানি থাকলে যাওয়া যাবেনা।

তখন সে মোটরকে থামার নির্দেশ দিবে এবং পিছিয়ে যাবে। বেসিক একটি রোবট মূলত এভাবেই কাজ করে।

আরসি গাড়ি  (RC Car) ও রোবটের মাঝে মূল পার্থক্য

আরসি বা ইংরেজী RC এর পূর্ণরূপ হচ্ছে রিমোট কন্ট্রোল। অর্থাৎ যে গাড়ি কে রিমোটের মাধ্যমে দূরে থেকে নিয়ন্ত্রণ বা কন্ট্রোল করা যায় তাকেই আরসি গাড়ি বলে।

একই রকম ভাবে আরসি প্লেন, কোয়াড কপ্টার ও আছে। কিন্তু এই আরসি সুবিধা সম্পন্ন যন্ত্রগুলো কোনটিই রোবট নয়। কারণ রোবটের মূল সূত্র হচ্ছে-

A machine capable of carrying out a complex series of actions automatically, especially one programmable by a computer. (source: Google Arts & Culture)

অর্থাৎ-

যে মেশিন নিজে নিজেই বিভিন্ন জটিল সমস্যার সমাধান করতে পারে বিশেষত যেটি প্রোগ্রামের মাধ্যমে চালিত হয় বা নিয়ন্ত্রণ করা যায় তাকে রোবট বলে।

কাজেই, শুধু প্রোগ্রাম করলে বা দেখতে “রোবট” বা মানুষ সদৃশ হলেই যেমন একটি রোবট তৈরী হয়ে যাবে না তেমনি কোন যন্ত্র যদি বিভিন্ন জটিল অবস্থার পরিপ্রেক্ষিতে নিজে নিজে সিদ্ধান্ত নিতে না পারে তাহলেও রোবট হবে না।

ঠিক একই কথা ড্রোন এর ক্ষেত্রেও প্রযোজ্য। সত্যিকারের ড্রোন অবশ্যই বিভিন্ন জটিল অবস্থায় (রিমোট কন্ট্রোল রেঞ্জ এর বাইরে চলে গেলে, ফুয়েল/ব্যাটারি চার্জ কমে গেলে, শত্রু দ্বারা আক্রান্ত হলে, ইত্যাদি) নিজস্ব সিদ্ধান্ত নেবার ক্ষমতা থাকতে হবে।

তাহলেই তাকে ড্রোন বলে পরিগণিত করা যাবে। শুধু রিমোট, ভিডিও ক্যামেরা (FPV), দেখতে প্লেন এর মত হলেই সেটি ড্রোন নয়।

রোবটের ব্রেইন

রোবটের ব্রেইন হিসেবে সাধারণত মাইক্রোকন্ট্রোলার অথবা মাইক্রোপ্রসেসর ব্যবহার করা হয়ে থাকে।

সাধারণ রোবট, যেখানে খুব বেশি প্রসেসিং পাওয়ার অথবা মেমোরির দরকার হয়না, সেখানে মাইক্রোকন্ট্রোলার ব্যবহার করা হয়ে থাকে।

সাধারণ মাইক্রোকন্ট্রোলারের মেমরি কম হয়ে থাকে, সাধারণত ২-৬৪ কিলোবাইট এর মত। ক্লক স্পিড ও ২-৮৪ মেগাহার্জ এর মধ্যেই সীমাবদ্ধ।

কিন্তু মাইক্রোপ্রসেসর এ বিভিন্ন মেমোরি স্টোরেজ লাগানোর ব্যবস্থা থাকায় অনায়াসে কয়েক গিগাবাইট তথ্য সংরক্ষণ করা যায়।

(১ গিগাবাইট = ১০০০০০০ কিলোবাইট), স্পিড মেগাহার্জের ঘরের।

তবে মাইক্রোকন্ট্রোলার কোনও এক্সট্রা কিছুর সাহায্য ছাড়া একাই চলতে পারে, যেখানে মাইক্রোপ্রসেসরের বিভিন্ন জিনিস যেমন মেমোরি স্টোরেজ, অপারেটিং সিস্টেম ইত্যাদি দরকার হয়।

উদাহারন হিসাবে দেয়া যায়ঃ AVR কোম্পানির Atmega328, Attiny85 ইত্যাদি মাইক্রোকন্ট্রোলার।

যেহেতু আমাদের বানানো প্রথম রোবট খুব কঠিন কোন কাজ করবেনা, তাই আমরা মাইক্রোকন্ট্রোলারই ব্যবহার করব।

পরে আরও এডভান্সড কাজ করার জন্য আপনি রাস্পবেরি পাই, ব্যানানা পাই মাইক্রোপ্রসেসর সম্বলিত মাইক্রকম্পিউটার ব্যবহার করতে পারেন।

তৈরী করি আজকের রোবট – অবস্টাকল এভয়ডার

আমরা আজকে এমন একটি রোবট বানানো শিখবো, যেটি নিজে থেকেই চলতে পারে এবং সামনে যদি কোনও বাঁধা আসে, তাহলে সে নিজে থেকেই ঘুরে বাঁধা এড়িয়ে চলতে পারে। রোবটটি বানানোর জন্য যা যা দরকার হবে তা হলো –

পার্টস লিস্ট

  • ১। চেসিস/বডি
  • ২। আরডুইনো (উনো/ন্যানো/মেগা)
  • ৩। HC-SR04 সোনার সেন্সর
  • ৪। গিয়ার মোটর ও চাকা
  • ৫। ক্যাস্টর হুইল
  • ৬। মোটর কন্ট্রোলার (ড্রাইভার)
  • ৭। ব্যাটারি
  • ৮। সোল্ডারিং আয়রন, সল্ডার, হটগ্লু গান ও গ্লুস্টিক, সুপারগ্লু।

রোবটের চেসিসঃ

রোবটের চেসিস হিসেবে আপনি ইচ্ছা করলে বিভিন্ন অনলাইন শপে এভেইলেবল প্লাস্টিকের চেসিস গুলো কিনতে পারেন। তবে আমি রেকমেন্ড করব নিজেই বানিয়ে নেয়ার।

নিজে বানিয়ে নিলে নিজের পছন্দমতো মাপের বানাতে পারবেন। উপাদান হিসেবে হালকা কাঠ অথবা পিভিসি শিট (যা প্লাস্টিক উড নামেও পরিচিত) ব্যবহার করতে পারেন। ছোটখাট হালকা রোবট এর জন্য পিভিসি শিটই বেস্ট।

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

অবস্টাকল এভয়ডিং রোবটের চেসিস
অবস্টাকল এভয়ডিং রোবটের চেসিস
চেসিসের মধ্যে ক্যাস্টর হুইল বসানোর প্রকৃয়া
চেসিসের মধ্যে ক্যাস্টর হুইল বসানোর প্রকৃয়া
চেসিস নির্মান সম্পন্ন হবার পরে
চেসিস নির্মান সম্পন্ন হবার পরে

মোটর কন্ট্রোলার/ড্রাইভার

রোবটকে চালানোর জন্য আমাদের মোটর প্রয়োজন। এই মোটর প্রচুর কারেন্ট টানে, তাই মাইক্রোকন্ট্রোলারের পিন থেকে সরাসরি পাওয়ার দেয়া সম্ভব নয়।

এজন্য মোটরকে মোটর ড্রাইভারের মাধ্যমে মাইক্রোকন্ট্রোলার দিয়ে কন্ট্রোল করা হয়। এছাড়া মাইক্রোকন্ট্রোলার বোর্ডের একটি সুবিধা হল, এর মাধ্যমে মোটরকে সোজা-উল্টো যেকোনো দিকেই ঘোরানো যায়।

হাতে বানানো ও দোকানের মোটর ড্রাইভার সার্কিট
হাতে বানানো ও দোকানের মোটর ড্রাইভার সার্কিট

আপনি ইচ্ছা করলে রেডিমেড মোটর ড্রাইভারও ব্যবহার করতে পারেন আবার বাসায়ও মোটর ড্রাইভার বানিয়ে নিতে পারেন L293D মটর ড্রাইভার আইসি দিয়ে।

L293D সম্পর্কে বিস্তারিত পাবেন এখানে – https://www.amaderelectronics.com/1295/ সেক্ষেত্রে নিচের সার্কিট ডায়াগ্রামটি ফলো করতে হবে।

মোটর ড্রাইভার সার্কিট ডায়াগ্রাম
মোটর ড্রাইভার সার্কিট ডায়াগ্রাম

আরডুইনো

বিভিন্ন ধরনের আরডুইনো
বিভিন্ন ধরনের আরডুইনো

আরডুইনো সম্পর্কে আরও জানতে পারবেন এই লেখায়- https://www.amaderelectronics.com/1438/

আপনি আপনার রোবটের আকার ও কাজের ধরণ অনুযায়ী যেকোনো আরডুইনো বোর্ড ব্যবহার করতে পারবেন। যদি মাঝারি সাইজের হয় তাহলে আরডুইনো উনো ব্যবহার করতে পারেন।

আর যদি বেশি মেমোরি/অনেকগুলো ইনপুট/আউটপুট পিন দরকার হয় এবং রোবটের সাইজ মোটামুটি বড় হয় তাহলে আরডুইনো মেগা ব্যবহার করতে পারেন।

তবে উনো/মেগাতে হয় জাম্পার তার দিয়ে কানেকশন দিতে হবে, অথবা শিল্ড বানিয়ে নিতে হবে। এই তার লুজ হয়ে বারবার খুলে যায়।

সেজন্য আমার বেশিরভাগ রোবটে আরডুইনো ন্যানো ব্যবহার করি। ন্যানোর নিচে মেইল হেডার থাকায় একটা ভেরোবোর্ডে ২ সারি ফিমেল হেডার সোল্ডার করে ন্যানো কে সেটায় বসাই।

রোবটের অন্যান্য কানেকশন সেই সার্কিটে সোল্ডার করে দেই।

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

HC-SR04 সোনার/আলট্রাসনিক সেন্সর

hc-sr04 সোনার সেন্সর মডিউল
HC-SR04 সোনার সেন্সর মডিউল

এই সেন্সরের কাজ হচ্ছে সামনে কোনও বস্তু থাকলে কত দূরত্বে আছে তা মাপা। এই কাজটি করা হয় সোনার (Sonar) ওয়েভের সাহায্যে।

সেন্সর প্রথমে একটা হাই ফ্রিকুয়েন্সি সাউন্ড পালস পাঠায় তারপর প্রতিধ্বনির জন্য অপেক্ষা করে।

যখন প্রতিধ্বনি ফেরত আসে সেটা রিসিভারে ডিটেক্ট করে হিসেব করে বের করে যেখানে প্রতিধ্বনিত হয়ে শব্দটি ফেরত এসেছে সে জায়গা বা বস্তুটি কত দূরে।

মানুষের কান ২০-২০০০০ হার্জ পর্যন্ত শব্দ শুনতে পারে। এই শব্দের ফ্রিকোয়েন্সি এর চেয়ে বেশি হওয়ায় আমরা এই শব্দ শুনতে পারিনা।

যেহেতু এটি আলট্রা সাউন্ড ব্যবহার করে এই কাজটি করে থাকে তাই এর আরেক নাম আলট্রাসনিক সেন্সর

এতে ৪টি পিন আছে। প্রথম পিন হচ্ছে VCC, এতে ৫ ভোল্ট দিতে হয়। সাধারণত আরডুইনোর ৫ ভোল্ট পাওয়ার লাইন থেকে এখানে পাওয়ার সাপ্লাই করা হয়।

এরপরে ট্রিগার পিন। এখানে মাইক্রোকন্ট্রোলার দিয়ে সিগনাল দিলে সাউন্ড পালস পাঠানো হয়। প্রতিধ্বনি ফেরত আসলে ইকো পিনে আউটপুট আসে। আর গ্রাউন্ড পিনকে গ্রাউন্ডে লাগাতে হয়।

গিয়ার মোটর ও ক্যাস্টর হুইল

সাধারণ মোটর এর গতি বেশি থাকে কিন্তু সেগুলো বেশি ওজন নিতে পারেনা। কিন্তু রোবটের জন্য দরকার হয় এমন মোটর যার গতি খুব বেশি না কিন্তু যথেষ্ট ওজন বহন করতে পারে।

তাই মোটরে বিভিন্ন গিয়ার যোগ করে গতি কমিয়ে এবং ওজন নেয়ার ক্ষমতা বা টর্ক (Torque) বাড়িয়ে গিয়ার মোটর বানানো হয়। এবং এ গিয়ার মোটর উপযুক্ত চাকা লাগানো হয়।

গিয়ার মোটর ও ক্যাস্টর হুইল/বল কাস্টার
গিয়ার মোটর ও ক্যাস্টর হুইল/বল কাস্টার

ক্যাস্টর হুইল হচ্ছে এমন একধরণের চাকা যেটা সবদিকে ঘুরতে পারে। সাধারণত শপিং কার্টে যে চাকা থাকে সেগুলো ক্যাস্টর হুইল।

আরও বিভিন্ন শেপের ক্যাস্টর হুইলও পাওয়া যায়। ২ চাকার রোবটের সামনের দিকে এটি লাগানো হয়।

মোটর আগে থেকে তার সোল্ডার করা থাকেনা তাই আপনাকে তার সোল্ডার করে নিতে হবে। বেশি চিকন তার না ব্যবহার করাই ভাল।

সোল্ডারিং সম্পর্কে আরও জানার জন্য এই লেখা পড়ুন https://www.amaderelectronics.com1821

ব্যাটারি সম্পর্কিত গুরুত্বপূর্ণ তথ্য

  • রোবটের মোটর কে চালানোর জন্য পাওয়ার সোর্স হিসেবে বিভিন্ন ধরণের ব্যাটারি ব্যবহার করতে পারেন। তবে ৯ ভোল্টের ব্যাটারি ব্যবহার করা যাবেনা, কারণ এধরণের ব্যাটারির কারেন্ট ডিসচার্জ রেট কম থাকায় মোটর ঠিক মত চলতে পারেনা।
  • রোবটের জন্য আরও ২ ধরনের ব্যাটারি ব্যবহার করা যেতে পারে, ৪ ভোল্টের লেড এসিড ব্যাটারি ও নরমাল কার্বন জিঙ্ক AA ব্যাটারি। ৪ ভোল্টের লেড এসিড ব্যাটারির সুবিধা হচ্ছে বারবার চার্জ করা যায়, তবে অসুবিধা হচ্ছে ওজন বেশি এবং কারেন্ট ডিসচার্জ রেট কম থাকায় ২টি ছোট ব্যাটারি একসাথে প্যারালাল করতে হয় অথবা বড় ব্যাটারি ব্যবহার করতে হয়। মোবাইল ফোনের চারজার বা ৬ ভোল্টের ডিসি পাওয়ার সাপ্লাই দিয়ে এ ব্যাটারি চার্জ করা যায়।
  • কার্বন জিঙ্ক ব্যাটারির ওজন তুলনামুলকভাবে কম থাকলেও বারবার চার্জ করা যায়না। তবে আমার পার্সোনাল ফেভারিট হচ্ছে লিথিয়াম আয়ন (LiOn) অথবা লিথিয়াম পলিমার ব্যাটারি (LiPo)। এগুলোর ভোল্টেজ ৩.৭ ভোল্ট করে থাকে, ১৮০০-৩০০০ মিলিঅ্যাম্প/ঘন্টা (MA/H) হয় এবং ডিসচার্জ রেটিং অনেক বেশি থাকে। ওজনেও খুব হালকা হয়ে থাকে। ফোন এর ব্যাটারি, ল্যাপটপের ব্যাটারি থেকে এগুলো বের করে নেয়া যায়। বাজারে নতুন ব্যাটারি কিনতেও পাওয়া যায়। তবে এসব ব্যাটারির একটা বড় অসুবিধা হল এগুলো চার্জ করার জন্য স্পেশাল চারজার লাগে এবং খুব সাবধানে ব্যবহার করতে হয়। কারণ লিথিয়াম ব্যাটারি শর্ট করলে ব্যাটারিতে আগুন ধরে যেতে পারে, বিস্ফোরণ ও হতে পারে। বিশেষ চারজার ছাড়াও চার্জ করা যায়না। আমি ২টা ব্যাটারি আলাদা আলাদা করে TP4056 লিথিয়াম ব্যাটারি চারজিং মডিউল দিয়ে চার্জ করে তারপর সিরিজ করে রোবটে ব্যবহার করি।
  • এছাড়া বড় রোবটের জন্য ৬ ভোল্টের বড় লেড এসিড ব্যাটারি ব্যবহার করা যেতে পারে।
লিথিয়াম আয়োন ব্যাটারি ও ছোট লেড এসিড ব্যাটারি
লিথিয়াম আয়োন ব্যাটারি ও ছোট লেড এসিড ব্যাটারি

আরডুইনো তে পাওয়ার দেয়া

আপনি ইচ্ছা করলে আরডুইনোকে লম্বা ইউএসবি কেবল দিয়েই পাওয়ার করতে পারেন। তবে রোবটটা সম্পূর্ণ তারহীন করতে চাইলে একটা ৯ ভোল্টের ব্যাটারির পজিটিভ আরডুইনোর VIN পিনে এবং ব্যাটারির গ্রাউন্ড আরডুইনোর গ্রাউন্ডে লাগিয়ে আরডুইনো পাওয়ার করতে পারেন। আরডুইনো তার ইন্টারনাল রেগুলেটর দিয়ে ৯ ভোল্ট কে ৫ ভোল্টে কমিয়ে নেবে। তবে ৯ ভোল্টের নরমাল (নন-রিচার্জেবল) ব্যাটারি ১ ঘন্টার বেশি ব্যাকআপ দেবেনা।

আরডুইনো কে ব্যাটারি দিয়ে কানেক্ট করা
আরডুইনো কে ব্যাটারি দিয়ে কানেক্ট করা

অথবা মোটরের ব্যাটারি থেকেও আরডুইনোর VIN পিনে পাওয়ার করে পারেন। সেক্ষেত্রে ৯ ভোল্ট ব্যাটারি থেকে বেশি ব্যাকআপ পাওয়া যাবে।

আরডুইনো কে ব্যাটারি দিয়ে কানেক্ট করা-২
আরডুইনো কে ব্যাটারি দিয়ে কানেক্ট করা-২

রোবট অ্যাসেম্বলি

রোবটের মোটর বাদে অন্য কম্পোনেন্টগুলো নিজের ইচ্ছামত জায়গায় বসাতে পারেন। তবে সামনে যেহেতু একটা ক্যাস্টর হুইল থাকবে, তাই সামনের দিকে দুইপাশে সমান ওজন রাখতে হবে।

নইলে যেকোনো একপাশে বেশি ওজন দিলে রোবটের বডি ওইদিকে কাত হয়ে যেতে পারে। অবশ্য সামনে দুইদিকে দুইটা ক্যাস্টর হুইল কিংবা ২টা গিয়ার মটোর+চাকা দিলে ওয়েইট ব্যালেন্স নিয়ে তেমন না ভাবলেও চলবে।

রোবটে যদি ২x১ চাকার কম্বিনেশন অর্থাৎ পিছনে ২টা চাকা আর সামনে ১টা ক্যাস্টর হুইল থাকে, তাহলে চেষ্টা করতে হবে বেশিরভাগ ওজন পিছনের দিকে মাঝখানে রাখতে।

কারন চাকায় যদি যথেষ্ট গ্রিপ না থাকে, তাহলে চলার সময় স্লিপ কাটতে পারে। যার ফলে এনার্জি লস আর চলতে সমস্যা হতে পারে। তাই মাঝখানে ব্যাটারি দিলে দুই চাকার উপর সমান ওজন পড়বে, তাই স্লিপও কম কাটবে।

সোনার সেন্সর রাখতে হবে সামনের দিকে ঠিক মাঝখানে। খেয়াল রাখতে হবে সেন্সরের সামনে যেন কোনও বাঁধা না থাকে।

সম্ভব হলে সেন্সরকে রোবটের ৪ সে.মি ভিতরে রাখতে হবে, তাতে রোবট চলার সময় সেন্সরে আঘাত লাগার সম্ভাবনা কমে যাবে, এছাড়া সোনার সেন্সরের মিনিমাম রেঞ্জ ৪ সে.মি, তাই ৪ সে.মি ভিতরে রাখলে রেঞ্জ কমে যাবেনা।

আরডুইনো রাখতে হবে বডির বাইরের দিকে সহজেই কাজ করা যায় এমন জায়গায়। কারণ রোবট ট্রাবলশুট করার সময় বারবার কোড আপলোড, জাম্পার ওয়্যার লাগাতে/খুলতে হতে পারে।

আরডুইনো এমনভাবে ঘুরিয়ে রাখতে হবে যেন ইউএসবি পোর্ট বাইরের দিকে থাকে।

কোনও সুইচ লাগাতে চাইলে মটরের ব্যাটারির পজিটিভ প্রান্তে একটি সুইচ প্যারালালে কানেক্ট করতে হবে এবং আরডুইনোর পাওয়ার সোর্সের পজিটিভ প্রান্তে একই ভাবে একটি সুইচ কানেক্ট করতে হবে।

সার্কিট ডায়াগ্রামঃ

অবস্টাকল এভয়ডার রোবট সার্কিট ডায়াগ্রাম
অবস্টাকল এভয়ডার রোবট সার্কিট ডায়াগ্রাম

এই ডায়াগ্রাম অনুযায়ী সবকিছু কানেক্ট করে ফেলুন।

আপনি যদি রেডিমেড মটোর ড্রাইভার ব্যবহার না করে L293D আইসি ব্যবহার করেন মটর নিয়ন্ত্রনের জন্য, তাহলে এই ডায়াগ্রাম ফলো করতে হবে।

আর রেডিমেড মোটর ড্রাইভারে ইনপুট পিনগুলো

আরডুইনোর ডিজিটাল পিনে, মোটর এর জায়গায় মোটরের তার কানেক্ট করা আর VCC জায়গায় ব্যাটারি লাগালেই হবে।

উল্লেখ্য – এখানে ব্যাটারি ও আরডুইনোর গ্রাউন্ড এবং অন্য কোনও পাওয়ার সোর্স থাকলে সেটার গ্রাউন্ডও একসাথে যুক্ত করে দিতে হবে।

আরডুইনোতে কোড আপলোড করা

আরডুইনো সফটওয়্যার খুলে নিচের কোডটি কপি করে পেস্ট করে আপলোড করি –

int mlf = 9, mlr = 8, mrf = 4, mrr = 3; /* ml= motor left, mr= motor right,f= forward, r= reverse*/
int trig = 11, echo = 10;
long distance, duration;

void setup() {

pinMode (mlf, OUTPUT);

pinMode (mlr, OUTPUT);

pinMode (mrf, OUTPUT);

pinMode (mrr, OUTPUT);

pinMode (trig, OUTPUT);

pinMode (echo, INPUT);

}

void loop() {

duration = pulseIn (echo,HIGH);

distance = duration / 58.2;

delay (2);

digitalWrite (trig, HIGH);

delayMicroseconds (10);

digitalWrite (trig, LOW);

if (distance <= 20) {

digitalWrite (mlf, LOW);

digitalWrite (mrf, LOW);

digitalWrite (mrr, HIGH);

delay (500);

}

else {

digitalWrite (mrr, LOW);

digitalWrite (mlf, HIGH);

digitalWrite (mrf, HIGH);

}}

এবার কোডটি কিভাবে কাজ করছে দেখি –

int mlf = 9, mlr = 8, mrf = 4, mrr = 3;

এই লাইনটি দিয়ে মোটর কন্ট্রোলের জন্য ব্যবহৃত পিনগুলো ভ্যারিয়েবলে ডিক্লেয়ার করা হয়েছে।

int trig = 11, echo = 10; সোনার সেন্সরে যুক্ত পিনগুলোর ভেরিয়েবল ডিক্লেয়ার করা হলো।

long distance, duration২টি ব্ল্যাঙ্ক long ভ্যারিয়েবল ডিক্লেয়ার করা হলো।

পরে distance ভেরিয়েবল এ সেন্সরের সামনের বাঁধার দূরত্ব এবং duration ভেরিয়েবল সোনার পালস পাঠানোর পর প্রতিধ্বনির আগে কতক্ষন সময় পার হয়েছে সেই তথ্য রাখা হবে।

void setup() {

pinMode (mlf, OUTPUT);

pinMode (mlr, OUTPUT);

pinMode (mrf, OUTPUT);

pinMode (mrr, OUTPUT);

pinMode (trig, OUTPUT);

pinMode (echo, INPUT);

}

এখানে মটর কনট্রোল পিনগুলো আউটপুট পিন, সোনার সেন্সরের trigger পিনকে আউটপুট পিন এবং echo পিনকে ইনপুট পিন হিসেবে ডিক্লেয়ার করা হলো।

void loop() {
duration = pulseIn (echo,HIGH);

void loop শুরু করা হল এবং duration ভ্যারিয়েবল এর ভ্যালু এর জায়গায় pulseIn (echo) লিখে ডিক্লেয়ার করা হলো।

pulseIn বা পালস-ইন আরডুইনোর একটা বিল্ট ইন ফাংশন,

এটার সাহায্যে কোনও ইনপুট পিনে কতক্ষন হাই (High) সিগন্যাল আসলো (এক্ষেত্রে echo পিন) তা পরিমাপ করা যায়।

distance = duration / 58.2;

distance ভ্যারিয়েবল এর ভ্যালু ডিক্লেয়ার করা হলো duration/৫৮.২।

ডিউরেশনকে ৫৮.২ দিয়ে ভাগ করলে সোনার এর সামনের বস্তুর দূরত্ব সেন্টিমিটারে পাওয়া যাবে।

আবার দূরত্ব ইঞ্চি তে পাওয়ার জন্য (duration/2) / 74 সুত্র ব্যবহার করতে হবে।

delay (2); কোড স্টেবল রাখার জন্য ২ মিলিসেকেন্ড পজ দেয়া হলো।

digitalWrite (trig, HIGH);
delayMicroseconds (10);
digitalWrite (trig, LOW);

ট্রিগার পিন ১০ মাইক্রোসেকেন্ডের জন্য HIGH রেখে একটা সাউন্ড পালস পাঠানো।

if (distance;= 20; distance;0)

{

digitalWrite (mlf, LOW);

digitalWrite (mrf, LOW);

delay (500);

digitalWrite (mrr, HIGH);

}

যদি সামনের বস্তুর দূরত্ব ২০ সেন্টিমিটারের কম এবং ০ সেন্টিমিটারের বেশি হয় তাহলে

প্রথমে ২টা মটর সামনের দিকে চালানোর জন্য ব্যবহৃত ডিজিটাল পিনগুলো LOW বা অফ করে দিয়ে রোবটকে থামানো,

তারপর হাফ সেকেন্ড পজ দিয়ে পিছনের একটি মটর উল্টোদিকে চালিয়ে রোবটকে ঘুরিয়ে নেয়া।

else if (distance >= 20 && distance <= 100) {

digitalWrite (mrr, LOW);

digitalWrite (mlf, HIGH);

digitalWrite (mrf, HIGH);

}}

রোবটের সামনের বস্তুর দূরত্ব যদি ২০ সে.মি এর বেশি এবং ১০০ সে.মি

অর্থাৎ সামনে কোনও বস্তু না থাকলে যেই ডিজিটাল পিনটি পিছনের মটরটি উল্টোদিকে ঘুরে রোবটকে ঘুরাচ্ছিল

সেই ডিজিটাল পিনকে LOW করে ২টি মটোর সামনে ঘোরানোর জন্য ব্যবহৃত ডিজিটাল পিনগুলো HIGH করা।

কোডটি আপলোড করে রোবটের সুইচ অন করলেই আপনার রোবটটি সামনে চলতে শুরু করবে

এবং সামনে কোনও বাধা পেলে নিজে থেকেই ঘুরে গিয়ে চলা শুরু করবে।

আমার বানানো অবস্টাকল এভয়েডিং রোবট এর ভিডিও

নিচে আমার বানানো অবস্টাকল এভয়ডার রোবটের ভিডিও দেখতে পাচ্ছেন-

অবস্টাকল এভয়ডার রোবট ট্রাবলশুটিংঃ

সমস্যাঃ রোবট সামনে চলার বদলে ডানে অথবা বামে ঘুরে যাচ্ছে

সমাধানঃ রোবট এর যেকোনো একটা মটর উলটাদিকে ঘুরছে।

কোডে int mlf = 9, mlr = 8, mrf = 4, mrr = 3; লাইনে mlf,mlr অথবা

mrf,mrr এর মান একটা আরেকটার সাথে পাল্টাপাল্টি করে দেখুন।

সমস্যাঃ রোবটের যেকোনও একটি চাকা অথবা ২টা চাকাই পিছলে যাচ্ছে

সমাধান- রোবটের ওয়েইট ব্যালান্সে সমস্যা হয়েছে।

মটরের উপর সমান ওজন রাখুন অথবা রোবটের কোনওদিকে ওজন অতিরিক্ত পড়ে গেছে কিনা চেক করুন।

সমস্যাঃ রোবটের সামনে কিছু আসলেও রোবট ঘুরে যাচ্ছে না

সমাধান- সোনার সেন্সর কাজ করছেনা। সার্কিট চেক করুন অথবা সেন্সর পরিবর্তন করে দেখুন।

সমস্যাঃ রোবট অতিরিক্ত আস্তে চলছে

সমাধান- ব্যাটারির চার্জ কম/রোবট বেশি ভারি হয়ে গিয়েছে/দুর্বল মটর/দুর্বল ব্যাটারি।

সমস্যাঃ আরডুইনো অন হচ্ছে না

হয় আরডুইনো ঠিকমত পাওয়ার পাচ্ছে না অথবা আরডুইনোর পাওয়ার পিনগুলো (৫ ভোল্ট/গ্রাউন্ড) কোথাও শর্ট হয়ে গেছে।

সেক্ষেত্রে আরডুইনো পারমানেন্টলি নষ্ট হয়ে যেতে পারে।

সমস্যাঃ আরডুইনোতে কোড আপলোড করে রোবট অন করার পর রোবট কাজ করছেনা কিংবা

কম্পিউটার দিয়েও আরডুইনোতে কোড আপলোড দেয়া যাচ্ছেনা

সমাধান- সম্ভবত সার্কিটে কোথাও ভুল থাকার জন্য আরডুইনো নষ্ট হয়ে গেছে।

আরডুইনো টি সার্কিট থেকে খুলে পরীক্ষা করুন। কপাল ভাল থাকলে আরডুইনোর ATMEGA328P চিপটা বদলালেই ঠিক হয়ে যাবে।

সমস্যাঃ আরডুইনো ঠিক আছে, ব্যাটারি ঠিক আছে, সোনার সেন্সর ঠিক আছে। কিন্তু রোবট অন হয়না

সমাধান- সুইচ অন করুন। অথবা সুইচ এর তার খুলে গেছে কিনা দেখুন।

অবস্টাকল এভয়ডার এর প্রায়োগিক ক্ষেত্র সমূহঃ

এই অবস্টাকল এভয়ডারকে বাস্তব ক্ষেত্রে বিভিন্ন ভাবে প্রয়োগ করতে পারি, যেমন-

  1. অটো ভ্যাকুম ক্লিনারে এর প্রয়োগ ঘটিয়ে বাসাবাড়ি পরিষ্কারক হিসেবে এই পদ্ধতি কাজে লাগাতে পারি
  2. ঝুঁকিপূর্ণ স্থানে মানুষের পরিবর্তে এ ধরণের রোবট ব্যবহার করা যতে পারে
  3. নির্দিষ্ঠ গন্ডিতে মালামাল পরিবহন ও উত্তোলনের জন্য এটি বেশ কার্যকরি হতে পারে

প্রভৃতি বিভিন্ন বাস্তব মুখী কাজে এই অবস্টাকল এভয়ডারের ব্যবহার করা যেতে পারে।

তাহলে বন্ধুরা আর দেরি না করে এখনি অবস্টাকল এভয়ডার রোবট বানানো শুরু করুন। এছাড়াও লাইন ফলোয়ার রোবট বানাতে চাইলে আমাদের সাইটের এই লেখাটি পড়তে পারেন।

9 মন্তব্য

  1. Thanks For Your Tunes. কিন্তু কোড আপলোড হচ্ছে না । ১৫ নং লাইনে error দেখায়। Please Solve This…………………

  2. হ্যাঁ ওখানে pulseIn (echo, HIGH) হবে। ভুলে HIGH না লেখার জন্যই কোডে এরর আসছিল। ভুলটি ধরিয়ে দেয়ার জন্য ধন্যবাদ 🙂 আপনার রোবটের জন্য শুভকামনা রইলো।

  3. রোবট কে কোন প্রশ্ন করলে উত্তর দিবে এই রকম একটা পোস্ট দিলে আরও উপকৃত হতাম

উত্তর প্রদান

আপনার মন্তব্য লিখুন
আপনার নাম লিখুন