সুচিপত্র:

TCA9548A I2C মাল্টিপ্লেক্সার মডিউল - Arduino এবং NodeMCU সহ: 11 টি ধাপ
TCA9548A I2C মাল্টিপ্লেক্সার মডিউল - Arduino এবং NodeMCU সহ: 11 টি ধাপ

ভিডিও: TCA9548A I2C মাল্টিপ্লেক্সার মডিউল - Arduino এবং NodeMCU সহ: 11 টি ধাপ

ভিডিও: TCA9548A I2C মাল্টিপ্লেক্সার মডিউল - Arduino এবং NodeMCU সহ: 11 টি ধাপ
ভিডিও: Control 10 output pins or relay using 10 push button switch with 1 Arduino input pin ANPB-V2 2024, নভেম্বর
Anonim
Image
Image

আপনি কি কখনও এমন পরিস্থিতিতে পড়েছেন যেখানে আপনাকে আপনার Arduino- এ দুটি, তিন বা তার বেশি I2C সেন্সর লাগাতে হয়েছিল যাতে বুঝতে পারে যে সেন্সরগুলির একটি নির্দিষ্ট বা একই I2C ঠিকানা রয়েছে। তদুপরি, একই এসডিএ/এসসিএল পিনে আপনার একই ঠিকানা সহ দুটি ডিভাইস থাকতে পারে না!

সুতরাং, আপনার বিকল্প কি? তাদের সবাইকে একই বাসে একে অপরের সাথে কথা বলার জন্য TCA9548A 1-to-8 I2C মাল্টিপ্লেক্সারে রাখুন! TCA9548A ব্রেকআউট একাধিক I2C ডিভাইসের সাথে যোগাযোগ সক্ষম করে যাদের একই ঠিকানা আছে তাদের সাথে ইন্টারফেস করা সহজ করে তোলে।

ধাপ 1: হার্ডওয়্যারের প্রয়োজনীয়তা

বিষয় আচ্ছাদিত
বিষয় আচ্ছাদিত

এই টিউটোরিয়ালের জন্য আমাদের প্রয়োজন:

- ব্রেডবোর্ড

- TCA9548A I2C মাল্টিপ্লেক্সার

- Arduino Uno/Nano যাই হোক সহজ

- নোডএমসিইউ

- কিছু 0.91 এবং 0.96 I2C OLED ডিসপ্লে

- জাম্পার কেবল, এবং

- ইউএসবি কেবল কোড আপলোড করতে

ধাপ 2: বিষয়গুলি আচ্ছাদিত

আমরা আমাদের আলোচনা শুরু করব I2C প্রযুক্তির মূল বিষয়গুলো বুঝে

তারপর আমরা TCA9548A মাল্টিপ্লেক্সার সম্পর্কে জানতে পারব এবং কিভাবে মাস্টার এবং স্লেভ I2C প্রযুক্তি ব্যবহার করে ডেটা পাঠায় এবং গ্রহণ করে তারপর আমরা কিভাবে Arduino এবং NodeMCU ব্যবহার করে আমাদের প্রজেক্টে মাল্টিপ্লেক্সার প্রোগ্রাম এবং ব্যবহার করতে পারি তা পরীক্ষা করে নেক্সট, আমি আপনাকে দ্রুত দেখাব 8 I2C OLED ডিসপ্লে ব্যবহার করে ডেমো এবং অবশেষে আমরা TCA9548A মাল্টিপ্লেক্সারের সুবিধা এবং অসুবিধা নিয়ে আলোচনা করে টিউটোরিয়ালটি শেষ করব

ধাপ 3: I2C বাসের মূল কথা

I2C বাসের মূল কথা
I2C বাসের মূল কথা
I2C বাসের মূল কথা
I2C বাসের মূল কথা
I2C বাসের মূল কথা
I2C বাসের মূল কথা

ইন্টার-ইন্টিগ্রেটেড সার্কিট উচ্চারিত I-squared-C (I²C) বা I2C একটি দুটি তারের বাস প্রযুক্তি (ভাল 4 ওয়্যার কারণ আপনার VCC এবং গ্রাউন্ডও প্রয়োজন) যা একাধিক প্রসেসর এবং সেন্সরের মধ্যে যোগাযোগের জন্য ব্যবহৃত হয়।

দুটি তারের হল:

* এসডিএ - সিরিয়াল ডেটা (ডেটা লাইন) এবং

* এসসিএল - সিরিয়াল ক্লক (ক্লক লাইন)

মনে রাখবেন, এই দুটি লাইনই 'সিঙ্ক্রোনাস' 'দ্বিমুখী' 'ওপেন-ড্রেন' এবং 'প্রতিরোধক সহ টানা-আপ'।

I2C বাস প্রযুক্তি মূলত ফিলিপস সেমিকন্ডাক্টরদের দ্বারা 80 এর দশকের গোড়ার দিকে ডিজাইন করা হয়েছিল যাতে একই সার্কিট বোর্ডে থাকা উপাদানগুলির মধ্যে সহজে যোগাযোগ করা যায়।

I2C এর সাহায্যে, আপনি একাধিক দাসকে একক মাস্টারের সাথে সংযুক্ত করতে পারেন (যেমন SPI) অথবা আপনি একাধিক মাস্টারকে নিয়ন্ত্রণ করতে পারেন একক, বা একাধিক ক্রীতদাস। মাস্টার এবং ক্রীতদাস উভয়ই ডেটা প্রেরণ এবং গ্রহণ করতে পারে। সুতরাং, I2C বাসে একটি ডিভাইস এই চারটি রাজ্যের একটিতে থাকতে পারে:

* মাস্টার ট্রান্সমিট - মাস্টার নোড একটি ক্রীতদাসকে ডেটা পাঠাচ্ছে

* স্লেভ ট্রান্সমিট - স্লেভ নোড মাস্টারের কাছে ডেটা পাঠাচ্ছে

* স্লেভ রিসিভ - স্লেভ নোড মাস্টারের কাছ থেকে ডেটা গ্রহণ করছে

I2C একটি 'স্বল্প দূরত্ব' 'সিরিয়াল কমিউনিকেশন প্রোটোকল', তাই ডেটা একক তারের বা SDA লাইন বরাবর 'বিট-বাই-বিট' স্থানান্তরিত হয়। বিটগুলির আউটপুট মাস্টার এবং ক্রীতদাসের মধ্যে 'ভাগ' ঘড়ির সংকেত দ্বারা বিটের নমুনায় সিঙ্ক্রোনাইজ করা হয়। ঘড়ির সংকেত সবসময় মাস্টার দ্বারা নিয়ন্ত্রিত হয়। মাস্টার ঘড়ি তৈরি করে এবং দাসদের সাথে যোগাযোগ শুরু করে।

সুতরাং, এটি যোগ করা>

ব্যবহৃত তারের সংখ্যা: 2

সিঙ্ক্রোনাস বা অসিঙ্ক্রোনাস: সিঙ্ক্রোনাস

সিরিয়াল বা সমান্তরাল: সিরিয়াল

ঘড়ি সংকেত নিয়ন্ত্রিত: মাস্টার নোড

ব্যবহৃত ভোল্টেজ: +5 V বা +3.3 V

মাস্টার্সের সর্বোচ্চ সংখ্যা: সীমাহীন

ক্রীতদাসের সর্বোচ্চ সংখ্যা: 1008

সর্বোচ্চ গতি: স্ট্যান্ডার্ড মোড = 100kbps

ফাস্ট মোড = 400kbps

হাই স্পিড মোড = 3.4 এমবিপিএস

আল্ট্রা ফাস্ট মোড = 5 এমবিপিএস

ধাপ 4: TCA9548A I2C মাল্টিপ্লেক্সার মডিউল

TCA9548A I2C মাল্টিপ্লেক্সার মডিউল
TCA9548A I2C মাল্টিপ্লেক্সার মডিউল
TCA9548A I2C মাল্টিপ্লেক্সার মডিউল
TCA9548A I2C মাল্টিপ্লেক্সার মডিউল
TCA9548A I2C মাল্টিপ্লেক্সার মডিউল
TCA9548A I2C মাল্টিপ্লেক্সার মডিউল

TCA9548A একটি আট-চ্যানেল (দ্বি-নির্দেশক) I2C মাল্টিপ্লেক্সার যা একটি পৃথক I2C বাস দ্বারা আটটি পৃথক I2C ডিভাইস নিয়ন্ত্রণ করতে দেয়। আপনাকে শুধু SC2 / SDN মাল্টিপ্লেক্সেড বাসে I2C সেন্সর লাগাতে হবে। উদাহরণস্বরূপ, যদি একটি অ্যাপ্লিকেশনে আটটি অভিন্ন OLED ডিসপ্লে প্রয়োজন হয়, তাহলে প্রতিটি ডিসপ্লেগুলির একটিকে এই প্রতিটি চ্যানেলে সংযুক্ত করা যেতে পারে: 0-7।

মাল্টিপ্লেক্সার মাইক্রো-কন্ট্রোলারের ভিআইএন, জিএনডি, এসডিএ এবং এসসিএল লাইনের সাথে সংযোগ স্থাপন করে। ব্রেকআউট বোর্ড 1.65v থেকে 5.5v পর্যন্ত VIN গ্রহণ করে। উভয় ইনপুট এসডিএ এবং এসসিএল লাইন 10K পুল-আপ প্রতিরোধকের মাধ্যমে VCC- এর সাথে সংযুক্ত থাকে (পুল-আপ প্রতিরোধকের আকার I2C লাইনের ক্যাপাসিট্যান্সের পরিমাণ দ্বারা নির্ধারিত হয়)। মাল্টিপ্লেক্সার স্বাভাবিক (100 kHz) এবং দ্রুত (400 kHz) I2C প্রোটোকল উভয়ই সমর্থন করে। TCA9548A এর সমস্ত I/O পিন 5-ভোল্ট সহনশীল এবং উচ্চ থেকে নিম্ন বা নিম্ন থেকে উচ্চ ভোল্টেজগুলিতে অনুবাদ করতেও ব্যবহার করা যেতে পারে।

TCA9548A- এর সকল চ্যানেলে পুল-আপ রেজিস্টর লাগানো একটি ভাল ধারণা, এমনকি ভোল্টেজ সমান হলেও। এর কারণ হল অভ্যন্তরীণ NMOS সুইচ। এটি উচ্চ ভোল্টেজকে খুব ভালভাবে প্রেরণ করে না, অন্যদিকে এটি কম ভোল্টেজকে খুব ভালভাবে প্রেরণ করে। TCA9548A ভোল্টেজ ট্রান্সলেশনের জন্যও ব্যবহার করা যেতে পারে, প্রতিটি SCn/SDn জোড়ায় বিভিন্ন বাস ভোল্টেজ ব্যবহারের অনুমতি দেয় যেমন 1.8-V, 2.5-V, বা 3.3-V অংশ 5-V অংশের সাথে যোগাযোগ করতে পারে। এটি মাস্টার এবং প্রতিটি স্লেভ চ্যানেলের জন্য বাসকে পছন্দসই ভোল্টেজ পর্যন্ত টানতে বাহ্যিক পুল-আপ প্রতিরোধক ব্যবহার করে অর্জন করা হয়।

মাইক্রো-কন্ট্রোলার যদি বাসের দ্বন্দ্ব বা অন্য অপ্রয়োজনীয় অপারেশন সনাক্ত করে তাহলে TCA9548A রিসেট পিনে কম বলে দাবি করে পুনরায় সেট করা যেতে পারে।

ধাপ 5:

ছবি
ছবি
ছবি
ছবি
ছবি
ছবি

TCA9548 প্রতিটি সেন্সর স্লেভ সাব-বাসে একটি অনন্য চ্যানেল বরাদ্দ করে একটি একই মাইক্রো-কন্ট্রোলারকে '64 সেন্সর 'পর্যন্ত একই বা ভিন্ন I2C ঠিকানার সাথে যোগাযোগ করতে দেয়।

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

একই I2C সম্বোধন করা অংশগুলির 64 টি নিয়ন্ত্রণ করার জন্য আপনি এই মাল্টিপ্লেক্সারের সর্বোচ্চ 8 টি 0x70-0x77 ঠিকানায় সংযুক্ত থাকতে পারেন। তিনটি ঠিকানা বিট A0, A1 এবং A2 কে VIN এর সাথে সংযুক্ত করে আপনি ঠিকানাগুলির বিভিন্ন সমন্বয় পেতে পারেন। এইভাবে TCA9548A এর একটি অ্যাড্রেস বাইট দেখতে কেমন। প্রথম 7-বিট একত্রিত হয়ে ক্রীতদাসের ঠিকানা তৈরি করে। স্লেভ ঠিকানার শেষ বিটটি অপারেশন (পড়া বা লিখা) নির্ধারণ করে। যখন এটি উচ্চ (1) হয়, একটি পঠিত নির্বাচন করা হয়, যখন একটি নিম্ন (0) একটি রাইট অপারেশন নির্বাচন করে।

ধাপ 6: কিভাবে মাস্টার ডেটা পাঠায় এবং গ্রহণ করে

মাস্টার কিভাবে ডেটা পাঠায় এবং গ্রহণ করে
মাস্টার কিভাবে ডেটা পাঠায় এবং গ্রহণ করে
মাস্টার কিভাবে ডেটা পাঠায় এবং গ্রহণ করে
মাস্টার কিভাবে ডেটা পাঠায় এবং গ্রহণ করে

একটি মাস্টার একটি দাস ডিভাইস অ্যাক্সেস করার জন্য সাধারণ পদ্ধতি নিম্নরূপ:

1. যদি একজন মাস্টার কোন ক্রীতদাসকে তথ্য পাঠাতে চান (লিখুন):

-মাস্টার-ট্রান্সমিটার একটি স্টার্ট শর্ত পাঠায় যার পরে দাস-রিসিভারের ঠিকানা এবং R/W সেট করা হয় 0

-মাস্টার-ট্রান্সমিটার '8-বিট কন্ট্রোল রেজিস্টারে' ডেটা পাঠায় যখন ক্রীতদাস স্বীকার করে যে এটি প্রস্তুত

-মাস্টার-ট্রান্সমিটার একটি স্টপ শর্তে স্থানান্তর বন্ধ করে দেয়

2. যদি কোন মাস্টার কোন ক্রীতদাসের কাছ থেকে তথ্য পেতে বা পড়তে চায় (পড়ুন):

-মাস্টার-রিসিভার একটি স্টার্ট শর্ত পাঠায় যার পরে দাস-রিসিভারের ঠিকানা এবং R/W সেট করা হয় 1

-মাস্টার-রিসিভার অনুরোধকৃত রেজিস্টারটি স্লেভ-ট্রান্সমিটারে পাঠানোর জন্য পাঠায়

-মাস্টার-রিসিভার স্লেভ-ট্রান্সমিটার থেকে ডেটা গ্রহণ করে

- একবার সব বাইট পেয়ে গেলে মাস্টার যোগাযোগ বন্ধ করতে এবং বাস ছেড়ে দেওয়ার জন্য ক্রীতদাসকে NACK সিগন্যাল পাঠায়

- মাস্টার-রিসিভার একটি স্টপ শর্তে স্থানান্তর বন্ধ করে দেয়

স্টপ অবস্থার পরে এসডিএ এবং এসসিএল উভয় লাইন বেশি হলে একটি বাস নিষ্ক্রিয় বলে বিবেচিত হয়।

ধাপ 7: কোড

কোড
কোড

এখন, Int কোডটি "ওয়্যার" লাইব্রেরি অন্তর্ভুক্ত করে এবং মাল্টিপ্লেক্সারের ঠিকানা সংজ্ঞায়িত করে শুরু করতে দেয়।

#"Wire.h" অন্তর্ভুক্ত করুন

#অন্তর্ভুক্ত "U8glib.h"

#MUX_Address 0x70 // TCA9548A এনকোডার ঠিকানা নির্ধারণ করুন

তারপরে আমাদের যে পোর্টটিতে যোগাযোগ করতে চান তা নির্বাচন করতে হবে এবং এই ফাংশনটি ব্যবহার করে ডেটা পাঠাতে হবে:

I2CC চ্যানেল বাতিল করুন (uint8_t i) {

যদি (i> 7) ফিরে আসে;

Wire.beginTransmission (MUX_Address);

Wire.write (1 << i);

Wire.endTransmission ();

}

পরবর্তী আমরা "u8g.begin () কল করে সেটআপ বিভাগে ডিসপ্লে আরম্ভ করব"; MUX- এর সাথে সংযুক্ত প্রতিটি প্রদর্শনের জন্য "tcaselect (i);"

একবার প্রারম্ভিক হয়ে গেলে, আমরা ফাংশনটিকে "tcaselect (i);" যেখানে "i" হল মাল্টিপ্লেক্সেড বাসের মান এবং তারপর সেই অনুযায়ী ডেটা এবং ঘড়ি পাঠানো।

ধাপ 8: I2C স্ক্যানার

I2C স্ক্যানার
I2C স্ক্যানার

শুধু যদি আপনি আপনার I2C ieldালের ডিভাইসের ঠিকানা সম্পর্কে নিশ্চিত না হন, তাহলে আপনার ডিভাইসের হেক্স ঠিকানা খুঁজে পেতে সংযুক্ত 'I2C স্ক্যানার' কোডটি চালান। যখন একটি Arduino লোড করা হয়, স্কেচ I2C নেটওয়ার্ক স্ক্যান করবে, যে ঠিকানাগুলি সাড়া দিচ্ছে।

ধাপ 9: ওয়্যারিং এবং ডেমো

ওয়্যারিং এবং ডেমো
ওয়্যারিং এবং ডেমো
ওয়্যারিং এবং ডেমো
ওয়্যারিং এবং ডেমো

তারের:

মাল্টিপ্লেক্সারকে একটি NodeMCU বোর্ডে সংযুক্ত করে শুরু করা যাক। সংযুক্ত করুন:

VIN থেকে 5V (বা 3.3V)

GND to ground

SDA থেকে D2 এবং

SC থেকে D1 পিন যথাক্রমে

একটি Arduino বোর্ড সংযোগের জন্য:

VIN থেকে 5V (বা 3.3V)

GND to ground

SDA থেকে A4 এবং

SC থেকে A5 পিন যথাক্রমে

একবার MUX মাইক্রো-কন্ট্রোলারের সাথে যুক্ত হয়ে গেলে, আপনাকে কেবল সেন্সরগুলিকে SCn / SDn জোড়ায় সংযুক্ত করতে হবে।

এখন, এই দ্রুত ডেমোটি দেখুন যা আমি 8 OLED ডিসপ্লেগুলিকে TCA9548A মাল্টিপ্লেক্সারের সাথে সংযুক্ত করেছি। যেহেতু এই ডিসপ্লেগুলি I2C যোগাযোগ ব্যবহার করে, তারা Arduino এর সাথে মাত্র 2 টি পিন ব্যবহার করে যোগাযোগ করে।

ধাপ 10: সুবিধা এবং অসুবিধা

সুবিধাগুলি এবং অসুবিধাগুলি
সুবিধাগুলি এবং অসুবিধাগুলি

সুবিধাদি

* যোগাযোগের জন্য শুধুমাত্র দুটি বাস লাইন (তারের) প্রয়োজন

* একটি সাধারণ মাস্টার/ক্রীতদাস সম্পর্ক সব উপাদানগুলির মধ্যে বিদ্যমান

* RS232 এর সাথে উদাহরণস্বরূপ কোন কঠোর বড রেটের প্রয়োজনীয়তা নেই, মাস্টার একটি বাস ঘড়ি তৈরি করে

* হার্ডওয়্যার UART এর চেয়ে কম জটিল

* একাধিক মাস্টার এবং একাধিক ক্রীতদাস সমর্থন করে

* ACK/NACK বিট নিশ্চিত করে যে প্রতিটি ফ্রেম সফলভাবে স্থানান্তরিত হয়েছে

* I2C একটি 'সত্য মাল্টি-মাস্টার বাস' যা সালিস এবং সংঘর্ষ সনাক্তকরণ প্রদান করে

* বাসের সাথে সংযুক্ত প্রতিটি ডিভাইস একটি অনন্য ঠিকানা দ্বারা সফ্টওয়্যার-ঠিকানাযোগ্য

* বেশিরভাগ I2C ডিভাইস 100kHz বা 400kHz এ যোগাযোগ করতে পারে

* I²C পেরিফেরালগুলির জন্য উপযুক্ত যেখানে সরলতা এবং কম উৎপাদন খরচ গতির চেয়ে বেশি গুরুত্বপূর্ণ

* সুপরিচিত এবং বহুল ব্যবহৃত প্রোটোকল

অসুবিধা

* SPI এর চেয়ে ধীর ডাটা ট্রান্সফার রেট

* ডেটা ফ্রেমের আকার 8 বিটের মধ্যে সীমাবদ্ধ

* এসপিআই প্রযুক্তির চেয়ে বাস্তবায়নের জন্য আরো জটিল হার্ডওয়্যার প্রয়োজন

প্রস্তাবিত: