Za pomocą TCA9548A z Raspberry Pi

Using the TCA9548A with the Raspberry Pi

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ć

  1. Raspberry Pi (Każdy model z obsługą GPIO, np. PI 3, PI 4)
  2. Moduł multipleksera TCA9548A I2C
  3. Urządzenia I2C (np. Czujniki lub peryferyjne)
  4. Druty chleba i skoczków
  5. 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

  1. Otwórz narzędzie konfiguracyjne Raspberry Pi:
    sudo raspi-config
    
  2. Przejść do Opcje interfejsu> i2c i włącz to.
  3. Uruchom ponownie Raspberry Pi:
    sudo reboot
    

Krok 3: Zainstaluj wymagane biblioteki

  1. Zaktualizuj listę pakietów Raspberry Pi:

    sudo apt update && sudo apt upgrade -y
    
  2. Zainstaluj narzędzia I2C i biblioteki Python:

    sudo apt install -y i2c-tools python3-pip
    pip3 install adafruit-circuitpython-tca9548a
    
  3. Sprawdź, czy TCA9548A jest wykrywany w autobusie I2C:

    sudo i2cdetect -y 1
    

    Multiplekser 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

  1. Unikanie konfliktów i2c: Użyj multipleksera, aby izolować urządzenia z tym samym adresem I2C.
  2. Rozszerzanie urządzeń I2C: Podłącz do 8 autobusów, z których każdy obsługuje wiele urządzeń.
  3. Projekty IoT: Użyj TCA9548A w inteligentnych domach lub systemach monitorowania środowiska, w których wymagane jest wiele czujników.
  4. Złożona robotyka: Zarządzaj wieloma czujnikami lub siłownikami w zaawansowanych projektach robotyki.

Rozwiązywanie problemów

  1. 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 (0x70 domyślnie) pojawia się w skanie I2C.
  2. 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.
  3. 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!

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.