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
0x70
Do0x77
.
- 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ł!