วิธีใช้ Multiplexer TCA9548A I2C กับ Arduino

How to Use the TCA9548A I2C Multiplexer with Arduino

TCA9548A เป็นมัลติเพล็กเซอร์ I2C ที่ช่วยให้คุณสามารถเชื่อมต่ออุปกรณ์หลายตัวกับที่อยู่ I2C เดียวกันกับ Arduino เดียว มันประสบความสำเร็จโดยการสร้างรถบัส I2C แยกกันมากถึงแปดคันซึ่งสามารถเข้าถึงได้เป็นรายบุคคล บทช่วยสอนนี้จะแนะนำคุณผ่านการเชื่อมต่อและใช้ TCA9548A กับ Arduino เพื่อจัดการอุปกรณ์ I2C หลายตัว


สิ่งที่คุณต้องการ

  1. TCA9548A I2C MULTERXER MODULE
  2. คณะกรรมการ Arduino (เช่น Uno, Mega, Nano)
  3. อุปกรณ์ I2C (เช่นเซ็นเซอร์แสดงผล)
  4. เครื่องหั่นขนมปังและสายจัมเปอร์
  5. คอมพิวเตอร์ที่ติดตั้ง Arduino IDE

ขั้นตอนที่ 1: ทำความเข้าใจกับ TCA9548A

TCA9548A สามารถควบคุมรถบัส I2C อิสระได้สูงสุด 8 คัน (ช่อง) แต่ละช่องสามารถเปิดหรือปิดเพื่อแยกอุปกรณ์ที่มีที่อยู่เดียวกัน

ปัก

เข็มหมุด การทำงาน
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 pin พิน Arduino
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 ได้รับการกำหนดค่าอย่างถูกต้องและตรงกับรหัส

บทสรุป

คุณสามารถเชื่อมต่อ Multiplexer TCA9548A I2C กับ 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.