মাইক্রোকন্ট্রোলার দিয়ে সিরিয়াল কমিউনিকেশন সিমুলেশন-পর্ব ১ | Blogkori

আজব তো! যেই না এক পুঁচকে মাইক্রোকন্ট্রোলার সে কিনা কথা বলে কম্পিউটারের সাথে! কথা বলার জন্য আছে প্রোটোকল মানে নির্দিষ্ট পদ্ধতিতে কথা বলা। কথা বলা, মানে ডাটা কমিউনিকেশনের জন্য আমরা ব্যাবহার করব সিরিয়াল কমিউনিকেশন। সিরিয়াল কমিউনিকেশন নিয়ে জানতে পড়া যেতে পারে, মাইক্রোকন্ট্রোলার দিয়ে ডাটা কমিউনিকেশন হয় যেভাবে…, আর প্রজেক্টে ব্যাবহার হচ্ছে, ATMEGA16 (8MHz), MAX232 আই সি, DB9 Female কানেক্টর আর হাবিজাবি কিছু জিনিসপত্র।

MAX232:

কম্পিউটার এর সাথে মাইক্রোকন্ট্রোলার যোগাযোগ জন্য ব্যাবহার করে সিরিয়াল কমিউনিকেশন। কিন্তু বেশি দূরত্বে সিরিয়াল কমিউনিকেশন কাজ করতে পারে না। তখন একে RS232 নামের আরেকটা প্রোটোকলের ঘাড়ে বসিয়ে দেয়া হয়, যেটা কিনা টববগ করতে করতে অনেক দূরে চলে যেতে পারে। আর কম্পিউটার বেচারা RS232 প্রোটোকল ছাড়া সিরিয়াল কমিউনিকেশন গ্রহনই করতে পারে না। তাই দুটো প্রোটোকলকে মাঝখানে একবার কনভার্ট করে নিতে হয়। MAX232 বেচারা ক্রসফায়ারে পড়ে এক প্রোটোকলের ডাটা অন্যটাতে কনভার্ট করতে থাকে। পুরো ব্যাপারটা এরকম,
সিরিয়াল কমিউনিকেশনের বেলায় DB9 নামের একটা কানেক্টর ব্যাবহার করতে হয়, কম্পিউটারের মাল-মশলা আর মাইক্রোকন্ট্রোলারের গাট্টি-বস্তার সাথে কানেক্ট করার জন্য। এটার ছবি দেখতে নিচের মত,
db9-connector.jpg
এর দুটো ভেরিয়েশন আছে, মেইল আর ফিমেইল। পিন ডায়াগ্রামসহ বিস্তারিত উপরের ছবিটা দেখলে বোঝা যাবে।

প্রজেক্ট ওভারভিউ:

আমাদের কাজ হল- কম্পিউটার থেকে কিছু কমান্ড দেয়া। যেমন,
কমান্ডকাজ
ONLED জ্বলে উঠবে
OFFLED নিভে যাবে
GETLED র বর্তমান স্ট্যাটাস কম্পিউটারকে জানাবেON: LED জ্বলে আছেOFF: LED নিভে আছে

ইলেক্ট্রনিক্স:

এ প্রজেক্টের প্রথম অংশে দেখানো হবে কিভাবে মাইক্রোকন্ট্রোলার দিয়ে সিরিয়াল কমিউনিকেশন ব্যাবহার করা যায়। ATMEGA16 এ 14, 15 পিন হল সিরিয়াল কমিউনিকেশনের যথাক্রমে রিসিভার আর ট্রান্সমিটার পিন। যেগুলো দিয়ে সিরিয়াল ডাটা রিসিভ হবে কিংবা পাঠানো হবে যথাক্রমে। আগেই বলা হয়েছে, এই সিরিয়াল ডাটার মাথা-মুন্ডু কম্পিউটার কিচ্ছু বুঝবে না। এটাকে এখন কনভার্ট করা লাগবে RS232 প্রোটোকলে। এর জন্য 14 আর 15 পিনদুটো MAX232 এর 12 আর 11 পিনে লাগানো আছে যেগুলো হল MAX232 এর সিরিয়াল ডাটা। আর 14, 13 পিন দুটো হল সেগুলোর RS232 ডাটা যেগুলোকে মাত্র সিরিয়াল থেকে কনভার্ট করা হয়েছে। এই ডাটাগুলোই যাবে কম্পিউটারে, একটা DB9 ফিমেইল কানেকটর হয়ে। MAX232 এর কানেকশনের বেসিক ডায়াগ্রাম হল,
max232.jpg
পুরো সার্কিটের কানেকশন হল নিচের মত (একটা LED ও কিন্তু লাগানো আছে সাথে),
serial_communication_circuit.jpg
আরো দুটো কথা বলতে হবে। উপরের ছবিতে 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 র স্ট্যাটাস ট্রান্সমিট করে দিচ্ছে।
এর পরের অংশে থাকবে, কম্পিউটার এর সাথে কানেকশন এবং কম্পিউটার থেকে কমান্ড দেয়া।

Jhon Mond

Phasellus facilisis convallis metus, ut imperdiet augue auctor nec. Duis at velit id augue lobortis porta. Sed varius, enim accumsan aliquam tincidunt, tortor urna vulputate quam, eget finibus urna est in augue.

Post a Comment