নিজেই বানিয়ে ফেলুন আরডুইনোর ক্লোন (Arduino Bootloader)
নিজেই বানিয়ে ফেলুন আরডুইনোর ক্লোন (Arduino Bootloader)

কিভাবে আপনি নিজেই আরডুইনো বোর্ড তৈরি বা আরডুইনো ক্লোন/বুটলোডার বানাতে পারেন তাই নিয়েই আজকে লিখছি। তাহলে কথা না বাড়িয়ে শুরু করা যাক।

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

এখন প্রাথমিক টেস্টিং আর হবিস্টদের জন্য সরাসরি বোর্ডে কাজ করতে সুবিধা হলেও যারা আরডুইনো দিয়ে নিজস্ব প্রোডাক্ট বানাতে চান, যেখানে অনেক আরডুইনো চিপ দরকার তাদের কাছে প্রতিটি প্রোডাক্টের জন্য একটি করে আরডুইনো বোর্ড কেনা নিশ্চই বুদ্ধিমানের কাজ হবে না। কারণ তাঁর শুধুমাত্র আরডুইনোতে ব্যবহৃত ৩২৮ চিপ টা প্রয়োজন।

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

একটা কথা প্রথমেই বলে রাখছি, আপনি বাজার থেকে চিপ কিনলেই কাজ হবে না, কিছু কাজ করতে হবে। তার আগে আসুন কিছু দরকারি কথা জেনে নেই।

কেন আরডুইনো এত জনপ্রিয়?

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

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

আরডুইনোর সুবিধাঃ

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

পার্থক্য কি?

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

বুটলোডার কি?

নতুন আরডুইনো কেনার সময় যে চিপ টি থাকে এর মধ্যে আগে থেকেই একটি ছোট প্রোগ্রাম লোড করে দেয়া থাকে। যা আরডুইনোর জন্য ঐ চিপের একটি আইডি হিসেবে কাজ করে। একে বলা হয় বুটলোডার (Bootloader)। প্রোগ্রাম লোড করার সময় আরডুইনো প্রথমে এই আইডি চেক করে তারপর প্রোগ্রাম লোড করে। বুটলোডার না থাকলে আরডুইনো চিপ ডিটেক্ট করবে না, এবং প্রোগ্রাম লোডে এরর দেখাবে। বুটলোডার অনেকটা আমাদের কম্পিউটার বা ল্যাপটপে থাকা বায়োস (BIOS – Basic input output system) এর মত।

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

বুটলোডার কিভাবে ইন্সটল দিতে হয়?

কয়েক ভাবেই বুটলোড করা যায়-

  • আরডুইনো ব্যবহার করে। অর্থাৎ আলাদা আরডুইনোকে প্রোগ্রামার হিসেবে ব্যবহার করে।
  • আবার আরডুইনো ছাড়াই যে কোন AVR প্রোগামার দিয়ে। যেমন, AVR programmer/Burner, AVRISP programmer, USBASP programmer ইত্যাদি । আমার ক্ষেত্রে আমি USBASP ব্যবহার করেছি কারণ এটা অন্যান্য প্রোগ্রামারের তুলনায় সস্তা। আরডুইনো দিয়ে বুটলোড করতে অনেক সময় কিছু এরর দেখা দেয় বিধায় আমি প্রোগ্রামার বেছে নিয়েছি। আপনারা চাইলে আরডুইনো বোর্ড দিয়েও করতে পারেন।

বুটলোড এর মূল ধাপ গুলো দেখিঃ

তাহলে আসুন এবার দেখি কিভাবে বুটলোড করব। বুটলোডের জন্য আমরা ATMEGA8A ব্যবহার করছি। বুটলোডের পদ্ধতি আরডুইনোর  নিজস্ব ওয়েবসাইট arduino.cc তে দেয়া আছে। মূলত চারটি স্টেপে এই কাজ করা হয়।

  • ১। বুটলোড সেকশন কে আনলক করা।
  • ২। হাই ফিউজ বিট ও লো ফিউজ বিট সেট করা।
  • ৩। বুটলোডার ফাইল (ATmegaBOOT.hex) মাইক্রোকনট্রোলারে লোড করা।
  • ৪। বুটলোড সেকশন পুনরায় লক করা।

বুটলোড করতে কি কি লাগবে?

বুটলোড করার জন্য যা যা লাগবে-

১। একটি AVR programmer. আমি USBASP ব্যবহার করেছি।

USBASP দেখতে যেমন হয়

USBASP দেখতে যেমন হয়
USBASP দেখতে যেমন হয়
eXtreme Burner সফটওয়্যার এর চিত্র
eXtreme Burner সফটওয়্যার এর চিত্র

২। কোড আপলোড করার জন্য সফটওয়্যার। আমি ব্যবহার করেছি eXtreme Burner.

