Il TCA9548A è un multiplexer I2C che ti consente di collegare più dispositivi con lo stesso indirizzo I2C a un singolo Raspberry Pi. Funziona isolando ogni dispositivo I2C sul proprio bus, consentendo al Raspberry Pi di comunicarne con loro uno alla volta. Ciò è particolarmente utile in progetti complessi in cui potrebbero verificarsi conflitti di indirizzo.
Cosa avrai bisogno
- Raspberry Pi (Qualsiasi modello con supporto GPIO, ad esempio PI 3, PI 4)
- Modulo multiplexer TCA9548A I2C
- Dispositivi i2c (ad esempio sensori o periferiche)
- Breadboard e fili jumper
- Python installato Sul Raspberry Pi
Passaggio 1: cablaggio TCA9548A al Raspberry Pi
Il TCA9548A si collega al Raspberry Pi usando il protocollo I2C.
Connessioni
PIN TCA9548A | Pin di lampone |
---|---|
Vin | 3.3V (pin 1) |
GND | Terra (pin 6) |
SDA | SDA (PIN 3, GPIO2) |
SCL | SCL (PIN 5, GPIO3) |
Collega i tuoi dispositivi I2C ai bus i2c numerati TCA9548A (ad esempio, SD0/SCL0, SD1/SCL1).
Passaggio 2: abilita l'interfaccia I2C
- Apri lo strumento di configurazione Raspberry Pi:
sudo raspi-config
- Navigare a Opzioni di interfaccia> i2c e abilitarlo.
- Riavvia il Raspberry Pi:
sudo reboot
Passaggio 3: installa le librerie richieste
-
Aggiorna l'elenco dei pacchetti di Raspberry Pi:
sudo apt update && sudo apt upgrade -y
-
Installa gli strumenti I2C e le librerie Python:
sudo apt install -y i2c-tools python3-pip pip3 install adafruit-circuitpython-tca9548a
-
Verificare che il TCA9548A sia rilevato sul bus I2C:
sudo i2cdetect -y 1
Il multiplexer in genere verrà visualizzato all'indirizzo
0x70
.
Passaggio 4: codice Python per utilizzare il TCA9548A
Ecco uno script Python per abilitare un canale I2C specifico sul TCA9548A e leggere i dati da un sensore collegato.
Esempio di codice 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} %")
Spiegazione:
-
tca[0]
Si riferisce al primo canale I2C sul TCA9548A. - Sostituire la libreria del sensore (ad es.
adafruit_bme280
) con la libreria per il tuo sensore o dispositivo specifico.
Passaggio 5: passaggio tra i canali
Il TCA9548A consente di passare da più dispositivi I2C collegati a canali diversi. Ecco un esempio di iterazione attraverso i canali da leggere da più dispositivi:
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()
È possibile utilizzare questo approccio per gestire più sensori o periferiche collegate al multiplexer.
Applicazioni del TCA9548A
- Evitare i conflitti dell'indirizzo I2C: Usa il multiplexer per isolare i dispositivi con lo stesso indirizzo I2C.
- Espansione dei dispositivi I2C: Collega fino a 8 bus, ciascuno di essi a supporto di più dispositivi.
- Progetti IoT: Utilizzare il TCA9548A nei sistemi di monitoraggio della casa o ambientale intelligenti in cui sono richiesti più sensori.
- Robotica complessa: Gestire più sensori o attuatori in progetti di robotica avanzata.
Risoluzione dei problemi
-
Dispositivo non rilevato:
- Verificare il cablaggio e assicurarsi che i pin SDA/SCL siano correttamente collegati.
- Conferma che il TCA9548A è alimentato e il suo indirizzo (
0x70
Per impostazione predefinita) appare nella scansione I2C.
-
Dati errati del canale:
- Assicurarsi che il sensore sia collegato al canale corretto e che la libreria appropriata venga utilizzata nello script Python.
-
Errori di comunicazione i2C:
- Controlla connessioni sciolte o indirizzi I2C in conflitto sullo stesso canale.
Conclusione
Il multiplexer TCA9548A I2C è uno strumento versatile per espandere le capacità I2C di Raspberry Pi e risolvere i conflitti di indirizzi. Seguendo questa guida, è possibile gestire in modo efficiente più dispositivi I2C in progetti complessi come sistemi di monitoraggio meteorologico, case intelligenti e robotica. Sperimenta con diversi dispositivi e canali per esplorare completamente le sue capacità!