শনিবার, ৩০ জানুয়ারী, ২০১৬

আমাদের প্রথম প্রোগ্রাম


PIC Programmer
মাইক্রোকন্ট্রোলারে কিছু কাজ করতে গেলে সেটাকে প্রোগ্রাম করতে হয়। প্রোগ্রাম আসলে একটা নির্দেশ এর তালিকা যা μC কে চালায়। μC খুব ছোট বলে এই প্রোগ্রামটা আমরা বাইরে, মানে ল্যাপটপে বা ডেস্কটপ কম্প্যুটারে করে সেটা μC তে লিখে দি।  পাশে এই রকম একটা প্রোগ্রাম লেখার যন্ত্র দেখছ। এতে  μC র ICটা বসাতে হয় আর কম্প্যুটারের USB পোর্ট থেকে প্রোগ্রাম μCতে লেখা হয়। এই প্রোগ্রামার Amazon.com বা নানা রকম ইলেক্ট্রনিক্স সামগ্রীর দোকানে পাওয়া যায়, দাম ১০০০ টাকা। যখন আমরা নতুন কিছু তৈরী করতে গেলে আমাদের কখন বার বার প্রোগ্রাম পালটাতে হয়। এই দরণের প্রোগ্রামারে এটা অসুবিধা জনক। এই অসুবিধা দুর করার জন্য কিছু যন্ত্র আছে যাতে μCকে তার নিজের সার্কিটে বসিয়ে প্রোগ্রাম করা যায়। এতে μCটাকে বার বার খোলার দরকার হয় না। এই ধরনের যন্ত্রগুলোর দাম একটু বেশি, Microchip PIC  μC 
PICkit 3 In-Circuit Debuggerপ্রোগ্রাম করার জন্য এই PICKIT-3 যন্ত্রটার দাম প্রায় ৫০০০ টাকা পড়ে যাবে। এই ইনসার্কিট প্রোগ্রামার শুধু প্রোগ্রাম লেখা ছাড়া আরও নানা রকম কাজে ব্যবহার করা হয়। তবে প্রত্যেক μC তাদের নিজের প্রোগ্রামার বার করে। যারা μC নিয়ে অনেক কাজ করবে তাদের জন্য এই খরচা করা ছাড়া আর কোন উপায় নেই।
 তবে এই খরচাটা একবার শুধু লাগে, μC  দাম খুব একটা বেশী নয়। ১৫০ - ৪৫০ টাকাতে বেশীরভাগ μC পাওয়া যায়। শেখার জন্য বা একটা দুটো কাজ করার জন্য আমরা কিছু  μC ডেভালাপমেন্ত যন্ত্র ব্যবহার করতে পারি। এগুলোতে প্রোগ্রাম লেখার ব্যবস্থা করা থাকে। এই রকম একটা যন্ত্র Arduino Uno এতে মুল কম্প্যুটার থেকে প্রোগ্রাম μC পাঠাবার ব্যবস্থা করা আছে আর দামটাও খুব একটা বেশী নয়। আমি এই রকম একটা যন্ত্র এই ব্লগটা লেখার জন্য Amazon.com থেকে কিনলাম, দাম পড়ল ৪৫০ টাকা।
Arduino কম্পানি মুক্ত প্রোগ্রামে বিশ্বাস করে। এর নানা প্রোগ্রাম আমরা নিজেদের মধ্যে আদান প্রদান করতে পারি। এই μC জন্য প্রোগ্রাম লেখার যাবতীয় প্রোগ্রাম আমরা https://www.arduino.cc/en/Main/Software থেকে পেতে পারি। এর জন্য কোন দাম লাগে না। আমি এখান থেকে এর প্রোগ্রামটা নিজের কম্প্যুটারে install করলাম।
ide
Arduinoর প্রোগ্রামকে sketch বলে। File menuতে কিছু উধাহ্ররন দেওয়া আছে। তার মধ্যে একটা খুব সহজ প্রোগ্রাম আমি নিলাম। এই প্রোগ্রামটা C তে লেখা।
/*
 Blink
 Turns on an LED on for one second, then off for one second, repeatedly.
 
 This example code is in the public domain.
 */
 
// Pin 13 has an LED connected on most Arduino boards.
// give it a name:
int led = 13;
// the setup routine runs once when you press reset:
void setup() { 
 // initialize the digital pin as an output.
 pinMode(led, OUTPUT); 
}
// the loop routine runs over and over again forever:
void loop() {
 digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
 delay(300); // wait for a 0.3 second
 digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
 delay(300); // wait for a 0.3 second
}
 