৩। একটি ATmega8a মাইক্রোকন্ট্রোলার।

 ATmega8a মাইক্রোকন্ট্রোলার ২৮ পিনের একটি আইসি ATmega8a মাইক্রোকন্ট্রোলার এর পিন আউট

৪। একটি 16 MHz ক্রিস্টাল।

 16 MHz ক্রিস্টাল এর ছবি

৫। ২ টি 22p বা 33p সিরামিক ডিস্ক ক্যাপাসিটর।Related image৬। ব্রেডবোর্ড এবং কিছু জাম্পার ক্যাবল।

ব্রেড বোর্ড
ব্রেড বোর্ড
জাম্পার ওয়্যার
জাম্পার ওয়্যার

প্রয়োজনীয় সার্কিট ডায়াগ্রামঃ

বুটলোড দেবার জন্য সার্কিট ডায়াগ্রাম

প্রথমে সার্কিট ডায়াগ্রাম অনুযায়ী ব্রেডবোর্ডে মাইক্রোকনট্রোলার, ক্রিস্টাল ও ক্যাপাসিটর সংযোগ করি। এরপর প্রোগ্রামারের সাথে মাইক্রোকনট্রোলার সংযোগ করি।

কেবল দিয়ে প্রোগ্রামারকে কম্পিউটারের সাথে সংযোগ করি।

সফটওয়্যার এ যে কাজ গুলো করতে হবেঃ

এবার আসি সফটওয়্যারের চারটি স্টেপ নিয়ে।

এই স্টেপ শুরু করার আগে eXtreme Burner সফটওয়্যারটি চালু করি। Chip মেনু থেকে আমাদের নির্ধারিত মাইক্রোকন্ট্রোলার টি নির্বাচন  করে দেই।

Image result for extreme burner chip select

এরপর Chip Erase বাটনে ক্লিক করে চিপটি ক্লিয়ার করে নেই।

এখন ১ম স্টেপ হল বুটলোড সেকশন অনলক করা। এর জন্য লক ফিউজের ঘরে 0x এর পরের ঘরে FF লিখি এবং Write এর ঘরে টিক চিহ্ন দেই। এখন নিচে Write বাটনে ক্লিক করলেই চিপের বুটলোড সেকশন আনলক হয়ে যাবে।

এখন Lock Fuse এর ঘরে Write এর ঘরের টিক চিহ্ন তুলে দেই।

এবার ২য় স্টেপে হাই ফিউজ বিট ও লো ফিউজ বিট সেট করতে হবে। এর জন্য প্রথমে Low Fuse এর ঘরে 0x এর পর DF এবং হাই ফিউজের ঘরে 0x এর পর CA লিখি। এবার High FuseLow Fuse এর ঘরের Write চেক বক্সে টিক চিহ্ন দিয়ে নিচের Write বাটনে ক্লিক করলেই ফিউজ বিট দুটি সেট হয়ে যাবে।

এবার Write চেক বক্স দুটি আনচেক করে দেই।

৩য় স্টেপে বুটলোড ফাইল আপলোড করতে File থেকে Open Flash এ ক্লিক করি। এখান থেকে C:\Program Files (x86)\Arduino\hardware\arduino\avr\bootloaders\atmega8 এই লোকেশন থেকে ATmegaBOOT-prod-firmware-2009-11-07.hex ফাইল টি ওপেন করি। এবার Write অপশন থেকে Flash এ ক্লিক করলেই হেক্স ফাইলটি মাইক্রোকন্ট্রোলারে লোড হয়ে যাবে।

সর্বশেষ স্টেপে বুটলোড সেকশন আবার লক করে দিতে হবে। এর জন্য Fuse Bit/Settigs ট্যাবে ক্লিক করে, Lock Fuse এর ঘরে 0x এর পর 0F লিখে Write চেক বক্সে টিক চিহ্ন দিয়ে নিচের Write বাটনে ক্লিক করে বুটলোড সেকশন লক করে দেই।

বিঃদ্রঃ ২য় ও ৩য় স্টেপ দুটি আপনি একই সাথে করতে পারেন। এজন্য প্রথমে ২য় স্টেপের ফিউজ বিট সেট করে Write না করে ৩য় স্টেপের হেক্স ফাইলটি ওপেন করার পর উপরে Write All বাটনে ক্লিক করলেই দুটি স্টেপ একসাথেই সম্পন্ন হবে।

ব্যাস… আপনার কাজ শেষ। এবার চিপটি আরডুইনো UNO বোর্ডে বসিয়ে প্রোগ্রাম লিখে আপলোড করে দিলেই চিপ কাজ করবে।

