Site icon {maker}Bangla

আরডুইনো: কি, কেন, কিভাবে ? (Getting Started with Arduino)

আপনারা অনেকেই হয়তো আরডুইনোর নাম শুনেছেন কিন্তু কখনো আরডুইনো দিয়ে কোনো কাজ করেন নি। অনেকের ইচ্ছা আছে আরডুইনো দিয়ে প্রজেক্ট বানানোর কিন্তু কিভাবে শুরু করতে হবে সেটা জানেন না। আবার অনেকের হয়তো মাথায় অনেক সুন্দর সুন্দর আইডিয়া আছে কিন্তু আরডুইনো/মাইক্রোকন্ট্রোলার না জানার কারণে আইডিয়ার বাস্তবায়ন করতে পারছেন না। আবার অনেকে আরডুইনো না জানার কারণে বিশ্ববিদ্যালয়ের ক্লাস প্রজেক্ট গুলি ঠিকভাবে করতে পারছেন না। উপরের কোনটা যদি আপনার জন্যে সত্যি হয় তাহলে আপনি একদম ঠিক জাগাতে এসে পড়েছেন। আপনার যদি শেখার আগ্রহ থাকে, ধর্য্য থাকে আর ক্রিয়েটিভ কাজে ব্যয় করার মতো একটু সময় থাকে তবে within a few days you can be a master in Arduino. আরডুইনো সেখা সত্যি অনেক সহজ ! আরডুইনো দিয়ে কাজ করার জন্যে কম্পিউটার প্রোগ্রামিং এ আপনার সাধারণ ধারণা (basic knowledge) থাকতে হবে।

মাইক্রোকন্ট্রোলার/আরডুইনো কি ?

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

যেহেতু প্রোগ্রাম কম্পিউটারে লিখতে হয় তাই মাইক্রোকন্ট্রোলার কে কম্পিউটারের সাথে সংযোগ করার মতো ব্যবস্তা থাকতে হয়। বর্তমান সময়ে সেটা USB দিয়ে করা হয়।

Arduino UNO board

আরডুইনো হচ্ছে একটা মাইক্রোকন্ট্রোলার বোর্ড যেখানে মাইক্রোকন্ট্রোলারের সাথে আরো কিছু সুবিধা থাকে যেন আমরা সহজে আমাদের প্রজেক্টে ব্যবহার করতে পারি যেমন পাওয়ার সার্কিট, USB কানেক্টর, পিন হেডার ইত্যাদি। আরডুইনোর একটা নিজস্য কম্পিউটার সফটওয়্যার আছে যার মাধ্যমে আমরা প্রোগ্রাম লিখে আরডুইনো বোর্ডে আপলোড করতে পারি।

কেন মাইক্রোকন্ট্রোলার ব্যাবহার করবো ?

মাইক্রোকন্ট্রোলার ব্যাবহার করে আমরা যেকোনো জটিল কাজ স্বয়ংক্রিয় ভাবে করে ফেলতে পারি। ছোট্ট রিমোট কন্ট্রোলার থেকে শুরু করে মঙ্গল গ্রহে পাঠানো রোবট সবকিছুতেই মাইক্রোকন্ট্রোলার ব্যাবহার করা হয়। আমাদের বাসায় ব্যবহৃত অনেক যন্ত্রপাতির মধ্যেই মাইক্রোকন্ট্রোলার থাকে যেমন ক্যালকুলেটর, মাইক্রোওয়েভ ওভেন, ওয়াশিং মেশিন, টিভি, ফ্রিজ, প্রিন্টার কিংবা কফি মেকার।

কিভাবে শুরু করবো?

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

অনেক জ্ঞান দিয়ে ফেলেছি। চলুন এবার মূল কাজ শুরু করা যাক।

আরডুইনো সফটওয়্যার ডাউনলোড এবং ইনস্টল

প্রথমে arduino.cc তে গিয়ে আপনার অপারেটিং সিস্টেম অনুযায়ী আরডুইনো সফটওয়্যার টি ডাউনলোড করুন এবং আপনার কম্পিউটারে ইনস্টল করুন। ইনস্টল করার সময় কিছু ড্রাইভার ইনস্টল করার অনুমতি চাইতে পারে। অনুমতি প্রদান করুন। আশা করা যায় কোনো ঝামেলা ছাড়াই এটি ইনস্টল হবে।

