মাইক্রোকন্ট্রোলার দিয়ে সিরিয়াল কমিউনিকেশন। পর্ব-১
মাইক্রোকন্ট্রোলার দিয়ে সিরিয়াল কমিউনিকেশন। পর্ব-২
আজব তো! যেই না এক পুঁচকে মাইক্রোকন্ট্রোলার সে কিনা কথা বলে কম্পিউটারের সাথে! কথা বলার জন্য আছে প্রোটোকল মানে নির্দিষ্ট পদ্ধতিতে কথা বলা। কথা বলা, মানে ডাটা কমিউনিকেশনের জন্য আমরা ব্যাবহার করব সিরিয়াল কমিউনিকেশন। সিরিয়াল কমিউনিকেশন নিয়ে জানতে পড়া যেতে পারে, মাইক্রোকন্ট্রোলার দিয়ে ডাটা কমিউনিকেশন হয় যেভাবে..., আর প্রজেক্টে ব্যাবহার হচ্ছে, ATMEGA16 (8MHz), MAX232 আই সি, DB9 Female কানেক্টর আর হাবিজাবি কিছু জিনিসপত্র।
কম্পিউটার এর সাথে মাইক্রোকন্ট্রোলার যোগাযোগ জন্য ব্যাবহার করে সিরিয়াল কমিউনিকেশন। কিন্তু বেশি দূরত্বে সিরিয়াল কমিউনিকেশন কাজ করতে পারে না। তখন একে RS232 নামের আরেকটা প্রোটোকলের ঘাড়ে বসিয়ে দেয়া হয়, যেটা কিনা টববগ করতে করতে অনেক দূরে চলে যেতে পারে। আর কম্পিউটার বেচারা RS232 প্রোটোকল ছাড়া সিরিয়াল কমিউনিকেশন গ্রহনই করতে পারে না। তাই দুটো প্রোটোকলকে মাঝখানে একবার কনভার্ট করে নিতে হয়। MAX232 বেচারা ক্রসফায়ারে পড়ে এক প্রোটোকলের ডাটা অন্যটাতে কনভার্ট করতে থাকে। পুরো ব্যাপারটা এরকম,
সিরিয়াল কমিউনিকেশনের বেলায় DB9 নামের একটা কানেক্টর ব্যাবহার করতে হয়, কম্পিউটারের মাল-মশলা আর মাইক্রোকন্ট্রোলারের গাট্টি-বস্তার সাথে কানেক্ট করার জন্য। এটার ছবি দেখতে নিচের মত,
এর দুটো ভেরিয়েশন আছে, মেইল আর ফিমেইল। পিন ডায়াগ্রামসহ বিস্তারিত উপরের ছবিটা দেখলে বোঝা যাবে।
আমাদের কাজ হল- কম্পিউটার থেকে কিছু কমান্ড দেয়া। যেমন,
কমান্ড | কাজ |
ON | LED জ্বলে উঠবে |
OFF | LED নিভে যাবে |
GET | LED র বর্তমান স্ট্যাটাস কম্পিউটারকে জানাবেON: LED জ্বলে আছেOFF: LED নিভে আছে |
এ প্রজেক্টের প্রথম অংশে দেখানো হবে কিভাবে মাইক্রোকন্ট্রোলার দিয়ে সিরিয়াল কমিউনিকেশন ব্যাবহার করা যায়। ATMEGA16 এ 14, 15 পিন হল সিরিয়াল কমিউনিকেশনের যথাক্রমে রিসিভার আর ট্রান্সমিটার পিন। যেগুলো দিয়ে সিরিয়াল ডাটা রিসিভ হবে কিংবা পাঠানো হবে যথাক্রমে। আগেই বলা হয়েছে, এই সিরিয়াল ডাটার মাথা-মুন্ডু কম্পিউটার কিচ্ছু বুঝবে না। এটাকে এখন কনভার্ট করা লাগবে RS232 প্রোটোকলে। এর জন্য 14 আর 15 পিনদুটো MAX232 এর 12 আর 11 পিনে লাগানো আছে যেগুলো হল MAX232 এর সিরিয়াল ডাটা। আর 14, 13 পিন দুটো হল সেগুলোর RS232 ডাটা যেগুলোকে মাত্র সিরিয়াল থেকে কনভার্ট করা হয়েছে। এই ডাটাগুলোই যাবে কম্পিউটারে, একটা DB9 ফিমেইল কানেকটর হয়ে। MAX232 এর কানেকশনের বেসিক ডায়াগ্রাম হল,
পুরো সার্কিটের কানেকশন হল নিচের মত (একটা LED ও কিন্তু লাগানো আছে সাথে),
আরো দুটো কথা বলতে হবে। উপরের ছবিতে Terminal 1 আর Terminal 2 নামের যে দুটো জিনিস আছে ওগুলো শুধুমাত্র ডিবাগ বা টেস্ট করার জন্য। যেমন, Terminal 1 এ ON লিখে Enter দিলেই D1 নামের এল ই ডি জ্বলে উঠে আর OFF লিখলে নিভে যায়। Terminal 1 কে কম্পিউটারের জায়গায় কল্পনা করা যেতে পারে। Terminal 2 তে আবার দেখা যায়, Terminal 1 এ দিয়ে কি যাচ্ছে মাইক্রোকন্ট্রোলারে- সেটা। প্রোটিয়াস এ সিমুলেশন রান করিয়ে উপরের টেবিল মাফিক কমান্ডগুলো Terminal 1 এ লিখতে হবে। একইভাবে GET লিখে Enter চাপলে এল ই ডি এর স্ট্যাটাস (ON কিংবা OFF) দেখা যাবে টার্মিনালে। প্রোটিয়াস সফটয়্যার নিয়ে জানতে পড়া যেতে পারে, সার্কিট বানানোর মজার সফটওয়্যারঃ প্রোটিয়াস।
MikroC এর সিরিয়াল কমিউনিকেশন লাইব্রেরি ব্যাবহার করা হয়েছে কোডটাতে। প্রথমে কোডটা দেখা যাক,
void main() { char buffer[10]; char i; DDB0_bit = 1; PORTB0_bit = 0; UART1_Init(9600); Delay_ms(100); while (1) { if (UART1_Data_Ready()) { UART1_Read_Text(buffer, "\r", 8); for (i=0; i buffer[i] = tolower(buffer[i]); } if (!strcmp(buffer, "on")) { PORTB0_bit = 1; } else if (!strcmp(buffer, "off")) { PORTB0_bit = 0; } else if (!strcmp(buffer, "get")) { if (PORTB0_bit) { UART1_Write_Text("ON\r\n"); } else { UART1_Write_Text("OFF\r\n"); } } } } }
মাইক্রোকন্ট্রোলার চেক করে দেখছে, সিরিয়াল কোন ডাটা এসেছে কিনা। এসে থাকলে উপরের টেবিল অনুযায়ী হুকুম তামিল করছে। প্রয়োজনে LED র স্ট্যাটাস ট্রান্সমিট করে দিচ্ছে।
এর পরের অংশে থাকবে, কম্পিউটার এর সাথে কানেকশন এবং কম্পিউটার থেকে কমান্ড দেয়া।
সৌজন্যে: যন্ত্রপাতি.কম
আমি শিশির। বিশ্বের সর্ববৃহৎ বিজ্ঞান ও প্রযুক্তির সৌশল নেটওয়ার্ক - টেকটিউনস এ আমি 14 বছর 5 মাস যাবৎ যুক্ত আছি। টেকটিউনস আমি এ পর্যন্ত 7 টি টিউন ও 24 টি টিউমেন্ট করেছি। টেকটিউনসে আমার 0 ফলোয়ার আছে এবং আমি টেকটিউনসে 0 টিউনারকে ফলো করি।
আমি স্টুডেন্ট। কম্পিউটার সায়েন্স অ্যন্ড ইঞ্জিনিয়ারিং সাব্জেক্টে পরছি।
প্রিয় টিউনার,
আপনি আংশিক টিউন করে ডাউনলোড লিংক বা অন্য লিংক টিউনে সরাসরি না দিয়ে টিউডার ও টিউজিটর কে নিজের সাইট/ব্লগ/ফোরাম/পেইজে উদ্দেশ্যমূলক ভাবে রিডাইরেক্ট করছেন যা সম্পূর্ণ টেকটিউনস নীতিমালা বিরোধী।
টেকটিউনস নীতিমালা https://www.techtunes.io/terms ১.১২ অনুযায়ী – টিউন করে বাকি টিউন পড়তে নিজের ব্লগ বা অন্য কারো ব্লগ এর লিংক দেয়া যাবে না। সম্পূর্ণ টিউন করে প্রয়োজনে লেখক ও লেখার সূত্র উল্লেখ করে টিউন করা যাবে।
এবং টেকটিউনস নীতিমালা https://www.techtunes.io/terms ১.১৩ অনুযায়ী টিউন করে ডাউনলোড করার জন্য নিজের ব্লগে বা অন্য কোন ব্লগের ঠিকানা দেওয়া যাবে না। ডাউনলোডের জন্য নীতিমালা ১.১৬ মেনে প্রয়োজনীয় লিংক টিউন অবস্থান করতে হবে। প্রয়োজনে টিউনের মধ্যে “আমার ব্লগ” উল্লেখ করে সাক্ষার হিসেবে নিজের ব্লগের লিংক দেওয়া যাবে।
নিজের সাইট বা কোন লিংকে টিউডার কে কখনও এভাবে রিডাইরেক্ট করবেন না বা নিজের সাইট বা কোন লিংক টিউডারের কাছে আকৃষ্ট করার জন্য টিউন করে কোন লিংকে হেডিং (h1,h2,h3) বা বড় টেক্সট করে দিবেন না।
আপনি সম্পূর্ণ টিউন টেকটিউনসে করুন এবং আপনার সাইটের লিংক দেবার জন্য টিউনের নিচে ব্লককোট করে “সৌজন্যে:” লিখে সাইটের লিংক দিন। এই টিউনটি https://www.techtunes.io/internet/tune-id/188009 লক্ষ করুন টিউডার ও টিউজিটরদের কোন প্রকার অযাচিত আকৃষ্ট না করে টিউনের শেষে; নিচে কীভাবে ব্লককোট করে “সৌজনে:” লিখে লিংক দেয়া হয়েছে। এতে আপনার টিউনের টিউডার ও টিউজিটরা আপনার প্রতি পূর্ণ আস্থা ও বিশ্বাস স্থাপন করবে।
আশা করি আপনি টেকটিউনস নীতিমালার প্রতি শ্রদ্ধাশীল থাকবেন এবং আপানার মৌলিক, নিজেস্ব , অভিনবত্য আর উদ্ভাবনী জ্ঞানের প্রয়োগ ঘটাবেন এবং টেকটিউনসকমিউনিটিকে মানসম্মত ও গঠনমূলক টিউন উপহার দিয়ে টেকটিউনেসর সুন্দর, আন্তরিক ও সাবলীল পরিবেশ ও টেকটিউনসের ধারা বজায় রাখবেন।
ধন্যবাদ আপনাকে।