লক্ষণীয় যে, আমরা যে চিপটি বুটলোড করলাম, এটি মূলত Arduino NG বোর্ডে ব্যবহৃত হত। এটি প্রথম দিকের আরডুইনো বোর্ড। তাই বলে যে Arduino UNO বোর্ডে এই চিপ কাজ করবে না, তা না। যদি আপনার কাছে Arduino NG বোর্ড না থাকে তাহলে Aroduino UNO তে চিপটি বসিয়ে Arduino IDE এর Tools মেনু এর Board অপশন থেকে Aroduino NG or Older সিলেক্ট করতে হবে। এরপর Processor অপশন থেকে ATmega8 সিলেক্ট করে দিতে হবে। এরপর Port অপশনে গিয়ে যে পোর্টে Arduino UNO কানেক্ট আছে, সেটি সিলেক্ট করে দিতে হবে। এক্ষেত্রে শুধু পোর্ট নাম্বারও থাকতে পারে, আবার সরাসরি Arduino UNO ও লেখা থাকতে পারে। সব সিলেকশন হয়ে গেলে Upload বাটনে ক্লিক করলেই কোড আপলোড হয়ে যাবে।

হুবুহু আরডুইনোর ক্লোন করতে চাইলে যা করতে হবেঃ

এখন কেউ যদি চান যে Arduino UNO এর ই ক্লোন বা কপি বানাবেন, তাহলে শুধু ৩ টি জিনিস পরিবর্তন করতে হবে।

  1. মাইক্রোকন্ট্রোলার ATmega8a এর বদলে ATmega328p ব্যবহার করবেন।
  2. লক ফিউজ বিট আনলক করার জন্য 0xFF এর পরিবর্তে 0x3F, হাই ফিউজ বিট 0xCA এর পরিবর্তে 0xDE, লো ফিউজ বিট 0xDF এর পরিবর্তে 0xFF, এবং লক ফিউজ বিট পুনরায় লক করার জন্য 0x0F ই থাকবে।
  3. বুটলোড ফাইলের লোকেশন পরিবর্তন হয়ে C:\Program Files (x86)\Arduino\hardware\arduino\avr\bootloaders\atmega এই লোকেশনের ATmegaBOOT_168_atmega328.hex ফাইলটি ওপেন করে লোড করে দিতে হবে।

বাদ বাকি সব কানেকশন একই থাকবে।

তাহলে দেরি না করে নিজেই বানিয়ে ফেলুন আরডুইনো বোর্ড এর ক্লোন। আর চায়নাদের দেখিয়ে দিন আপনার সুউচ্চ বৃদ্ধাঙ্গুলী। :p

6 মন্তব্য

  1. আরডুইনো ব্যবহার করে কিভাবে বুট লোড করতে হয় সেটাই তো দেখালেন না, এইটা কিছু হইল? 😛 টাইটেল দেখে ভাবলাম কি, আর পড়লাম কি! :O আলাদা প্রোগ্রামার কয় জনের কাছে থাকে? বাংলা ইলেকট্রনিক্স গ্রপে গিয়ে খলিলুর ভায়ের পোষ্ট টা দেখেন। ফুল ফিচার্ড আরডুইনোর ক্লোন উনিই বানিয়েছেন! যাহোক, লেখা অনেক সুন্দর হয়েছে! 🙂

    • ধন্যবাদ ভাই আপনার মন্তব্যের জন্য। 🙂 আমার যতদূর চোখ পরে, আরডুইনো দিয়ে বুটলোডের কথা আমি লিখি নি!!! তবে বলেছি যে আরডুইনো দিয়ে বুটলোড করা যায়। আমার পোস্টটাই ছিল যাদের কাছে আরডুইনো নাই তাদের জন্য বা যারা আরডুইনো দিয়ে বুটলোড করতে ঝামেলায় পরেন, এরর পান তাদের জন্য। 🙂
      যারা মাইক্রোকনট্রোলার নিয়ে কাজ করেন, তাদের কাছে বোধকরি আরডুইনোর আগে প্রোগ্রামারই এসেছিল। 🙂 তবে আপনার মন্তব্যের জন্য ধন্যবাদ। 🙂 পরবর্তীতে চেষ্টা করব আরডুইনো দিয়ে করার এবং তা পোস্ট করার।
      আর খলিল ভাই এর সাথে আমার তুলনা দিলে কি চলবে, বলেন? উনি অনেক উচু মানের মানুষ, অনেক অভিজ্ঞ ব্যক্তি। আমি তার তুলনায় একদম আনাড়ি। চেষ্টা করছি শেখার। আশা করি আমিও একদিন খলিল ভাই এর মত অনেক কাজ করতে পারব। (যদিও তত দিনে উনি অন্য লেভেলে চলে যাবেন। 😉 ) 🙂 দোয়া করবেন। 🙂
      ধন্যবাদ।

  2. খুব মনোজোগ দিয়ে ৪/৫ বার পরলাম, নেশা ধরে গেছিল, সুন্দর লেখা, জানিনা পারব কিনা, অনেক ধন্যবাদ।

উত্তর প্রদান

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