Saturday, May 7, 2016

AVR মাইক্রোকনট্রোলার টিউটোরিয়াল

[পর্ব-০১]

Ads by Techtunes - tAds
প্রথমেই বন্দনা করি সেই মহান সত্ত্বাকে যিঁনি আমাকে লেখার সামর্থ্য দিয়েছেন এবং আমার সমস্ত দেখভাল দায়িত্ব নিয়েছেন।
শুভেচ্ছা সবাইকে।কেমন আছেন সবাই।আশা করি সুস্থ ও ভাল আছেন ।আমি খুবই অলস প্রকৃতির।কিছু লিখতে কষ্ট হয়।বেশ কিছুদিন ধরে ভাবছিলাম শুধু জ্ঞান আহরন করে গেলাম, কিন্তু কিছুই দিতে পারলাম না।নিজেকে কেমন স্বার্থপর মনে হল।তাই ঠিক করলাম এবার কিছু একটা লিখবো।কিন্তু কি বিষয়ে লিখবো।আমার শখের একটি বিষয় হচ্ছে মাইক্রোকনট্রোলার নিয়ে অবসর ব্যয়  করা ও শেখা।
তো চিন্তা করলাম আমি যা কিছু শিখেছি তাই আপনাদের সাথে শেয়ার করি।এর আগেফয়সাল ভাইও মাইক্রোকনট্রোলার নিয়ে বেশকিছু টিউটোরিয়াল লিখেছেন, তবে তিনি লিখেছেন মাইক্রোচিপ এর মাইক্রোকনট্রোলার নিয়ে আর আমি লিখবো এটমেল এর মাইক্রোকনট্রোলার নিয়ে।
যেহেতু এটই আমার প্রথম টিউন(টিউন বললে ভুল হবে,বলতে পারেন আপনাদের কাছ থেকে জেনে আপনাদের সাথেই অভিজ্ঞতা শেয়ার করা।) একই সাথে যেহেতু বিষয়গুলো শিখছি এবং শেয়ার করছি তাই ভুল-ভ্রান্তি হতে পারে।তার জন্য আগেই ক্ষমা চেয়ে নিচ্ছি।আর ভুল গুলো শুধরে দিলে কৃতজ্ঞ থাকবো।অনেক কথা বলে ফেললাম এবার কাজের কথায় আসি।

মাইক্রোকনট্রোলার কিঃ

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

কেনো ব্যবহার করবঃ

কে না চায় তার নিজের একটা রোবোট থাকুক।সে যেভাবে বলবে সে ভাবেই কাজ করবে অই রোবোট।কিন্তু সেটাতো একটা যন্ত্র।যন্ত্র কি আর মানুষের কথা বোঝে।আর সেই যন্ত্রকে বোঝাতে এবং ব্যবহার করতে যে জিনিসটা লাগে তাই হচ্ছে মাইক্রোকনট্রোলার।অথবা ধরুন আপনি চান রাত বারোটা বাজার সাথে সাথে আপনার ঘরের লাইটগুলো বন্ধ হয়ে যাক আবার সন্ধ্যা ছয় বাজলেই জ্বলে উঠুক।এই কাজ খুব সহজে করে দিতে পারে মাইক্রোকনট্রোলার।অর্থাৎ আপনি যা চান তাই করতে পারবেন, তাহলে আপনি কেন ব্যবহার করবেননা?
অনেক অপ্রাসঙ্গিক কথা বলে ফেললাম। আমি এখন যে মাইক্রোকনট্রোলার নিয়ে আলোচনা করবো সেটি এটমেল এর তৈরি AVR মাইক্রোকনট্রোলার।আমরা মেগা সিরিজের Atmega8 নিয়ে কাজ করবো।এটি একটি ৮ বিট মাইক্রোকনট্রোলার।এটা এমন একটা মাইক্রোকনট্রোলার যেটা নিয়ে কাজ করা শিখলে আপনি এর থেকে ছোটো বা বড় মাইক্রোকনট্রোলার নিয়েও সহজে কাজ করতে পারবেন।তাহলে চলুন প্রথমেই এটার ব্লক ডায়াগ্রাম দেখে নেয়া যাক এটাতে কি কি আছে।
Atmega8 Block Diagram
এবার দেখুন এটার পিন ডায়াগ্রাম
Atmega8 Microcontroller PIN OUT
Atmega8 PIN OUT
পিনগুলোর কোনটা কি এবং কোন কাজে ব্যবহার করবেন তা Atmega8 এর ডাটাশীটে পাবেন। ডাটাশীট পেতে এখানে যান।প্রয়োজনে আমি কমেন্ট সেকশনে পিন গুলো নিয়ে বিস্তারিত আলোচনা করবো।
এবার মাইক্রোকনট্রোলারটি প্রোগ্রাম করে ব্যবহার করতে কি কি প্রয়োজন তা বলবো।
  • একটি Atmega8 মাইক্রোকনট্রোলার।
  • প্রোগ্রাম লেখার সফটওয়্যার।
  • মাইক্রোকনট্রোলারটি প্রোগ্রাম করার জন্য একটি প্রোগ্রামার।
  • ব্রেডবোর্ড অথবা ভেরবোর্ড।
  • প্রটিয়াস (সিম্যুলেসন করার জন্য)।
