Come utilizzare il multiplexer TCA9548A I2C con Arduino

How to Use the TCA9548A I2C Multiplexer with Arduino

Il TCA9548A è un multiplexer I2C che ti consente di collegare più dispositivi con lo stesso indirizzo I2C a un singolo Arduino. Lo raggiunge creando fino a otto autobus I2C separati, a cui è possibile accedere singolarmente. Questo tutorial ti guiderà attraverso l'interfaccia e l'utilizzo del TCA9548A con Arduino per gestire più dispositivi I2C.


Cosa avrai bisogno

  1. Modulo multiplexer TCA9548A I2C
  2. Arduino Board (ad es. Uno, Mega, Nano)
  3. Dispositivi i2c (ad es. Sensori, display)
  4. Breadboard e fili jumper
  5. Un computer con l'IDE Arduino installato

Passaggio 1: Comprensione del TCA9548A

Il TCA9548A può controllare fino a 8 bus I2C indipendenti (canali). Ogni canale può essere acceso o disattivato per isolare i dispositivi con lo stesso indirizzo.

Pinout

Spillo Funzione
VCC Alimentazione (3.3V/5V)
GND Terra
SDA Linea di dati I2C
SCL Linea di orologio i2c
SDX/SCX Singoli autobus i2c (0-7)
A0, A1, A2 Configurazione dell'indirizzo

Configurazione dell'indirizzo I2C

  • L'indirizzo I2C del TCA9548A è determinato dai pin A0, A1 e A2:
    • Tutti i pin a GND: 0x70 (indirizzo predefinito)
    • Combinazioni di alti e bassi possono impostare indirizzi da 0x70 A 0x77.

Passaggio 2: cablaggio TCA9548A ad Arduino

Collega il TCA9548A ad Arduino

PIN TCA9548A Arduino Pin
VCC 5v
GND GND
SDA A4
SCL A5

Connetti i dispositivi I2C al TCA9548A

  • Collega le linee SDA e SCL dei tuoi dispositivi I2C ai corrispondenti pin SDX e SCX sul TCA9548A.
  • Assicurarsi che anche i pin VCC e GND dei dispositivi siano collegati.

Passaggio 3: installare la libreria richiesta

Per semplificare il lavoro con il TCA9548A, installare la libreria "filo" (preinstallata nell'IDE Arduino).

Se preferisci una libreria per una gestione più semplice, puoi usare il Adafruit TCA9548A biblioteca:

Passi da installare:

  1. Apri l'IDE Arduino.
  2. Vai a Schizzo > Includi la libreria > Gestisci le biblioteche.
  3. Cerca "Adafruit TCA9548A" e fai clic su Installare.

Passaggio 4: caricare il codice

L'esempio seguente dimostra come selezionare un bus I2C specifico e comunicare con un dispositivo:

Codice di esempio

#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
}

Passaggio 5: comunicare con i dispositivi su ciascun canale

Per comunicare con un dispositivo su un canale specifico, chiamare il tcaSelect(bus) funzione prima di iniziare la comunicazione I2C. Per esempio:

Leggere i dati dai sensori

#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);
  }
}

Applicazioni del TCA9548A

  1. Gestione di più dispositivi I2C identici (ad esempio, più sensori con lo stesso indirizzo).
  2. Espandere i dispositivi I2C in un progetto.
  3. Ridurre la complessità del cablaggio nei sistemi di grandi dimensioni.

Risoluzione dei problemi

  • Nessuna risposta dai dispositivi: Assicurarsi che il bus I2C corretto sia selezionato e controlla il cablaggio.
  • Indirizzare i conflitti: Verificare gli indirizzi I2C dei dispositivi connessi per evitare conflitti.
  • Commutazione errata del bus: Assicurarsi che l'indirizzo del TCA9548A sia configurato correttamente e corrisponda al codice.

Conclusione

Hai interfacciato con successo il multiplexer I2C TCA9548A con Arduino. Questo potente modulo ti consente di connettere e controllare più dispositivi I2C con lo stesso indirizzo, rendendolo uno strumento prezioso per progetti complessi. Sperimenta con diversi dispositivi e configurazioni per sbloccare il suo pieno potenziale!

Lascia un commento

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.