O TCA9548A é um multiplexador I2C que permite conectar vários dispositivos com o mesmo endereço I2C a um único Arduino. Ele alcança isso criando até oito ônibus i2c separados, que podem ser acessados individualmente. Este tutorial o guiará através da interface e usando o TCA9548A com o Arduino para gerenciar vários dispositivos I2C.
O que você precisará
- Módulo multiplexador TCA9548A I2C
- Board Arduino (por exemplo, Uno, Mega, Nano)
- Dispositivos I2C (por exemplo, sensores, displays)
- Fios de pão e jumper
- Um computador com o Arduino IDE instalado
Etapa 1: Compreendendo o TCA9548A
O TCA9548A pode controlar até 8 barramentos Idens I2C (canais). Cada canal pode ser ativado ou desativado para isolar dispositivos com o mesmo endereço.
Pinout
Alfinete | Função |
---|---|
VCC | Fonte de alimentação (3,3V/5V) |
Gnd | Chão |
SDA | I2C Linha de dados |
SCL | I2C Linha do relógio |
SDX/SCX | Buses I2C individuais (0-7) |
A0, A1, A2 | Configuração de endereço |
Configuração do endereço I2C
- O endereço I2C do TCA9548A é determinado por pinos A0, A1 e A2:
- Todos os pinos para GND:
0x70
(endereço padrão) - Combinações de alto e baixo podem definir endereços de
0x70
para0x77
.
- Todos os pinos para GND:
Etapa 2: Fiação do TCA9548A para Arduino
Conecte o TCA9548A ao Arduino
Pino TCA9548A | Pino Arduino |
---|---|
VCC | 5V |
Gnd | Gnd |
SDA | A4 |
SCL | A5 |
Conecte os dispositivos I2C ao TCA9548A
- Conecte as linhas SDA e SCL dos seus dispositivos I2C aos pinos SDX e SCX correspondentes no TCA9548A.
- Verifique se os pinos VCC e GND dos dispositivos também estão conectados.
Etapa 3: Instale a biblioteca necessária
Para simplificar o trabalho com o TCA9548A, instale a biblioteca "Wire" (pré-instalada no Arduino IDE).
Se você preferir uma biblioteca para facilitar o manuseio, pode usar o Adafruit TCA9548a biblioteca:
Etapas para instalar:
- Abra o Arduino IDE.
- Vá para Esboço > Inclua biblioteca > Gerenciar bibliotecas.
- Pesquise "Adafruit TCA9548A" e clique Instalar.
Etapa 4: Faça o upload do código
O exemplo a seguir demonstra como selecionar um barramento I2C específico e se comunicar com um dispositivo:
Código de exemplo
#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
}
Etapa 5: Comunicação com dispositivos em cada canal
Para se comunicar com um dispositivo em um canal específico, ligue para o tcaSelect(bus)
Função antes de iniciar a comunicação I2C. Por exemplo:
Lendo dados de sensores
#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);
}
}
Aplicações do TCA9548a
- Gerenciando vários dispositivos I2C idênticos (por exemplo, vários sensores com o mesmo endereço).
- Expandindo os dispositivos I2C em um projeto.
- Reduzindo a complexidade da fiação em grandes sistemas.
Solução de problemas
- Nenhuma resposta dos dispositivos: Verifique se o barramento I2C correto está selecionado e verifique a fiação.
- Abordar conflitos: Verifique os endereços I2C dos dispositivos conectados para evitar conflitos.
- Comutação de barramento incorreta: Verifique se o endereço do TCA9548A está configurado corretamente e corresponde ao código.
Conclusão
Você interfigurou com sucesso o multiplexador TCA9548A I2C com o Arduino. Este módulo poderoso permite conectar e controlar vários dispositivos I2C com o mesmo endereço, tornando -o uma ferramenta valiosa para projetos complexos. Experimente diferentes dispositivos e configurações para desbloquear todo o seu potencial!