El TCA9548A es un multiplexor I2C que le permite conectar múltiples dispositivos con la misma dirección I2C a una sola Raspberry Pi. Funciona aislando cada dispositivo I2C en su propio bus, permitiendo que la Raspberry Pi se comunique con ellos uno a la vez. Esto es especialmente útil en proyectos complejos donde podrían ocurrir conflictos de abordados.
Lo que necesitarás
- Frambuesa pi (Cualquier modelo con soporte de GPIO, por ejemplo, PI 3, PI 4)
- Módulo multiplexador TCA9548A I2C
- Dispositivos I2C (por ejemplo, sensores o periféricos)
- Cables de placa y jersey
- Python instalado en la frambuesa pi
Paso 1: Cableado el TCA9548A al Raspberry Pi
El TCA9548A se conecta a la Raspberry Pi usando el protocolo I2C.
Conexión
TCA9548A PIN | Pin de frambuesa Pi |
---|---|
Empuje | 3.3V (pin 1) |
Gnd | Tierra (pin 6) |
SDA | SDA (pin 3, GPIO2) |
SCL | SCL (pin 5, GPIO3) |
Conecte sus dispositivos I2C a los autobuses I2C numerados de TCA9548A (por ejemplo, SD0/SCL0, SD1/SCL1).
Paso 2: Habilite la interfaz I2C
- Abra la herramienta de configuración de Raspberry Pi:
sudo raspi-config
- Navegar por Opciones de interfaz> I2C y habilitarlo.
- Reinicie la Raspberry Pi:
sudo reboot
Paso 3: Instale las bibliotecas requeridas
-
Actualice la lista de paquetes de su Raspberry Pi:
sudo apt update && sudo apt upgrade -y
-
Instale las herramientas I2C y las bibliotecas de Python:
sudo apt install -y i2c-tools python3-pip pip3 install adafruit-circuitpython-tca9548a
-
Verifique que el TCA9548A se detecte en el bus I2C:
sudo i2cdetect -y 1
El multiplexor normalmente aparecerá en la dirección
0x70
.
Paso 4: Código de Python para usar el TCA9548A
Aquí hay un script de Python para habilitar un canal I2C específico en el TCA9548A y leer datos de un sensor conectado.
Ejemplo de código de python
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} %")
Explicación:
-
tca[0]
se refiere al primer canal I2C en el TCA9548A. - Reemplace la biblioteca de sensores (por ejemplo,
adafruit_bme280
) con la biblioteca para su sensor o dispositivo específico.
Paso 5: Cambiar entre canales
El TCA9548A le permite cambiar entre múltiples dispositivos I2C conectados a diferentes canales. Aquí hay un ejemplo de iteración a través de los canales para leer desde múltiples dispositivos:
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()
Puede usar este enfoque para administrar múltiples sensores o periféricos conectados al multiplexor.
Aplicaciones del TCA9548A
- Evitar los conflictos de direcciones de I2C: Use el multiplexor para aislar dispositivos con la misma dirección I2C.
- Dispositivos I2C en expansión: Conecte hasta 8 buses, cada uno de los cuales admite múltiples dispositivos.
- Proyectos de IoT: Use el TCA9548A en los sistemas de monitoreo Smart Home o Ambiental donde se requieren múltiples sensores.
- Robótica compleja: Administre múltiples sensores o actuadores en proyectos de robótica avanzada.
Solución de problemas
-
Dispositivo no detectado:
- Verifique el cableado y asegúrese de que los pines SDA/SCL estén conectados correctamente.
- Confirme que el TCA9548A esté alimentado y su dirección (
0x70
Por defecto) aparece en la exploración I2C.
-
Datos de canal incorrectos:
- Asegúrese de que el sensor esté conectado al canal correcto y la biblioteca apropiada se use en su script de Python.
-
I2C Errores de comunicación:
- Verifique las conexiones sueltas o las direcciones I2C conflictivas en el mismo canal.
Conclusión
El multiplexor TCA9548A I2C es una herramienta versátil para expandir las capacidades I2C de Raspberry Pi y resolver conflictos de dirección. Siguiendo esta guía, puede administrar de manera eficiente múltiples dispositivos I2C en proyectos complejos como sistemas de monitoreo meteorológico, casas inteligentes y robótica. ¡Experimente con diferentes dispositivos y canales para explorar completamente sus capacidades!