كيفية استخدام مضاعفات TCA9548A I2C مع Arduino

How to Use the TCA9548A I2C Multiplexer with Arduino

TCA9548A هو مضاعف I2C يتيح لك توصيل أجهزة متعددة مع نفس عنوان I2C بعنوان Arduino واحد. إنه يحقق ذلك من خلال إنشاء ما يصل إلى ثماني حافلات منفصلة I2C ، والتي يمكن الوصول إليها بشكل فردي. سوف يرشدك هذا البرنامج التعليمي من خلال التواصل واستخدام TCA9548A مع Arduino لإدارة أجهزة I2C متعددة.


ماذا ستحتاج

  1. TCA9548A I2C MULIPLEXER MODULE
  2. لوحة Arduino (على سبيل المثال ، UNO ، Mega ، Nano)
  3. أجهزة I2C (على سبيل المثال ، أجهزة الاستشعار ، العروض)
  4. الأسلاك الأسلاك والبلوز
  5. جهاز كمبيوتر مع Arduino IDE مثبت

الخطوة 1: فهم TCA9548A

يمكن لـ TCA9548A التحكم في ما يصل إلى 8 حافلات I2C مستقلة (القنوات). يمكن تشغيل كل قناة أو إيقافها لعزل الأجهزة بنفس العنوان.

pinout

دبوس وظيفة
VCC مزود الطاقة (3.3V/5V)
GND أرضي
SDA خط بيانات I2C
SCL خط الساعة I2C
SDX/SCX حافلات I2C الفردية (0-7)
A0 ، A1 ، A2 تكوين العنوان

تكوين عنوان I2C

  • يتم تحديد عنوان I2C الخاص بـ TCA9548A بواسطة دبابيس A0 و A1 و A2:
    • جميع المسامير إلى GND: 0x70 (العنوان الافتراضي)
    • يمكن لمجموعات من العناوين العالية والمنخفضة تعيين عناوين من 0x70 ل 0x77.

الخطوة 2: توصيل TCA9548A إلى Arduino

قم بتوصيل TCA9548A بـ Arduino

TCA9548A دبوس دبوس أردوينو
VCC 5V
GND GND
SDA A4
SCL A5

قم بتوصيل أجهزة I2C بـ TCA9548A

  • قم بتوصيل خطوط SDA و SCL لأجهزة I2C الخاصة بك إلى دبابيس SDX و SCX المقابلة على TCA9548A.
  • تأكد من توصيل دبابيس VCC و GND للأجهزة أيضًا.

الخطوة 3: تثبيت المكتبة المطلوبة

لتبسيط العمل مع TCA9548A ، قم بتثبيت مكتبة "Wire" (مثبت مسبقًا في Arduino IDE).

إذا كنت تفضل مكتبة لتسهيل التعامل ، يمكنك استخدام Adafruit TCA9548A مكتبة:

خطوات التثبيت:

  1. افتح Arduino IDE.
  2. اذهب إلى رسم > تشمل المكتبة > إدارة المكتبات.
  3. ابحث عن "Adafruit TCA9548A" وانقر فوق ثَبَّتَ.

الخطوة 4: تحميل الرمز

يوضح المثال التالي كيفية تحديد ناقل I2C محدد والتواصل مع جهاز:

رمز مثال

#include <Wire.h>

#define TCA9548A_ADDR 0x70 // Default I2C address of TCA9548A

void tcaSelect(uint8_t bus) {
  if (bus > 7) return; // Ensure the bus number is valid
  Wire.beginTransmission(TCA9548A_ADDR);
  Wire.write(1 << bus); // Select the specific bus
  Wire.endTransmission();
}

void setup() {
  Serial.begin(9600);
  Wire.begin();

  Serial.println("TCA9548A Test");

  // Test selecting each channel
  for (uint8_t i = 0; i < 8; i++) {
    tcaSelect(i);
    Serial.print("Channel ");
    Serial.print(i);
    Serial.println(" selected.");
    delay(500);
  }
}

void loop() {
  // Add specific I2C communication here
}

الخطوة 5: التواصل مع الأجهزة على كل قناة

للتواصل مع جهاز على قناة معينة ، اتصل tcaSelect(bus) الوظيفة قبل بدء اتصال I2C. على سبيل المثال:

قراءة البيانات من أجهزة الاستشعار

#include <Wire.h>

#define TCA9548A_ADDR 0x70

void tcaSelect(uint8_t bus) {
  if (bus > 7) return;
  Wire.beginTransmission(TCA9548A_ADDR);
  Wire.write(1 << bus);
  Wire.endTransmission();
}

void setup() {
  Serial.begin(9600);
  Wire.begin();

  Serial.println("Reading from multiple sensors");
}

void loop() {
  for (uint8_t i = 0; i < 8; i++) {
    tcaSelect(i); // Select channel
    Serial.print("Reading from channel ");
    Serial.println(i);

    Wire.requestFrom(0x40, 1); // Replace 0x40 with the I2C address of your sensor
    if (Wire.available()) {
      int data = Wire.read();
      Serial.print("Data: ");
      Serial.println(data);
    }
    delay(500);
  }
}

تطبيقات TCA9548A

  1. إدارة أجهزة I2C متطابقة متعددة (على سبيل المثال ، أجهزة استشعار متعددة بنفس العنوان).
  2. توسيع أجهزة I2C في المشروع.
  3. تقليل تعقيد الأسلاك في الأنظمة الكبيرة.

استكشاف الأخطاء وإصلاحها

  • لا استجابة من الأجهزة: تأكد من تحديد ناقل I2C الصحيح وتحقق من الأسلاك.
  • معالجة النزاعات: تحقق من عناوين I2C للأجهزة المتصلة لتجنب النزاعات.
  • تبديل الحافلة غير صحيح: تأكد من تكوين عنوان TCA9548A بشكل صحيح ويطابق الرمز.

خاتمة

لقد نجحت في ربط TCA9548A I2C Multiplexer مع Arduino. تتيح لك هذه الوحدة القوية توصيل أجهزة I2C المتعددة والتحكم فيها بنفس العنوان ، مما يجعلها أداة قيمة للمشاريع المعقدة. تجربة مع أجهزة وتكوينات مختلفة لفتح إمكاناتها الكاملة!

اترك تعليقًا

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.