Arduino-তে Bootloader বার্ন করার সবচেয়ে সহজ পদ্ধতি
কোন কারণে যদি তোমার Arduino বোর্ডের মাইক্রোকন্ট্রোলারটি নষ্ট হয়ে যায়, তখন কি নতুন করে আবার একটি আরডুইনো বোর্ড কিনবে?
নতুন বোর্ড কিনবে কি কিনবে না, সেই সিদ্ধান্তে না হয় একটু পর আসি। চলো আগে জানি কেনই বা নষ্ট হবে এই শখের আরডুইনো বোর্ড?
Arduino-bootloader-Arduino-Uno-Testing
যেসব কারণে ড্যামেজ হতে পারে আরডুইনোঃ
আউটপুট পিনের সাথে পাওয়ার লাইনের শর্ট-সার্কিট হলে
ইনপুট পিনে অতিরিক্ত ভোল্টেজ ইনপুট হলে
প্রোগ্রামিং এর Write এবং Erase লিমিট শেষ হলে
আরডুইনো বোর্ডে যে মাইক্রোকন্ট্রোলার ব্যবহার করা হয় শুধুমাত্র তার মূল্য এবং সম্পূর্ণ বোর্ডের মধ্যে মূল্যের পার্থক্য রয়েছে বেশ। তাই শুধুমাত্র মাইক্রোকন্ট্রোলার নষ্টের জন্য সম্পূর্ণ বোর্ড ফেলে দেওয়া, আমার মতে নিতান্তই বোকামি ছাড়া কিছু নয়!
তাছাড়া সবচেয়ে গুরুত্বপূর্ণ বিষয় হলো, কাস্টমাইজড ডেভেলপমেন্ট। যখন তুমি আরডুইনো ব্যবহার করে কোন Successful Project ডেভেলপ করবে, এবং তোমার এই নতুন আবিষ্কারকে বাজারজাত করার পরিকল্পনা করবে, তখন নিশ্চয় প্রোজেক্টের সাথে এই এত বড় একটি আরডুইনো বোর্ড কানেক্ট রাখা সম্ভব হবে না! ঠিক যেমনটি তুমি কখনো এসি, টিভি, ফ্রিজ এগুলোর মধ্যে কোন আরডুইনো খুুঁজে পাবে না!
Arduino-Bootloader-New-Arduino-project
এসব ক্ষেত্রে লক্ষ্য করে দেখো, অটোমেশনের জন্য মাইক্রোকন্টোলার ঠিকই আছে। কিন্তু সম্পূর্ণ কোন Development Board নয়, শুধুমাত্র মাইক্রোকন্ট্রোলার।
কিন্তু তুমি যদি প্লান করে থাকো বাজার থেকে এই মাইক্রোকন্ট্রোলার আইসি কিনেই বসিয়ে দিবে, তাহলে বলবো – বিষয়টি কিন্তু এতটাও সহজ নয়! কারণ তুমি যদি মাইক্রোকন্ট্রোলার পরিবর্তন করো, তাহলে সেটি আর আগেরমত আরডুইনো প্লাটফর্মে প্রোগ্রামিং হবে না। কারণ এখানে Arduino Bootloader Missing!
Arduino-bootloader-Bootloader-Missing
এই টিউটরিয়্যালে আজ আমরা শিখবো, একদম ফ্রেশ একটি মাইক্রোকন্টোলারে কিভাবে এই আরডুইনোর Bootloader Burn করতে হয়।
আরডুইনো বুটলোডার আপলোড করতে আমাদের প্রয়োজন হবে একটি Working আরডুইনো বোর্ড। এই আরডুইনো বোর্ডটিই আসলে আমাদের প্রোগ্রামার হিসাবে কাজ করবে।
যা যা প্রয়োজন হবেঃ
একটি Arduino UNO R3 বোর্ড
একটি Breadboard
একটি নতুন ATmega328P মাইক্রোকন্ট্রোলার
একটি 16MHz ক্রিস্টাল অসিলেটর
দুইটি 22pF ক্যাপাসিটর (অপশনাল)
৬টি Male to Female Jumper Wire
আমি টিউটরিয়্যালটিতে একটি Arduino Uno R3 ব্যবহার করে ATmega328P মাইক্রোকন্ট্রোলারে Bootloader Burn করছি। তবে তুমি একই পদ্ধতিতে যেকোন Arduino Board ব্যবহার করে, সাপোর্টেড যে কোন Bootloader ই যেকোন মাইক্রোকন্ট্রোলারের ভিতর Burn করতে পারবে।
Arduino as ISP Programmer
পরবর্তী প্রসেসে যাওয়ার আগে সর্বপ্রথম আমরা আমাদের Arduino Uno R3 বোর্ডটিকে একটি ISP Programmer এর রুপান্তর করতে হবে। তবে চিন্তিত হওয়ার কিছু নেই, এতে তোমার Arduino নষ্ট হয়ে যাওয়ার কোন ভয় নেই এবং আরডুইনোতে কোন পরিবর্তনও আসবে না। কাজে শেষে তুমি তোমার আরডুইনো বোর্ডটিকে পূর্বের মত অন্যান্য কাজে ব্যবহার করতে পারবে।
Arduino-Bootloader-Arduino-With-Laptop-Connection
আশাকরছি তোমার কম্পিউটারে অলরেডি Arduino IDE ইনষ্টল করা রয়েছে। যদি না থাকে, তাহলে সর্বপ্রথম সফটওয়্যারটি এই লিংক থেকে ডাউনলোড এবং ইনষ্টল করে নাও।
ধাপ-১ঃ
তোমার কম্পিউটার সিস্টেম থেকে Arduino IDE টি Run করো। সফটওয়্যারটি চালু হলে উপরের মেনুবার থেকে File মেনুতে ক্লিক করে, Examples থেকে ArduinoISP তে ক্লিক করো।
Arduino-bootloader-Arduino-as-ISP-Programmer-Example-Program
ArduinoISP অপশনে ক্লিক করলে, নিচের মত প্রোগ্রাম সহ একটি উইনডোউ দেখতে পাবে।
Arduino-Bootloader-Arduino-as-ISP-Programmer-Example-Program-View
ধাপ-২ঃ
আমরা এখানে প্রোগ্রামার তৈরিতে Arduino Uno বোর্ড ব্যবহার করছি, তাই Tools মেনু থেকে এ পর্যায়ে বোর্ড হিসাবে Arduino Uno সিলেক্ট করতে হবে।
Arduino-Bootloader-Arduino-Board-Select-From-IDE
ধাপ-৩ঃ
এ পর্যায়ে আমি আমার কম্পিউটারের USB Port-এ Arduino UNO বোর্ডটির সংযোগ দিচ্ছি। সংযোগ দেওয়ার পর Arduino IDE এর Tools মেনু থেকে এ পর্যায়ে Port হিসাবে আমি COM5 (Arduino Uno) সিলেক্ট করেছি।
Arduino-Bootloader-Arduino-Port-Select-From-IDE
আমার কম্পিউটারে Arduino Uno সংযোগ দেওয়ার পর COM Port হিসাবে 5 নং পোর্ট তৈরি হয়েছে তাই এখানে COM5 দেখাচ্ছে। তবে তোমার ক্ষেত্রে তা COM8, COM10, COM15… ইত্যাদি যা কিছু হতে পারে। এটা দিয়ে উদ্বিগ্ন হওয়ার কিছু নেই। যে পোর্টের পাশে (Arduino Uno) লেখা থাকবে, সেটিই সিলেক্ট করবে। যেমনঃ COMxx (Arduino Uno)।
ধাপ-৪ঃ
এ পর্যায়ে Example Program টি আরডুইনো বোর্ডে আপলোড করতে Sketch মেনু থেকে Upload বাটনে ক্লিক করতে হবে।
Arduino-Bootloader-Arduino-Upload-Program
প্রোগ্রাম সঠিক ভাবে আপলোড সম্পন্ন হলে নিচের মত Done Uploading মেসেজ দেখতে পাবে।
Arduino-bootloader-Arduino-Upload-Program-Done
Successfully আমরা কিন্তু আমাদের Arduino Uno-কে একটি ISP Programmer তৈরি করে ফেলেছি।
এখন এই ISP Programmer দিয়ে আমরা আমাদের ফ্রেশ নতুন একটি ATmega328P মাইক্রোকন্ট্রোলারের মধ্যে Bootloader Burn করবো।
আশা করি তুমি বুঝে গিয়েছো আমরা এতক্ষণে যা কিছু করেছি, তা কিন্তু Bootloader Burn করা ছিলো না! উপরের অংশে আমরা Just বুটলোড করার জন্য একটি প্রোগ্রামার তৈরি করেছি মাত্র।
উল্লেখ্য এখন থেকে বোঝার সুবিধার্থে আমি ফ্রেশ নতুন ATmega328P চিপ কে Target Chip এবং Arduino Uno R3 কে Programmer হিসাবে মেনশন করবো।
Arduino-Bootloader-Arduino-Programmer-Target-Chip
এখন চলো Bootloader অংশের দিকে ফোকাস করি…
ধাপ-৫ঃ
বুটলোডার আপলোড করার জন্য এখন আমাদের ফ্রেশ Target মাইক্রোকন্ট্রোলারের জন্য সামান্য কিছু সংযোগ রেডি করতে হবে। যেমনঃ পাওয়ার সাপ্লাই, ক্রিস্টাল সংযোগ এবং পুল-আপ করা ইত্যাদি।
সার্কিট ডায়াগ্রামঃ
how-to-burn-bootloader-on-atmega328p
উপরের ডায়াগ্রাম অনুসারে সর্বপ্রথম আমরা একটি Breadboard এ ATmega328P মাইক্রোকন্ট্রোলার, ক্রিসটাল ওসিলেটর, ক্যাপাসিরটর এবং রেজিস্টরের সংযোগ রেডি করে নিবো।
Bootload করার সময় আমাদের একটি 5V সাপ্লাই প্রয়োজন হবে, যা আমরা আরডুইনো থেকেই ব্যবহার করতে পারবো। তাই বিষয়টি নিয়ে উদ্বিগ্ন হওয়ার কিছু নেই।
এখন আমরা Programmer এর সাথে Target Chip এর সংযোগ দিবো। সংযোগের জন্য নিচের টেবিলটি অনুসরণ করো।
Signal Name Programmer (Arduino Uno R3) Target Chip ( ATmega328P)
MOSI D11 Pin17
MISO D12 Pin18
SCK D13 Pin19
RESET D10 Pin 1
VCC 5V Pin20
GND GND Pin22
সংযোগ ডায়াগ্রামঃ
Arduino-Bootloader-Connection-Diagram
উপরের সংযোগ যদি তোমার কাছে ঝামেলার মনে হয়, তাহলে Arduino Bootloader Shield ব্যবহার করতে পারো। Bootloader Shield ব্যবহার করলে, শুধুমাত্র Shield টিকে Arduino Uno এর উপর বসালেই চলবে। (তারের সংযোগ দেওয়া ছাড়া এক্ষেত্রে, বাকি সকল প্রোসেস একই থাকবে।)
Arduino-Bootloader-Arduino-Uno-with-Bootloader-Shield
ধাপ-৬ঃ
এখন আমরা আবার Arduino IDE তে ফিরে যাবো এবং Tools থেকে Programmer হিসাবে Arduino as ISP সিলেক্ট করে দিবো।
Arduino-Bootloader-Arduino-IDE-Programmer-Select-Arduino-as-ISP
এ পর্যায়ে Arduino IDE এর ৩টি সেটিংস নিশ্চিত হয়ে নিবেঃ
সঠিক Board সিলেক্ট করা
সঠিক COM Port সিলেক্ট করা
Programmer হিসাবে Arduino as ISP সিলেক্ট করা
উপরের সেটিংস গুলো ঠিকমত configure করা থাকলে, Tools মেনু থেকে Burn Bootloader বাটনে ক্লিক করতে হবে।
Arduino-Bootloader-Arduino-IDE-Burn-Bootloader
যদি সবকিছু ঠিক থাকে তাহলে Burning bootloader to I/O Board (this may take a minute)… এমন একটি মেসেজ দেখতে পাবে।
Arduino-Bootloader-Arduino-IDE-Burning-Bootloader
Bootloader Burn হতে তোমাকে কয়েক সেকেন্ড অপেক্ষা করতে হবে। সফলভাবে Bootloader Burn হলে Done burning bootloader এমন একটি মেসেজ দেখতে পাবে।
Arduino-Bootloader-Arduino-IDE-Done-Burning-Bootloader
অর্থাৎ আমাদের Bootloader Burning প্রোসেস কিন্তু শেষ। এই ATmega328P কে এখন যে কোন Arduino UNO-তে replace করলে, সেটি ১০০% Arduino UNO তে থাকা মাইক্রোকন্ট্রোলারের মতই কাজ করবে।
বুটলোডার আপলোড করতে গিয়ে কোন সমস্যার সম্মুখীন হলে বা টিউটরিয়্যালটি সম্পর্কে তোমার যে কোন ধরণের প্রশ্ন বা মতামত শেয়ার করতে, কমেন্ট করতে পারো।
ইতিপূর্বে আমরা কিন্তু Arduino এর Power Unit নিয়ে কাজ করেছি এবং আজ শিখে নিয়েছি কিভাবে Bootloader Burn করতে হয়। পরবর্তী টিউটরিয়্যালে আমরা নিজেরাই একটি সম্পূর্ণ Arduino Board তৈরি করবো।