মাইক্রো-কন্ট্রোলারে কমিউনিকেশন
মাইক্রোকন্ট্রোলার শুধু ইনপুট-আউটপুট নিয়েই ব্যাস্ত থাকে তা নয়, সাথে সে করতে পারে নানান ধরণের কমিউনিকেশন। তাইই নিয়ে আমাদের আজকের ব্লগ!
কমিউনিকেশন স্ট্যান্ডার্ড
তোমরা কি জানো?কমিউনিকেশন করতে হলে আমাদের সিগনাল নিয়ে কাজ করতে হয়!এখন সিগনাল কি তা একটু জেনে নেই!
২টা মাধ্যম একে অপরের সাথে যোগাযোগ করার পদ্ধতি টাই হলো মুলত সিগনাল যারা একে অপরের সাথে যোগাযোগ রক্ষা করতে পারে।
এই সিগনাল ২ ধরনের।যথা:
১। ডিজিটাল সিগনাল
২। অ্যানালগ সিগনাল
ডিজিটাল সিগনাল
ডিজিটাল সিগনাল কি? এখানে মুলত ০ এবং ১ নিয়ে কাজ করা হয়।
যেখানে ০ মানে ( LOW = 0 VOLT) বা অফ এবং ১ মানে ( HIGH = 5 VOLT ) বা অন।
এই ০ এবং ১ এর মাধ্যমে আমরা কম্পিউটার অথবা মাইক্রোকন্ট্রোলার এ বিভিন্ন ডাটা পাঠাতে পারি বিভিন্ন প্যাটার্ন তৈরি করে।যেমন ধরি,১০১০১০ মানে হলো ফুডপান্ডা দরজার সামনে😏! বা ১০০১০১০ মানে হলো র্যাব 🙏!
অর্থাৎ কম্পিউটার বা মাইক্রোকন্ট্রোলার কে এই সিগনাল গুলো দিলে সে বুঝে নিবে এটি ফুডপান্ডা কিংবা র্যাব!
এটা দেখলে আশা করি আরো ক্লিয়ার হবে! ডিজিটাল সিগনাল মানেই হলো ২টা স্ট্যাট হবে। হয় ডিভাইস টি অন হবে না হয় অফ হবে।
অ্যানালগ সিগনাল
অ্যানালগ সিগনাল মানে হলো যেকোনো একটা বিন্দু কে নিম্ন সীমা ধরে একটা উচ্চ সীমা পর্যন্ত যেকোনো মানে সহজেই নিয়ন্ত্রণ করতে পারার প্রক্রিয়া।
ধরি, আরডুইনো ৮বিটের অ্যানালগ আউটপুট (PWM)সিগনাল দেয়।তার মানে এখানে (2 to the power 8)=256; এখানে আমরা ০ এর জন্য আলাদা একটি জায়াগা নিলে (০ থেকে ২৫৫) যেকোনো একটা মানের জন্য একটি ভোল্টেজ পাবো!
মুলত ডিজিটাল সিগনাল, অ্যানালগ সিগনাল এগুলা সবই একটা ভোল্টেজ দেয়!
তুমি জেনে অবাক হবে তোমার বাসার ফ্যানের যে রেগুলেটর এর মাধ্যমে তুমি ফ্যানের গতি নিয়ন্ত্রণ করো এটি একটি অ্যানালগ ডিভাইস এবং অ্যানালগ সিগনাল প্রদান করে(👀!)
সমস্যা
সমস্যাটা হলো ভাইয়া, ডিজিটাল সিগনাল এর মাধ্যমে ডাটা পাঠানোর সময় আমরা সময়ের কোনো ব্যাপার আনি নাই।
কি বলেন ভাই? সময় আবার সমস্যা করে কেমনে? কিছু কি……..টুট..।
দাঁড়াও বলতে দাও😑, সমস্যাটা এভাবে হবে যে যখন আমরা অন্য কোনো প্যাটার্নে ডাটা পাঠাবো ধরো ১১১১০ তখন রিসিভার এটাকে ১০ ধরে নিবে যদি কোনো টাইম ইন্টার্ভাল না দেই। এর ফলে আমাদের প্রেরণকৃত সিগনাল্টি সম্পুর্ণরূপে পালটে যাবে।
তোমাদের সুবিধার্থে আমি টাইম ইন্টার্ভাল ১সে. ধরে নেই।তাহলে যা হবে তা হলো:(১১১১০) এই সিগনালটা পাঠাতে সেন্ডার ৪সে. লাইট জ্বালায় রাখবে ৪টা (১) পাঠাতে যেহেতু আমরা জানি ১ মানে অন মানে লাইট অন।এবং পরে ১সে. লাইট অফ রাখবে মানে (০) পাঠালো!তাহলে আর ডাটা চেঞ্জ হলো না।
ছোট একটা হিন্টস পরবর্তী টপিক বুঝার জন্য!
এই টাইম ইন্টার্ভাল মেইনটেইন করার জন্য কিন্তু সেন্ডার এবং রিসিভার ২ জনের ঘড়ির টাইম মেনেজমেন্ট সেম হতে হবে!
সিরিয়াল কমিউনিকেশন
তুমি জেনে হতবম্ভ হবে যে আমরা একটু আগে সমস্যার মধ্যে যা আলোচনা করেছি তাই মুলত সিরিয়াল কমিউনিকেশন এর অন্তর্ভুক্ত ছিল!🤣
আরডুইনো নিয়ে কাজ করতে হলে এটি তোমাদের অনেক কাজে দিবে।আর আমরা যে টাইম ইন্টার্ভাল বা সময় এক রাখার কথা বললাম রিসিভার এবং সেন্ডার এর মধ্যে এটাকে সিরিয়াল কমিউনিকেশন এর ভাষায় বড রেট(Baud Rate) বলে।এরমানে হলো এটি প্রতি সেকেন্ডে কতো টি ডাটা পাঠাতে পারবে!সাধারণত আরডুইনোতে ৯৬০০ বড রেট প্রিফারেবল। এর মানে এটি প্রতি সেকেন্ডে ৯৬০০টি ডাটা পাঠাতে সক্ষম!
রিমাইন্ডার
সিরিয়াল কমিউনিকেশন এর ক্ষেত্রে কিন্তু রিসিভার এবং সেন্ডার এর টাইম একই হতে হবে। কাউর টাইম যদি একটু স্লো বা ফাস্ট হয় অন্যের সাপেক্ষে সে ক্ষেত্রে সহজ ভাষায় কিছু ডাটা মিস বা বিট মিস যাবে!তাই আমরা বড রেট(৯৬০০)কম রাখার চেষ্টা করব ফলে ইরর(৪০৪) এর সম্ভাবনা কম থাকবে😷
নিচের ছবি দেখলে এতোক্ষন যা বলে তোমাদের মাথার ১২টা বাজাইছি তা বুঝে যাবা!
!!!কিন্তু সমস্যা তো থেকেই যাচ্ছে, কারণ রিসিভার এবং সেন্ডার ২জনের ঘড়ির সময় একদম একুরেট হওয়া কোনভাবেই সম্ভব না। যার ফলে আমাদের কিছু পরিমাণ ইরর থেকেই যাবে!
গল্প পড়ি একটা:
ধরি, ২টা চোর চুরি করতে বের হয়েছে। তার মধ্যে একজন চুরি করতে ভেতরে যাবে আর আরেকজন(২য় চোর) বাইরে থেকে চোর কে সতর্কতা মুলক সিগনাল দিবে। সিগনাল দেওয়ার জন্য তা কাছে ২টা টর্চ লাইট আছে। যেহেতু আগে দেখেছি যে টাইম ইন্টার্ভাল এ কিছু ইরর থেকেই যায় তাই এবার আমরা আর টাইম নিয়ে কাজ করবো না!
ধরি, এই ডাটা পাঠাতে হলে কি করতে হবে(১১০০১)
১মে ২য় চোর একটা লাইট (লাল লাইট) এর মাধ্যমে ১ম চোর কে বুঝাবে সে এখন ডাটা পাঠাবে এবং ২য় লাইট (সাদা লাইট) দিয়ে অরিজিনাল যে ডাটা দিবে তা বোঝাবে।
সেক্ষেত্রে ১ম চোর এখন ২য় চোরের লাল লাইটের দিকে ফোকাস করবে যে ২য় চোর কোনো ডাটা পাঠাচ্ছে কিনা!
তো এখন ২য় চোর লাল লাইট টা জ্বালায় দিল তার মানে ডাটা পাঠাবে এবং সাথে সাথে সাদা লাইট ও জ্বালায় দিল । এখন ১ম চোর লাল লাইট জ্বলাকালীন সাদা লাইট এর অবস্থা কি তা লক্ষ রাখবে।যেহেতু সাদা লাইট ও জ্বলে আছে তার মানে ১ পাঠাইছে ২য় চোর এটা বুঝে নিবে। এখন ২য় চোর লাল লাইট অফ করে দিল!
এখন ২য় চোর এর কিন্তু সাদা লাইট অফ করার প্রয়োজন নাই কারন ওইজে লাল লাইট না জ্বলা পর্যন্ত কোনো ডাটাই ১ম চোর গ্রহন করবে না।
তাই ২য় চোর যেহেতু একবার ডাটা পাঠিয়ে লাল লাইট অফ করে দিছিল তাই এখন সে আরেকবার লাল লাইট জ্বালাবে এবং অফ করে দিবে। এক্ষেত্রে চোর আরো একটা ডাটা ১ গ্রহন করলো। তাই ডাটা দাড়ালো(১১)।
এখন আমাদের কাক্ষিত (০০) পাঠাতে হলে ২য় চোর আবার লাল লাইট জ্বালাবে কিন্তু এবার আর সাদা লাইট জ্বালাবে না এবং এর পরেই লাল লাইট অফ করে দিবে। এই ঘটনা সে রিপিট করবে তাহলে চোর এবার আরো ২ টা ডাটা (০০) পাবে। তাহলে মোট ডাটা দাড়ালো (১১০০)।
এখন আবার (১) পাঠাতে হলে ২য় চোর আবার লাল লাইট জ্বালাবে এবং সাদা লাইট ও জ্বালাবে যার ফলে ১ম চোর বুঝতে পারবে ২য় চোর (১) পাঠিয়েছে
আর এভাবেই আমরা আমাদের কাক্ষিত সম্পুর্ণ ডাটা(১১০০১) টাই পেয়েছি কোনোরকম ইরর ছাড়া।
তোমরা জেনে অবাক হবে যে এই সিস্টেমে কিন্তু ২য় চোর চাইলে কিছু ডাটা পাঠানোর পরে বাকি ডাটা দিনার,লাঞ্চ, ব্রেকফাস্ট করে এসে পাঠাতে চাইলেও সম্ভব🥲!
Inter Integrated Chip ( I2C )
এতোক্ষন আমরা যা বললাম তা মুলত এই আই টু সি( I2C) কমিউনিকেশন এর ওয়ার্কিং প্রিন্সিপাল কি তা জানার জন্যই করলাম😆।এই কমিউনিকেশন এর মাধ্যমে আমরা টাইম রিলেটেড ইস্যু স্লোভ করতে পারবো ফাস্টলি কাজ করতে পারবো কোনো রকম ইরর ছাড়া!!
এই কমিউনিকেশন এর জন্য মুলত ২ টা ওয়্যার লাগে।
1।SDA(serial data)
2।SCK / SCL (serial clock)
এখানে এই সিরিয়াল ডাটা ই হলো ওই আমাদের সাদা লাইট এবং সিরিয়াল ক্লোক হলো আমাদেরি সেই লাল লাইট।
আশা করি এবার কিছুটা হলেও বুঝতে পেরেছেন।না বুঝলেও প্রব্লেম নাই। এই আই টু সি এর গল্পটা আবার পড়েন!💥
ছবি টা দেখো ক্লিয়ার হবা পুরা গল্পে যা বলতে চেয়েছি!
সুবিধা
১. মাত্র ২ টা পিন(sda, scl) এই ২ট পিন ইউজ করেই আমরা মাল্টিপাল ডিভাইস কন্ট্রোল করতে পারবো বাস ট্রপোলজি এর মাধ্যমে(বাস ট্রপোলজি কি না জানলে গুগল করে নাও)এক্ষেত্রে অবশ্যই প্রত্যেকটা ডিভাইস এর (I2C_Address) আলাদা থাকতে হবে ডিভাইস গুলাকে আলাদা ভাবে নেভিগেট করার জন্য
২. ফাস্টলি কমিউনিকেশন করা যায়!
৩. সময়ের ঝামেলা থাকে না!
৪. টাইম রিলেটেড ইস্যু থাকে না ফলে ইরর এর চান্স অনেক কম!
আরডুইনো তে আরেকটা কমিউনিকেশন প্রটোকল হলো:
SPI COMMUNICATION:
এর মুলত ৪ টা পিন থাকে। যথা:
১. MOSI
২. MISO
৩. SDA
৪. SCK/SCL
এই কমিউনিকেশন টা ভালো করে বুঝতে হলে তাহলে অবশ্যই নিচের গল্পটা পড়ে নিবে ভালো করে!😉
আরেকটা গল্প পড়ি:
মনে করো, তুমি খুব বড়লোক্স আল্ট্রা ম্যাক্স। এতো বড় লোক্স যে নতুন ৫ বিঘা জমি কিনেছো বিল্ডিং বানানোর জন্য।এখন তুমি তো অনেক বড়লোক্স তাই না? তোমার কি আর অতো সময় আছে এই বিল্ডিং বানানোর জন্য যারা শ্রমিক আছে তাদের সার্বক্ষণিক তদারকি করার? কারন সময়ের তো অনেক দাম তাই না?
তাই তুমি কি করলা শ্রমিকদের তদারকি করার জন্য একজন কে নিয়োগ দিলা।এদের কন্ট্রাক্টর বলে যারা শ্রমিকদের কাজের প্রতি নজর দেয় ও বিভিন্ন কাজের জন্য আদেশ দেয় কিভাবে কাজ টা করতে হবে।অর্থাৎ এখানে কেন্দ্রীয় একটা ক্ষমতা কন্ট্রাক্টর কিন্তু পেয়ে গেল তাই না। তাছাড়া এই কন্ট্রাক্টর এর আরেকটা কাজ হচ্ছে যদি কোনো শ্রমিক এর কোনো সমস্যা হয় বা তাদের কোনো দাবি থাকে সেটাও দেখা! খালি যে সে নিজে সারাদিন কমান্ড দিবে তা কিন্তু না?
তার আগে আরেকটা কথা বলি এই একজন কন্ট্রাক্টর এর দায়িত্বে কিন্তু শত শত শ্রমিক কাজ করতে পারে তাই তো?
ঠিক এই কাজ টা যদি আমাদের আরডুইনো ও করে থাকে তাহলে কেমন হবে?
হ্যাঁ ঠিক শুনেছো। তুমি বিল্ডিং বানানোর জন্য যাকে কন্ট্রাক্টর হিসাবে নিয়োগ দিয়েছো ঠিক একই ভাবে আরডুইনোতেও তুমি একটা আরডুইনোকে কন্ট্রাক্টর হিসাবে নিয়োগ দিতে পারো যাকে আমরা বলি (Master Device)
এই মাস্টার ডিভাইস এর কাজ হচ্ছে তার সাথে যত গুলা ডিভাইস আছে তাকে নিয়ন্ত্রণ করা,কমান্ড দেওয়া ইত্যাদি।
এখন তুমি হয়তো আন্দাজ করতে পাচ্ছো, এই যে অন্য কোনো ডিভাইস বা সেন্সর গুলাকে নিয়ন্ত্রণ করছে যাদের নিয়ন্ত্রণ করছে তাদেরকে আমরা শ্রমিকদের সাথে তুলনা করতে পারি যাদের আমরা বলি (Slave Device).
এখন এই স্লেভ ডিভাইস গুলা কি সারাদিন কলুর বলদের মতো কন্ট্রাক্টর এর কথা শুনে খেটে যাবে? তাদের কি কোনো সুখ দু:খের কথা কন্ট্রাক্টর কে বলতে পারবে না হ্যাঁ 🫥।অবশ্যই পারবে! অই যে ওই শ্রমিকদের মতোই!
এখন কথা হচ্ছে কন্ট্রাক্টর যখন কোনো কাজের আদেশ করতো তখন কিন্তু শ্রমিকদের শুনতে হতো। এটাকে আমরা কন্ট্রাক্টর এর আউটপুট এবং শ্রমিকদের ইনপুট হিসাবে ধরতে পারি।ঠিক একদম এটাই SPI communication এ (MOSI PIN) এর কাজ। এর অর্থ (Master Output Slave input)। ওই যে কন্ট্রাক্টর আর শ্রমিকের ঘটনার সাথে তুলনা করে।
এখন শ্রমিকরা তো আর মগের মুল্লুক না যে সারাদিন খেটেই যাবে। তাদের যদি কোনো বিশেষ প্রয়োজনে ছুটি লাগে অথবা আর্থিক হেল্প লাগে তাহলে কন্ট্রাক্টর কে তো অবশ্যই বলবে তাই না? এক্ষেত্রে কিন্তু শ্রমিকরা কিছু বলবে এবং কন্ট্রাক্টর তা শুনবে এবং সেই অনুযায়ী তার পরবর্তী পদক্ষেপ নিবে। এটাকে আমরা SPI communication এ( MISO pin) বলি, এর মানে (Master Input Slave Output)
বাস এতোটুকুই নতুন ছিল এই কমিউনিকেশন এ।বাকি ২ পিন(SDA,SCK/SCL)এই পিন গুলার কাজ তোমরা আগেই I2C communication এ শিখে গেছো!!!
এই কমিউনিকেশন টাকে তুমি সহজভাবে একজন কন্ট্রাক্টর আর শ্রমিকদের সাথে তুলনা করতে পারো!!!!!!
মূলভাব টানলে কি দাড়ালো?
এটা (I2C) কমিউনিকেশন এর থেকে ও ফাস্ট।
এক্ষেত্রে একটা ডিভাইসকে মাস্টার অর্থাৎ যে সবগুলা ডিভাইসকে কন্ট্রোল করবে আর বাকিগুলা থাকে স্লেভ ডিভাইস হিসাবে।
SPI COMMUNICATION এ ও একাধিক ডিভাইস কন্ট্রোল করা যায়!!(একজন কন্ট্রাক্টর অনেক গুলা শ্রমিক কে নিয়ন্ত্রণ করতে পারার মতোই!)
চিত্রটা দেখে কানেকশন সম্পর্কে ভালো ধারনা পাবা!
যদিও বাকি আছে আরো অনেক কথা কিন্তু হয়ত দেখা হবে অন্য আরেকদিন বা অন্য কোনো এক পর্বে😉?
….End….