Atmega8 কিনতে পাবেন গুলিস্তান স্টেডিয়াম মার্কেট অথবা পাটুয়াটুলি মার্কেটে। মূল্য ৮০-১০০ টাকা (দোকান ভেদে)।
আর প্রোগ্রাম লেখার সফটওয়্যার হিসেবে ব্যবহার করতে পারেন Atmel Studio 6।আরও আছে microC pro for AVR,codevision,BascomAVR।তবে আমি ব্যক্তিগতভাবে Atmel studio ব্যবহার করি।আপনাদের যেটা ভাল লাগে সেটা ব্যবহার করতে পারেন।এরপরে আসি প্রোগ্রাম লোডারে।এটাও আপনি কিনতে পারবেন পাটুয়াটুলি থেকে।মূল্য নিবে ৪০০০-৭০০০ টাকা বা তারও বেশি।তবে সবচেয়ে ভালো হয় নিজে তৈরী করতে পারলে।খরচও কম হবে আবার বিষয়টা সম্পর্কেও জ্ঞাত হবেন।কিভাবে আপনি একটি প্রোগ্রাম লোডার তৈরি করতে পারেন সেইটা নিয়ে খুব দ্রুতই টিউন করবো।এখন কিভাবে আপনি এগুলো ব্যবহার করবেন।আপনাকে তো সার্কিট বানিয়ে দেখতে হবে।সেক্ষেত্রে আপনি ভেরোবোর্ড অথবা ব্রেডবোর্ড ব্যবহার করতে পারেন।তবে বার বার সোল্ডারিং করার ঝামেলা এড়াতে চাইলে একটা ব্রেডবোর্ড কিনে নিতে পারেন।পাবেন পাটুয়াটুলিতে।মূল্য পরবে ১৩০-২০০ টাকা।তবে আপাততো এগুলো করতে না পারলে কোনো সিম্যুলেসন সফটওয়্যার ব্যবহার করে সার্কিট ঠিক আসে কিনা টেস্ট করতে পারেন।সেক্ষেত্রে আপনি ব্যবহার করতে পারেন প্রোটিয়াস।ডাউনলোড করুন এখান থেকে।ইনস্টল করতে কোনো ঝামেলা হলে আমাকে জানাবেন।চলুন তাহলে ছোট একটা প্রোজেক্ট তৈরি করা যাক।

LED জ্বলা ও নেভাঃ