সফটওয়্যার চালানো এবং বোর্ড সংযোগ

Arduino IDE

সদ্য ইনস্টল করা আরডুইনো সফটওয়্যার টি চালু করুন। আরডুইনো বোর্ডের সাথে দেয়া ক্যাবল এর মাধ্যমে আপনার আরডুইনো বোর্ডটি কম্পিউটারেট সাথে সংযোগ করুন। স্বয়ংক্রিয় ভাবে ডিভাইস ড্রাইভার ইনস্টল হবে এবং COM Port (e.g. COM 4) নাম্বার প্রদর্শন করবে।

নিচের ছবি অনুযায়ী ফাইল মেনু (File) তে যান এবং Blink প্রোগ্রাম টি ওপেন করুন (File -> Examples -> Basics -> Blink)।

Tools মেনু থেকে আপনার বোর্ড টি নির্বাচন করুন (Tools -> Board -> Arduino AVR Boards -> Your Board (Uno for my case) । নিচের ছবি অনুসরণ করুন।

Arduino board selection

বোর্ড নির্বাচন করা হয়ে গেলে আপনাকে Port নির্বাচন করতে হবে। আবারো Tools মেনু তে যান। সেখানে Port অপসন থেকে সেই Port টি নির্বাচন করুন যে পোর্টের মাধ্যমে আপনার আরডুইনো বোর্ডটি কম্পিউটারের সাথে সংযুক্ত।

Port selection

আপনি যদি সেখানে আপনার বোর্ড টি দেখতে না পান তার মানে আরডুইনো বোর্ডটি সফল ভাবে কম্পিউটারের সাথে সংযুক্ত হয় নি। বোর্ডটি কম্পিউটার থেকে খুলে আবার লাগিয়ে চেষ্টা করুন, না হলে অন্য USB পোর্ট এ সংযুক্ত করুন।

সফল ভাবে বোর্ড সংযোগ হয়ে গেলে আপলোড বাটন এ ক্লিক করুন। নিচের ছবি তে দেখানো হয়েছে।

আপলোড বাটন এ ক্লিক করলে প্রথমে প্রোগ্রাম টি compile হবে। প্রোগ্রামে ভুল থাকলে প্রোগ্রাম compile হতে পারবে না এবং error দেখাবে। যদি ভুল না থাকে তাহলে এটি আপনার মাইক্রোকন্ট্রালারে আপলোড হবে এবং Done uploading দেখাবে। নিচের ছবির মতো।

যদি প্রোগ্রাম সফলভাবে আপলোড হয়ে থাকে তবে আরডুইনোর Builtin LED ১ সেকেন্ড পর পর জ্বলবে।

উপরের ছবিতে আরডুইনো বোর্ডের উওপরের দিকে ১, ২, ৩ থেকে ১৩ পর্যন্ত যে নাম্বার গুলি দেয়া আছে সেগুলি হলো পিন নাম্বার। প্রতিটা পিনের একটি করে নির্দিষ্ট নাম্বার থাকে প্রোগ্রামে ওই নির্দিষ্ট পিনটাকে বুঝানোর জন্যে আমরা এই নাম্বার টা ব্যাবহার করি। ১ থেকে ১৩ পর্যন্ত মোট ১৪ টা পিন কে বলা হয় আরডুইনোর ডিজিটাল পিন। ডিজিটাল পিন মানে হলে যার দুইটা অবস্থা থাকে । একটাকে বলা হয় high আর অন্যটাকে বলা হয় low। high মানে হলো ৫ ভোল্ট আর low মানে হলো ০ ভোল্ট। কোনো পিন হাই অবস্থায় থাকা মানে ওই পিনে ৫ ভোল্ট বিদ্যমান আছে আর তখন যদি আমরা ওই পিনে কোনো LED লাইট সংযোগ করি তবে ওই LED ৫ ভোল্ট পারে আর জ্বলবে। আর ০ ভোল্ট পেলে অফ হয়ে যাবে। মজার বেপার হলো কোনো পিনে ৫ ভোল্ট থাকবে নাকি ০ ভোল্ট থাকবে এবং কথখনের জন্যে থাকবে এ সবই আমরা প্রোগ্রাম দিয়ে নিয়ন্ত্রণ করতে পারি। আর উপরের প্রোগ্রামে সেই কাজটিই করা হয়েছে।

আরেকটা মজার বিষয় হলো আরডুইনো যে শুধু একটা পিনে ৫ ভোল্ট অথবা ০ ভোল্ট তৈরী করতে তাই নয়, আমরা যদি বাইরে থেকে একটা পিনে ৫ ভোল্ট অতএব ও ভোল্ট সরবরাহ করি তবে আরডুইনো কিন্তু সেটাও বলে দিতে পারে।

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

একটু আগে আমরা যে প্রোগ্রাম টি আরডুইনো বোর্ডে আপলোড করেছি সেই প্রোগ্রামটি একটু বেখ্যা করা যাক। আমরা Blink নামের নিচের প্রোগ্রাম টি আমাদের আরডুইনো বোর্ডে আপলোড করেছি।

void setup() {
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(LED_BUILTIN, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(LED_BUILTIN, HIGH);   //turn the LED on(HIGH is the voltage level)
  delay(1000);                       // wait for a second
  digitalWrite(LED_BUILTIN, LOW);    //turn the LED off by making the voltage LOW
  delay(1000);                       // wait for a second
}

একটা আরডুইনো প্রোগ্রামে ২ টা মূল ফাঙ্কশন থাকে:

void setup() {   }

void loop() {   }

যেকোনো আরডুইনো প্রোগ্রামে এই দুইটা ফাঙ্কশন থাকতেই হবে। এই দুই ফাঙ্কশন ছাড়া কোনো আরডুইনো প্রোগ্রাম হয় না। তবে ফাঙ্কশন এর বডি তে কিছু থাকতে পারে আবার নাও থাকতে পারে। আমরা একটি প্রোগ্রামে যে ইন্সট্রাকশন গুলি শুধু একবার অথবা নির্দিষ্ট কয়েকবার চালাতে চাই সেই ইন্সট্রাকশন গুলি সাধারণত setup ( ) { } এর ভিতরে লিখি আর loop ( ) { } ফাঙ্কশন এর ভিতরে যা লিখা হয় তা প্রতিনিয়ত চলতেই থাকে যতক্ষণ মাইক্রোকন্ট্রোলার টি চালু থাকে বা পাওয়ার থাকে।

আর একটা মাইক্রোকন্ট্রোলার চালু করার পর প্রথমে setup ( ) ফাঙ্কশন এর মধ্যে যা থাকে তা রান হয় এরপর loop ( ) ফাঙ্কশন চালু হয় এবং চলতেই থাকে।

আমাদের আলোচ্ছ প্রোগ্রামে setup ( ) এর মধ্যে ২ লাইন কোড আছে।

// initialize digital pin LED_BUILTIN as an output.
pinMode(LED_BUILTIN, OUTPUT);

প্রথম লাইন টি হচ্ছে কমেন্ট যা আসলে কোনো ইন্সট্রাকশন না এবং এটি মাইক্রোকন্ট্রোলারে কোন কাজ করে না। এটা আমাদের বুঝার জন্যে আমাদের ভাষায় লেখা কিছু তথ্য। কমেন্ট শুরু হয় // দিয়ে এবং // এর পরে ঐ লাইনে যা থাকবে তাই মাইক্রোকন্ট্রোলার উপেক্ষা করবে।

২য় লাইন টি হচ্ছে pinMode ( ) ফাঙ্কশন এবং এই pinMode ( ) ফাঙ্কশন দিয়ে একটা পিন ইনপুট হবে নাকি আউটপুট হবে তা মাইক্রোকন্ট্রোলার কে বলে দেয়া হয়। pinMode ( ) ফাঙ্কশন এর দুইটি ইনপুট আছে। প্রথম ইনপুট এর মাধ্যমে বলে দিতে হয় আমরা কোন পিনের মোড নিয়ে কথা বলছি আর ২য় ইনপুট এর মাধ্যমে বলতে হয় এই পিনটি কোন মোডে কাজ করবে, ইনপুট নাকি আউটপুট।

মনে রাখতে হবে C প্রোগ্রামিং এ বড় এবং ছোট হাতের অক্ষর আলাদা আলাদা। তাই pinMode ( ) ফাঙ্কশন এর M বড় হাতের অক্ষরেই লিখতে হবে এবং OUTPUT সব বড় হাতের অক্ষরেই লিখতে হবে। এখানে LED_BUILTIN বলতে ১৩ নাম্বার পিন কে বুঝাচ্ছে। LED_BUILTIN এর জায়গায় ১৩ লিখলে ও একই কাজ করবে। আমরা যে LED লাইট কে on / off করেছি সেটি ১৩ নাম্বার পিন এ আগে থেকেই সংযোগ করা আছে।

একটা পিন কে একবার আউটপুট অথবা ইনপুট হিসাবে ঠিক করলে আমরা যথক্ষন পর্যন্ত আবার নতুন pinMode ( ) ফাঙ্কশন দিয়ে পরিবর্তন না করবো ততক্ষন আগের মোডেই বহাল থাকবে। তাই যেহেতু আমাদের এখানে এটাকে সারাক্ষন আউটপুট হিসাবেই রাখতে চাই তাই এই লাইনটা আমরা setup ( ) এর মধ্যে লিখেছি। তবে loop ( ) এর মধ্যে লিখলে ও কাজ করবে কিন্তু সেটা করার দরকার নাই। যে কাজ একবার করলেই হয় তা কেন বারবার করবো তাইনা ?

এবার loop ( ) ফাঙ্কশন এ আসি। loop ( ) ফাঙ্কশন এর মধ্যে নিচের ৪ লাইন কোড আছে।

  digitalWrite(LED_BUILTIN, HIGH);   //turn the LED on(HIGH is the voltage level)
  delay(1000);                       // wait for a second
  digitalWrite(LED_BUILTIN, LOW);    //turn the LED off by making the voltage LOW
  delay(1000);                       // wait for a second

প্রথমেই আছে digitalWrite ( ) ফাঙ্কশন। digitalWrite ( ) ফাঙ্কশন এর মাধ্যমে একটা ডিজিটাল পিন এ ভোল্টেজ তৈরী করা হয়। pinMode ( ) ফাঙ্কশন এর মতো digitalWrite ( ) ফাঙ্কশন এর ও দুইটা ইনপুট আছে। প্রথম ইনপুট হচ্ছে পিন নাম্বার আর ২য় ইনপুট হচ্ছে আমরা কত ভোল্টেজ চাচ্ছি তা। যেমন আমি যদি ২য় ইনপুট এ HIGH বলি তবে ঐ পিনে ৫ ভোল্ট তৈরী হবে আর যদি LOW বলি তবে ০ ভোল্ট তৈরী হবে। আমরা যেহেতু প্রথমে LED লাইট জ্বালাতে চাই তাই HIGH লিখেছি।

তারপরের লাইন টি হচ্ছে delay (1000)। এই লাইনের মাধ্যমে আমরা মাইক্রোকন্ট্রোলার কে বলে দিচ্ছি যে তুমি লাইট জ্বালানোর পর আর ১ সেকেন্ড কোনো কাজ করব না। অর্থাদ ১ সেকেন্ড ধরে লাইট জলে থাকবে। তারমানে delay ( ) ফাঙ্কশন এর মাধ্যমে মাইক্রোকন্ট্রোলার কে থামিয়ে রাখা যায়। ভিতরের ইনপুট টি মিলি সেকেন্ড এ দিতে হয়। তাই ১ সেকেন্ডের জন্যে আমরা ১০০০ লিখেছি। delay ( ) ফাঙ্কশন এর পর আমরা আবার digitalWrite (13, LOW ) দিয়ে ০১৩ নাম্বার পিনে ০ ভোল্ট তৈরী করেছি যেন LED লাইট বন্ধ হয়ে যায়। তারপর বন্ধ করে আমরা আবারো ১ সেকেন্ড অপেক্ষা করেছি। এখানে loop ( ) ফাঙ্কশন এর শেষ। loop ( ) ফাঙ্কশন কখনো শেষ হয় না। loop ( ) ফাঙ্কশন শেষ লাইনে এসে আবার প্রথম লাইনে থেকে শুরু হয় এবং এভাবে চলতেই থাকে। তামানে হলে loop ( ) ফাঙ্কশন এর ভিতরের ৪ লাইনে ইন্সট্রাকশন বার বার চলতেই থাকবে।

আশা করি আপনাদেরকে বুঝতে পেরেছি।

Exit mobile version