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ć
- Moduł multipleksera TCA9548A I2C
- Arduino Board (np. UNO, Mega, Nano)
- Urządzenia I2C (np. Czujniki, wyświetlacze)
- Druty chleba i skoczków
- 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 0x70Do0x77.
 
- Wszystkie szpilki do GND: 
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:
- Otwórz Arduino IDE.
- Idź do Naszkicować > Uwzględnij bibliotekę > Zarządzaj bibliotekami.
- 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
- Zarządzanie wieloma identycznymi urządzeniami I2C (np. Wiele czujników o tym samym adresie).
- Rozszerzanie urządzeń I2C w projekcie.
- 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ł!
 
            
 
      
 
      
 
      
 
       
         
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
   
   
   
   
   
   
   
   
   
   
   
   
  