TCA9548A to multiplekser I2C, który pozwala podłączyć wiele urządzeń z tym samym adresem I2C do jednego Raspberry Pi. Działa poprzez izolowanie każdego urządzenia I2C we własnym autobusie, umożliwiając Raspberry Pi komunikowanie się z nimi pojedynczo. Jest to szczególnie przydatne w złożonych projektach, w których mogą wystąpić konflikty adresowe.
Czego będziesz potrzebować
- Raspberry Pi (Każdy model z obsługą GPIO, np. PI 3, PI 4)
- Moduł multipleksera TCA9548A I2C
- Urządzenia I2C (np. Czujniki lub peryferyjne)
- Druty chleba i skoczków
- Zainstalowany Python na Raspberry Pi
Krok 1: Okablowanie TCA9548A do Raspberry Pi
TCA9548A łączy się z Raspberry Pi za pomocą protokołu I2C.
Znajomości
| TCA9548A PIN | Pin Raspberry Pi | 
|---|---|
| Vin | 3,3 V (pin 1) | 
| GND | Uziemienie (pin 6) | 
| SDA | SDA (pin 3, GPIO2) | 
| Scl | SCL (pin 5, GPIO3) | 
Podłącz swoje urządzenia I2C z numerowanymi autobusami I2C TCA9548A (np. SD0/SCL0, SD1/SCL1).
Krok 2: Włącz interfejs I2C
- Otwórz narzędzie konfiguracyjne Raspberry Pi:
sudo raspi-config
- Przejść do Opcje interfejsu> i2c i włącz to.
- Uruchom ponownie Raspberry Pi:
sudo reboot
Krok 3: Zainstaluj wymagane biblioteki
- 
Zaktualizuj listę pakietów Raspberry Pi: sudo apt update && sudo apt upgrade -y
- 
Zainstaluj narzędzia I2C i biblioteki Python: sudo apt install -y i2c-tools python3-pip pip3 install adafruit-circuitpython-tca9548a
- 
Sprawdź, czy TCA9548A jest wykrywany w autobusie I2C: sudo i2cdetect -y 1Multiplekser zwykle pojawia się pod adresem 0x70.
Krok 4: Kod Pythona do użycia TCA9548A
Oto skrypt Python, który włączy konkretny kanał I2C na TCA9548A i odczyt dane z podłączonego czujnika.
Przykład kodu Pythona
import board
import busio
from adafruit_tca9548a import TCA9548A
# Initialize I2C and TCA9548A multiplexer
i2c = busio.I2C(board.SCL, board.SDA)
tca = TCA9548A(i2c)
# Access a specific I2C channel (e.g., channel 0)
channel_0 = tca[0]
# Example: Interfacing with an I2C device on channel 0
import adafruit_bme280  # Replace with your sensor library
sensor = adafruit_bme280.Adafruit_BME280_I2C(channel_0)
# Read data from the sensor
print(f"Temperature: {sensor.temperature:.2f} °C")
print(f"Humidity: {sensor.humidity:.2f} %")
Wyjaśnienie:
- 
tca[0]odnosi się do pierwszego kanału I2C na TCA9548A.
- Wymień bibliotekę czujników (np. adafruit_bme280) z biblioteką dla konkretnego czujnika lub urządzenia.
Krok 5: Przełączanie między kanałami
TCA9548A umożliwia przełączanie między wieloma urządzeniami I2C podłączonymi do różnych kanałów. Oto przykład iteracji przez kanały do odczytania z wielu urządzeń:
for i in range(8):  # TCA9548A has 8 channels (0-7)
    if tca[i].try_lock():
        print(f"Accessing device on channel {i}")
        tca[i].unlock()
Możesz zastosować to podejście do zarządzania wieloma czujnikami lub urządzeniami peryferyjnymi podłączonymi do multipleksera.
Zastosowania TCA9548A
- Unikanie konfliktów i2c: Użyj multipleksera, aby izolować urządzenia z tym samym adresem I2C.
- Rozszerzanie urządzeń I2C: Podłącz do 8 autobusów, z których każdy obsługuje wiele urządzeń.
- Projekty IoT: Użyj TCA9548A w inteligentnych domach lub systemach monitorowania środowiska, w których wymagane jest wiele czujników.
- Złożona robotyka: Zarządzaj wieloma czujnikami lub siłownikami w zaawansowanych projektach robotyki.
Rozwiązywanie problemów
- 
Urządzenie nie wykryte: - Sprawdź okablowanie i upewnij się, że kołki SDA/SCL są odpowiednio podłączone.
- Potwierdź, że TCA9548A jest zasilany i jego adres (0x70domyślnie) pojawia się w skanie I2C.
 
- 
Niepoprawne dane kanału: - Upewnij się, że czujnik jest podłączony do właściwego kanału, a odpowiednia biblioteka jest używana w skrypcie Python.
 
- 
Błędy komunikacji I2C: - Sprawdź luźne połączenia lub sprzeczne adresy I2C na tym samym kanale.
 
Wniosek
Multiplekser TCA9548A I2C to wszechstronne narzędzie do poszerzenia możliwości I2C Raspberry Pi i rozwiązywania konfliktów adresowych. Postępując zgodnie z tym przewodnikiem, możesz skutecznie zarządzać wieloma urządzeniami I2C w złożonych projektach, takich jak systemy monitorowania pogody, inteligentne domy i robotyka. Eksperymentuj z różnymi urządzeniami i kanałami, aby w pełni zbadać jego możliwości!
 
            
 
      
 
      
 
      
 
       
         
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
   
   
   
   
   
   
   
   
   
   
   
   
  