আমরা এমন একটি প্রোগ্রাম করবো যার কাজ হবে একটি লেডকে জ্বলানো এবং নেভানো।আমরা প্রোগ্রাম করার জন্য C ল্যাঙ্গুয়েজ ব্যবহার করবো।তবে আপনি চাইলে ASM অথবা Basic দিয়েও করতে পারেন।তবে আমি সি তে আরামবোধ করি।আর আপনি C শিখতে চাইলে Herbert Schildt এর Teach yourself C বইটা দেখতে পারেন।অনেক ইনফরমাটিভে একটা বই।আর হ্যাঁ মাইক্রোকন্ট্রোলার প্রোগ্রামিং বলে কিছু নেই।আসল জিনিস অই সি,বেসিক অথবা এএসএম।শুধু নতুন কিছু ইন্সট্রাকশন শিখতে হয়।তাহলে আর দেরি কেনো?আপনার প্রোগ্রাম সফটওয়্যার এ নিচের কোডটুকু লিখে ফেলুন।
1
2
3
4
5
6
7
8
9
10
11
12
#include<avr/io.h>
#include<util/delay.h>
 
void main()
{
    DDRD = 0xFF;
    while(1)
    {
        PORTD = 0x00;
        PORTD = 0xFF;
    }
}
এবার প্রোগ্রামটি রান করুন।দেখবেন আপনার প্রোজেক্ট ফোল্ডারে একটি হেক্স ফাইল তৈরি হয়েছে।ফাইলটির লোকেশন চিনে রাখুন, কারন পরে আমাদের এই ফাইলটিই লাগবে।
এবার এই হেক্স ফাইলটি আপনার মাইক্রোকন্ট্রোলারে লোড করুন এবং নিচের সার্কিট ডায়াগ্রামের মত একটি সার্কিট তৈরি করুন।
LED Flashingএখন দেখুন ফলাফল কি হয়।কি ঘাবরে গেলেন।
কিছুইতো হলোনা।হ্যাঁ ঠিক তাই।আমরা যেমন বলেছিলাম LED টি জ্বলবে আর নিভবে তার কিছুই হচ্ছেনা।কিন্তু আসলে হচ্ছে এবং এত দ্রুত হচ্ছে যে আমরা কিছুই বুঝতে পারছিনা।
এবার কোডটা একটু পরিবর্তন করা যাক
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include<avr/io.h>
#include<util/delay.h>
 
void main()
{
    DDRD = 0xFF;
    while(1)
    {
        PORTD = 0x00;
        delay_ms(1000);
        PORTD = 0xFF;
        delay_ms(1000);
    }
}
আবার পুনরায় লোড করুন এবং দেখুন।কি দেখছেন লেডটি ১ সেকেন্ড পরপর জ্বলছে আর নিভছে।কেনো এমন হলো?আগের কোডে কি কোনো ভুল ছিলো?না।তাহলে?
আপনারা জানেন যে আমাদের দর্শানুভূতির স্থায়িত্বকাল ০.১ সেকেন্ড।আগের কোডে লেডটি এত দ্রুত জ্বলছিলো আর নিভছিলো যে আমরা সেটা সবসময় না জ্বলা অবস্থায় দেখেছি।
তবে আগের কোডটিকে একটু পরিবর্তন করে নিচের মত লিখলে সবসময় জ্বলা অবস্থায় দেখতে পাবেন।
1
2
3
4
5
6
7
8
9
10
11
#include<avr/io.h>
#include<util/delay.h>
void main()
{
    DDRD = 0xFF;
    while(1)
    {
        PORTD = 0xFF;
        PORTD = 0x00;
    }
}
আর পরের কোডটিতে আগের কোডটি একটু পরিবর্তন করে মাইক্রোকন্ট্রোলারকে বলেছিলাম যে জ্বলা আর নেভার কাঝে ১ সেকেন্ড অপেক্ষা করতে।আমরা delay_ms() ফাংশনটির মাধ্যমে এই অপেক্ষা করতে বলেছিলাম।বিষয়টি আমার পূর্বে ফয়সাল ভাই ব্যখা করেছিলেন তাই আমি আর করলাম না।

1 comment: