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 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
- 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 (
0x70
domyś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!