আর্ডুইনো দিয়ে AVR MCU প্রোগ্রামিং

আজকে এক ফ্রেন্ডকে AVR MCU দিয়ে প্রযেক্ট ডিপ্লয় করার কথা বললে সে উত্তর হিসাবে বলে যে, “আমি তো AVR প্রোগ্রামিং পারি না।” আমার যেহেতু এই আঙ্গনে কিঞ্চিৎ চলা ফেরা আছে, তাই আমি জানি যে AVR প্রোগ্রামিং ছাড়াই ATtiny13A, ATmega8 টাইপের চিপ গুলা প্রোগ্রাম করা যায়। এর জন্য আর্ডুইনো কোড করার জন্য যতটুকু জ্ঞান দরকার, তা থাকলেই চলে 🙂

মিছা কথা। আসলে আর্ডুইনো কোড করতে যতটুকু জ্ঞান দরকার তারথেকে একটু বেশি জ্ঞান লাগে। যেটুকু বেশি লাগে, সেটুকু নিয়েই লিখতে বসেছি।

 

আচ্ছা, এখন প্রশ্ন হতে পারে ৫০০ টাকা দামের একটা আর্ডুইনো উনো বোর্ডে বসিয়ে দিলেই তো হয়। স্পেশ নিয়ে সমস্যা? তাহলে আর্ডুইনো মাইক্রো দিলেই তো হয়ে যায়। তাহলে কেন মাথা নষ্ট করে স্ট্যান্ডঅ্যালোন মাইক্রোপ্রসেসর প্রোগ্রাম করতে যাব? উত্তরটা হচ্ছে পাওয়ার কনজানম্পশান। আর্ডুইনোতে পাওয়ার লস হবার অনেক কম্পোনেন্ট আছে। যেমন, আর্ডুইনো 3.3 থেকে 9 ভোল্ট পর্যন্ত পাওয়ার করা যায়। মানে বেশ কিছু ভোল্টেজ রেগুলেটর আছে। তার উপর আরও কিছু LED হ্যানত্যান আছে। সুতরাং, ব্যাটারি চালিত কোন প্রযেক্ট ডিপ্লয় করতে হলে MCU এর বিকল্প নাই 🙂

 

যা যা লাগবে:

১। আর্ডুইনো উনো,

২। একটা ১০ মাইক্রো ফ্যারাড ক্যাপাসিটর,

৩। যে MCU টা প্রোগ্রাম করবেন সেটা,

৪। সুবিধা মত জাম্পার ওয়ার ও

৫। বুক ভরা সাহস… (ফাইজলামি করলাম। আমার মত ফেইল করা ছাত্র পারলে যে কেও পারবে)

আচ্ছা, এইবার আসি কাজের কথায়। স্টেপ বাই স্টেপ ফলো করলেই হবে,

বিঃদ্রঃ এক্ষেত্রে আমি Arduino UNO এবং ATmega8A ব্যবহার করে উদাহরণ দিয়েছি। কেন? হাতের কাছে ছিল।  একটা ATTiny13A ও ছিল, কিন্তু পিন কম বলে ব্যবহার একটু সীমিত।

১ম স্টেপ:

এই লিংক থেকে আপনার MCU এর জন্য বোর্ড ফাইলের লিংকটি খুঁজে বের করুন এবং লিংকটি কপি করুন। যেমন, ATmega8A, ATmega328, ATmega88, ATmega168 এর জন্য লিংক হচ্ছে https://mcudude.github.io/MiniCore/package_MCUdude_MiniCore_index.json

২য় স্টেপ:

Arduino IDE ওপেন করে প্রেফারেন্সে যান। অতঃপর Additional Board Manager এর যায়গাতে আপনার কপি করা লিংকটি পেস্ট করুন এবং ওকে ক্লিক করুন।

৩য় স্টেপ:

আর্ডুইনো উনো কানেক্ট করুন এবং Arduino IDE তে File>Example>ArduinoISP>ArduinoISP স্কেচটি ওপেন করুন ও এটি আর্ডুইনো উনোতে আপলোড করুন।

৪র্থ স্টেপ:

আপনার MCU এর ডাটাশীট গুগল করে খুজে বের করুন। একটা MCU কে আর্ডুইনো দিয়ে প্রোগ্রাম করতে আমাদের ছয়টা পিনের দরকার। পিন গুলা হচ্ছে RESET, MISO, MOSI, SCK, VCC আর GND। মানে আমরা মূলত SPI বাসের মাধ্যমে MCU টির সাথে কমিউনিকেট করব এবং প্রোগ্রাম করব। বিস্তারিত চাইলেই লিখা যায় কিন্তু আগে জানতে হবে অডিয়েন্স রেডি কিনা। 😉

নীচের ছবিতে ATmega8A এর জন্য পিন লেআউট তুলে ধরা হল। এখানে দেখলে বুঝা যায়, PIN1 হচ্ছে RESET, PIN7 VCC, PIN8 GND, PIN19 SCK, PIN18 MISO এবং PIN17 MOSI.

৫ম স্টেপ:

এবার আমাদের MCU টিকে আর্ডুইনোর SPI বাসের সাথে কানেক্ট করতে হবে। আমরা যদি ডকুমেন্টেশন দেখি তাহলে বুঝতে পারব আর্ডুইনো উনো এর PIN13 SCK, PIN12 MISO, PIN11 MOSI এবং PIN10 SS. তারমানে দাঁড়াচ্ছে যে আর্ডুইনোর PIN13 কানেক্ট করতে হবে MCU এর SCK পিনে, এক্ষেত্রে ATMega8A এর PIN19 এ। অনুরুপ পিন গুলি কানেক্ট করতে হবে। VCC ও GND পিন কানেক্ট করতে হবে আর্ডুইনোর 5V ও GND পিন এর সাথে। PIN10 এর কাজ ব্যাখ্যা করার ধৈর্য আপাতত নাই এবং এটার বিস্তারিত আলোচনা এই আর্টিকেলের আওয়তামুক্ত বলেই মনে করি। তবে PIN10 কানেক্ট করতে হবে MCU এর রিসেট পিনে। ওহ, ভাল কথা, ১০ মাইক্রো ফ্যারাড ক্যাপাসিটরটার কথা মনে আছে? ওটাকে লাগিয়ে দিন আর্ডুইনোর RESET পিন আর GND পিনের মাঝে…

কানেকশন বুঝতে অসুবিধা হলে, এই লিংকে গেলেই হবে…

 

৬ষ্ঠ স্টেপ:

আচ্ছা, এবার MCU এর কোন পিন স্কেচে কি লিখতে হবে তাতো বুঝতে হবে নাকি? একটু গুগল করলেই পেয়ে যাবেন। না পেলে হিন্টস দেই, ADC গুলি হচ্ছে Analog Pin, PD গুলি Digital Pin আর OC লিখা গুলিতে আছে PWM সুবিধা। এটার জন্য একটা ছবি বানাইতে হবে, অসুবিধা হইলে কমেন্টে জানায়েন, চেষ্টা করব দ্রুত দেবার। জাতির পছন্দের D13 পিন হচ্ছে, ATmega8 এর PIN19 😉

৭ম স্টেপ:

এবার আর্ডুইনোটা পিসিতে কানেক্ট করেন। Arduino IDE এর Tools থেকে Board সিলেক্ট করেন যেটা আপনার বোর্ড, এক্ষেত্রে আমি ATmega8 সিলেক্ট করেছি। আর Programmer সিলেক্ট করেন Arduino ISP. এবার আপনি যেই স্কেচ MCU  তে বার্ন করতে চান, সেটিকে Shift চেপে রাখা অবস্থায় আপলোড করেন বা “Upload using Programmer” অপশন ব্যবহার করেও করতে পারেন। ব্যাস। কাজ শেষ -_-

 

কোন সমস্যা হলে, এখানে কমেন্ট করতে পারেন বা ইমেইল করতে পারেন, [email protected] এ। ফেসবুকেও মেসেজ করতে পারেন।

ধন্যবাদ সময় নিয়ে পড়ার জন্য 🙂