Jak używać multipleksera TCA9548A I2C z Arduino

How to Use the TCA9548A I2C Multiplexer with Arduino

TCA9548A to multiplekser I2C, który pozwala podłączyć wiele urządzeń z tym samym adresem I2C do jednego Arduino. Osiąga to, tworząc do ośmiu oddzielnych autobusów I2C, do których można uzyskać indywidualnie. Ten samouczek poprowadzi Cię przez interfejs i korzystanie z TCA9548A z Arduino do zarządzania wieloma urządzeniami I2C.


Czego będziesz potrzebować

  1. Moduł multipleksera TCA9548A I2C
  2. Arduino Board (np. UNO, Mega, Nano)
  3. Urządzenia I2C (np. Czujniki, wyświetlacze)
  4. Druty chleba i skoczków
  5. Komputer z zainstalowanym Arduino IDE

Krok 1: Zrozumienie TCA9548A

TCA9548A może kontrolować do 8 niezależnych autobusów I2C (kanały). Każdy kanał można włączyć lub wyłączać, aby izolować urządzenia z tym samym adresem.

Pinout

Szpilka Funkcjonować
VCC Zasilacz (3,3 V/5 V)
GND Grunt
SDA I2C Linia danych
Scl Linia zegara I2C
SDX/SCX Indywidualne autobusy I2C (0-7)
A0, A1, A2 Konfiguracja adresu

Konfiguracja adresu I2C

  • Adres I2C TCA9548A jest określany przez szpilki A0, A1 i A2:
    • Wszystkie szpilki do GND: 0x70 (Domyślny adres)
    • Kombinacje wysokich i niskich może ustawiać adresy z 0x70 Do 0x77.

Krok 2: Okablowanie TCA9548A do Arduino

Podłącz TCA9548A do Arduino

TCA9548A PIN PIN Arduino
VCC 5v
GND GND
SDA A4
Scl A5

Podłącz urządzenia I2C z TCA9548A

  • Podłącz linie SDA i SCL urządzeń I2C z odpowiednimi pinami SDX i SCX na TCA9548A.
  • Upewnij się, że podłączone są również szpilki VCC i GND urządzeń.

Krok 3: Zainstaluj wymaganą bibliotekę

Aby uprościć pracę z TCA9548A, zainstaluj bibliotekę „Wire” (wstępnie zainstalowana w Arduino IDE).

Jeśli wolisz bibliotekę do łatwiejszej obsługi, możesz użyć Adafruit TCA9548A biblioteka:

Kroki do zainstalowania:

  1. Otwórz Arduino IDE.
  2. Idź do Naszkicować > Uwzględnij bibliotekę > Zarządzaj bibliotekami.
  3. Wyszukaj „Adafruit TCA9548A” Zainstalować.

Krok 4: Prześlij kod

Poniższy przykład pokazuje, jak wybrać określoną magistralę I2C i komunikować się z urządzeniem:

Przykładowy kod

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

Krok 5: Komunikowanie się z urządzeniami na każdym kanale

Aby komunikować się z urządzeniem na określonym kanale, zadzwoń tcaSelect(bus) Funkcja przed rozpoczęciem komunikacji I2C. Na przykład:

Czytanie danych z czujników

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

Zastosowania TCA9548A

  1. Zarządzanie wieloma identycznymi urządzeniami I2C (np. Wiele czujników o tym samym adresie).
  2. Rozszerzanie urządzeń I2C w projekcie.
  3. Zmniejszenie złożoności okablowania w dużych systemach.

Rozwiązywanie problemów

  • Brak odpowiedzi z urządzeń: Upewnij się, że wybierana jest prawidłowa magistrala I2C i sprawdź okablowanie.
  • Adres konfliktów: Sprawdź adresy I2C podłączonych urządzeń, aby uniknąć konfliktów.
  • Nieprawidłowe przełączanie magistrali: Upewnij się, że adres TCA9548A jest poprawnie skonfigurowany i odpowiada kodowi.

Wniosek

Z powodzeniem połączyłeś multiplekser TCA9548A I2C z Arduino. Ten potężny moduł umożliwia łączenie i kontrolowanie wielu urządzeń I2C z tym samym adresem, co czyni go cennym narzędziem dla złożonych projektów. Eksperymentuj z różnymi urządzeniami i konfiguracją, aby odblokować pełny potencjał!

Zostaw komentarz

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.