TCA9548A är en I2C -multiplexer som låter dig ansluta flera enheter med samma I2C -adress till en enda Arduino. Det uppnår detta genom att skapa upp till åtta separata I2C -bussar, som kan nås individuellt. Denna handledning kommer att leda dig genom gränssnitt och använda TCA9548A med Arduino för att hantera flera I2C -enheter.
Vad du behöver
- TCA9548A I2C multiplexormodul
- Arduino Board (t.ex. Uno, Mega, Nano)
- I2C -enheter (t.ex. sensorer, skärmar)
- Breadboard och jumpertrådar
- En dator med Arduino Ide installerad
Steg 1: Förstå TCA9548A
TCA9548A kan styra upp till 8 oberoende I2C -bussar (kanaler). Varje kanal kan slås på eller av för att isolera enheter med samma adress.
Pinout
Stift | Fungera |
---|---|
Vcc | Strömförsörjning (3.3V/5V) |
Gard | Jord |
SDA | I2C -datalinjen |
SCL | I2c klocklinje |
SDX/SCX | Individuella I2C-bussar (0-7) |
A0, A1, A2 | Adresskonfiguration |
I2c adresskonfiguration
- TCA9548A: s I2C -adress bestäms av A0, A1 och A2 -stift:
- Alla stift till GND:
0x70
(Standardadress) - Kombinationer av höga och låga kan ställa in adresser från
0x70
till0x77
.
- Alla stift till GND:
Steg 2: Kopplar TCA9548A till Arduino
Anslut TCA9548A till Arduino
TCA9548A -stift | Arduinosnål |
---|---|
Vcc | 5V |
Gard | Gard |
SDA | A4 |
SCL | A5 |
Anslut I2C -enheter till TCA9548A
- Anslut SDA- och SCL -linjerna för dina I2C -enheter till motsvarande SDX- och SCX -stift på TCA9548A.
- Se till att VCC- och GND -stiften på enheterna också är anslutna.
Steg 3: Installera det nödvändiga biblioteket
För att förenkla arbetet med TCA9548A, installera "Wire" -biblioteket (förinstallerat i Arduino IDE).
Om du föredrar ett bibliotek för enklare hantering kan du använda Adafruit TCA9548A bibliotek:
Steg för att installera:
- Öppna Arduino IDE.
- Gå till Skiss > Inkludera bibliotek > Hantera bibliotek.
- Sök efter "Adafruit TCA9548A" och klicka Installera.
Steg 4: Ladda upp koden
Följande exempel visar hur man väljer en specifik I2C -buss och kommunicerar med en enhet:
Exempelkod
#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
}
Steg 5: Kommunicera med enheter på varje kanal
För att kommunicera med en enhet på en specifik kanal, ring tcaSelect(bus)
Funktion innan I2C -kommunikation inleds. Till exempel:
Läser data från sensorer
#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);
}
}
Applikationer av TCA9548A
- Hantera flera identiska I2C -enheter (t.ex. flera sensorer med samma adress).
- Utöka I2C -enheter i ett projekt.
- Minska ledningskomplexiteten i stora system.
Felsökning
- Inget svar från enheter: Se till att rätt I2C -buss är vald och kontrollera ledningarna.
- Adresskonflikter: Kontrollera I2C -adresserna för anslutna enheter för att undvika konflikter.
- Fel bussbyte: Se till att TCA9548A: s adress är korrekt konfigurerad och matchar koden.
Slutsats
Du har framgångsrikt interfogat TCA9548A I2C multiplexer med Arduino. Denna kraftfulla modul låter dig ansluta och styra flera I2C -enheter med samma adress, vilket gör det till ett värdefullt verktyg för komplexa projekt. Experimentera med olika enheter och konfigurationer för att låsa upp sin fulla potential!