sketchএর দুটো ভাগ - setup আর loop। setup প্রোগ্রামটা μC তে পাওয়ার দেবার সঙ্গে সঙ্গে চলে, এর পরে loop প্রোগ্রামটা চলতে থাকে। μCর প্রোগ্রাম সবসময় চলতে হয়, প্রোগ্রাম না চললে µC থেমে যাবে। 
setupএ আমরা µC পিন গুলো কি করবে তা ঠিক করি।   পিন  ১৩ তে একটা LED দেওয়া আছে। তাই আমরা সেটা জালা নেবা করে আমাদের প্রথম প্রোগ্রাম লিখব।
pinMode(led, OUTPUT); বলে যে পিন ১৩, যেটা আগে ledতে সেট করেছি, সেটাকে output হিসাবে ব্যবহার করতে। loop প্রোগ্রাম বার বার চলতে থাকে। এখানে আমরা ledকে একবার জ্বালাচ্ছি তারপর ৩০০ মিলি সেকেন্ড পরে ওটাকে নেবাচ্ছি। এই প্রোগ্রামটা লিখে আমরা IDE menu File>Upload করে Arduinoতে পাঠিয়ে দিলাম। এখন led জলা নেবা করছে।
20160130_123356

রবিবার, ১৭ জানুয়ারী, ২০১৬

মাইক্রোকন্ট্রোলার কী?

মাইক্রোকন্ট্রোলার একটি ছোট্ট কম্পুটার। এটা একটা ইলেক্ট্রনিক IC হিসেবে পাওয়া যায়। অন্য কম্পুটারের মত এতে প্রসেসর কোর, মেমরি, এবং প্রোগ্রামেবল ইনপুট / আউটপুট যন্ত্রানুষঙ্গ এতে থাকে।  মাইক্রোকন্ট্রোলার অটোমোবাইল ইঞ্জিন নিয়ন্ত্রণ সিস্টেম,  ডাক্তারির যন্ত্রপাতি, রিমোট কন্ট্রোল, অফিসের মেশিন, যন্ত্রপাতি, শক্তি সরঞ্জাম, খেলনা ও অন্যান্য নানারকমের  স্বয়ংক্রিয়  ডিভাইসে ব্যবহার করা হয়। একটা  microprocessor, মেমরি, এবং ইনপুট / আউটপুট ডিভাইস ব্যবহার করে  পুরনো দিনের ইলেক্ট্রনিসের যন্ত্রের তুলনায় আয়তন এবং খরচ কমিয়ে দেয়। এই জন্য আজকাল মাইক্রোকন্ট্রোলারের ব্যবহার  লাভজনক হয়ে পড়েছে।
বড় মাইক্রোকন্ট্রোলার 

খুব ছোট মাইক্রোকন্ট্রোলার

মাইক্রোকন্ট্রোলার একটি প্রসেসর, মেমরি এবং যন্ত্রানুষঙ্গ সঙ্গে একটি স্বয়ংসম্পূর্ণ সিস্টেম বলা যেতে পারে। এটাতে সাধারণভাবে, একটা  সেন্ট্রাল প্রসেসিং ইউনিট থাকে। খুব জটিল 32-বিট বা 64 বিট প্রসেসর থেকে ছোট এবং সহজ 4-বিট প্রসেসর ব্যবহার হয়ে থাকে। ছোটো তথ্য সংগ্রহের জন্য কিছু পরিমাণ  RAM আর প্রোগ্রাম রাখার জন্য রম, ইপিআরওএম, EEPROM অথবা ফ্ল্যাশ মেমরি থাকে। আর থাকে তথ্য আদান প্রদানের জন্য পোর্ট -- সিরিয়াল পোর্ট হিসেবে সিরিয়াল ইনপুট / আউটপুট (UARTs) সিস্টেম ইন্টারকানেক্ট জন্য I²C, সিরিয়াল পেরিফেরাল ইন্টারফেস এবং কন্ট্রোলার এরিয়া নেটওয়ার্ক মত অন্যান্য সিরিয়াল যোগাযোগ ইন্টারফেস। এছাড়া থাকে  টাইমার, ইভেন্ট কাউন্টার, PWM জেনারেটর, এবং পাহরাদার হিসেবে কিছু যন্ত্রানুষঙ্গ, অনেক এনালগ টু ডিজিটাল কনভার্টার, কিছু ডিজিটাল টু এনালগ কনভার্টার।

মাইক্রোকন্ট্রোলারের ভেতরের যন্ত্র 
এত কিছু জিনিস থাকার জন্য বেশীরভাগ সময় এর পিন গুলো একের বেশি কাজে ব্যবহার করা হয়ে থাকে। দেখা যাক এই IC টাকে :-
এই IC টা ব্যবহার করে আমরা নানা রকমের জিনিস বানাতে পারি। সেটা আমরা এর পরের লেখায় দেখব।