TCA9548A เป็นมัลติเพล็กเซอร์ I2C ที่ช่วยให้คุณสามารถเชื่อมต่ออุปกรณ์หลายตัวกับที่อยู่ I2C เดียวกันกับ Arduino เดียว มันประสบความสำเร็จโดยการสร้างรถบัส I2C แยกกันมากถึงแปดคันซึ่งสามารถเข้าถึงได้เป็นรายบุคคล บทช่วยสอนนี้จะแนะนำคุณผ่านการเชื่อมต่อและใช้ TCA9548A กับ Arduino เพื่อจัดการอุปกรณ์ I2C หลายตัว
สิ่งที่คุณต้องการ
- TCA9548A I2C MULTERXER MODULE
- คณะกรรมการ Arduino (เช่น Uno, Mega, Nano)
- อุปกรณ์ I2C (เช่นเซ็นเซอร์แสดงผล)
- เครื่องหั่นขนมปังและสายจัมเปอร์
- คอมพิวเตอร์ที่ติดตั้ง 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
.
- หมุดทั้งหมดไปยัง GND:
ขั้นตอนที่ 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 ห้องสมุด:
ขั้นตอนในการติดตั้ง:
- เปิด Arduino IDE
- ไป ร่าง > รวมห้องสมุด > จัดการห้องสมุด.
- ค้นหา "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
- การจัดการอุปกรณ์ I2C ที่เหมือนกันหลายตัว (เช่นเซ็นเซอร์หลายตัวที่มีที่อยู่เดียวกัน)
- ขยายอุปกรณ์ I2C ในโครงการ
- ลดความซับซ้อนของการเดินสายในระบบขนาดใหญ่
การแก้ไขปัญหา
- ไม่มีการตอบสนองจากอุปกรณ์: ตรวจสอบให้แน่ใจว่ามีการเลือกรถบัส I2C ที่ถูกต้องและตรวจสอบสายไฟ
- ที่อยู่ที่เกิดความขัดแย้ง: ตรวจสอบที่อยู่ I2C ของอุปกรณ์ที่เชื่อมต่อเพื่อหลีกเลี่ยงความขัดแย้ง
- การสลับบัสไม่ถูกต้อง: ตรวจสอบให้แน่ใจว่าที่อยู่ของ TCA9548A ได้รับการกำหนดค่าอย่างถูกต้องและตรงกับรหัส
บทสรุป
คุณสามารถเชื่อมต่อ Multiplexer TCA9548A I2C กับ Arduino ได้สำเร็จ โมดูลที่ทรงพลังนี้ช่วยให้คุณสามารถเชื่อมต่อและควบคุมอุปกรณ์ I2C หลายตัวด้วยที่อยู่เดียวกันทำให้เป็นเครื่องมือที่มีค่าสำหรับโครงการที่ซับซ้อน ทดลองกับอุปกรณ์และการกำหนดค่าที่แตกต่างกันเพื่อปลดล็อกศักยภาพอย่างเต็มที่!