TCA9548A är en I2C -multiplexer som låter dig ansluta flera enheter med samma I2C -adress till en enda Raspberry Pi. Det fungerar genom att isolera varje I2C -enhet på sin egen buss, vilket gör att Raspberry Pi kan kommunicera med dem en åt gången. Detta är särskilt användbart i komplexa projekt där adresskonflikter kan uppstå.
Vad du behöver
- Hallon (Varje modell med GPIO -stöd, t.ex. PI 3, PI 4)
- TCA9548A I2C multiplexormodul
- I2C -enheter (t.ex. sensorer eller kringutrustning)
- Breadboard och jumpertrådar
- Python installerad på Raspberry Pi
Steg 1: Koppling av TCA9548A till Raspberry Pi
TCA9548A ansluter till Raspberry PI med I2C -protokollet.
Anslutningar
TCA9548A -stift | Hallon pi |
---|---|
Vin | 3.3V (stift 1) |
Gard | Mark (stift 6) |
SDA | SDA (stift 3, GPIO2) |
SCL | SCL (stift 5, GPIO3) |
Anslut dina I2C -enheter till TCA9548A: s numrerade I2C -bussar (t.ex. SD0/SCL0, SD1/SCL1).
Steg 2: Aktivera I2C -gränssnittet
- Öppna Raspberry PI -konfigurationsverktyget:
sudo raspi-config
- Navigera till Gränssnittsalternativ> i2c och aktivera det.
- Starta om Raspberry Pi:
sudo reboot
Steg 3: Installera obligatoriska bibliotek
-
Uppdatera din Raspberry Pis paketlista:
sudo apt update && sudo apt upgrade -y
-
Installera I2C -verktygen och Python -bibliotek:
sudo apt install -y i2c-tools python3-pip pip3 install adafruit-circuitpython-tca9548a
-
Kontrollera att TCA9548A upptäcks på i2C -bussen:
sudo i2cdetect -y 1
Multiplexeraren kommer vanligtvis att dyka upp på adressen
0x70
.
Steg 4: Python -kod för att använda TCA9548A
Här är ett Python -skript för att aktivera en specifik I2C -kanal på TCA9548A och läsa data från en ansluten sensor.
Python -kodexempel
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} %")
Förklaring:
-
tca[0]
Avser den första I2C -kanalen på TCA9548A. - Byt ut sensorbiblioteket (t.ex.
adafruit_bme280
) med biblioteket för din specifika sensor eller enhet.
Steg 5: Växling mellan kanaler
TCA9548A låter dig växla mellan flera I2C -enheter anslutna till olika kanaler. Här är ett exempel på att iterera via kanaler att läsa från flera enheter:
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()
Du kan använda den här metoden för att hantera flera sensorer eller kringutrustning anslutna till multiplexern.
Applikationer av TCA9548A
- Undvika i2c adresskonflikter: Använd multiplexern för att isolera enheter med samma I2C -adress.
- Utvidga I2C -enheter: Anslut upp till 8 bussar, var och en som stödjer flera enheter.
- IoT -projekt: Använd TCA9548A i smarta hem- eller miljöövervakningssystem där flera sensorer krävs.
- Komplex robotik: Hantera flera sensorer eller ställdon i avancerade robotprojekt.
Felsökning
-
Enheten inte upptäckt:
- Kontrollera ledningarna och se till att SDA/SCL -stiften är korrekt anslutna.
- Bekräfta att TCA9548A drivs och dess adress (
0x70
Som standard) visas i I2C -skanningen.
-
Felaktig kanaldata:
- Se till att sensorn är ansluten till rätt kanal och lämpligt bibliotek används i ditt Python -skript.
-
I2C -kommunikationsfel:
- Kontrollera om de är lösa anslutningar eller motstridiga I2C -adresser på samma kanal.
Slutsats
TCA9548A I2C multiplexer är ett mångsidigt verktyg för att utöka din Raspberry PI: s I2C -kapacitet och lösa adresskonflikter. Genom att följa den här guiden kan du effektivt hantera flera I2C -enheter i komplexa projekt som väderövervakningssystem, smarta hem och robotik. Experimentera med olika enheter och kanaler för att fullt ut utforska dess kapacitet!