De TCA9548A is een I2C -multiplexer waarmee u meerdere apparaten kunt aansluiten met hetzelfde I2C -adres met één Arduino. Het bereikt dit door maximaal acht afzonderlijke I2C -bussen te maken, die afzonderlijk toegankelijk zijn. Deze zelfstudie zal u begeleiden door het interface te maken en de TCA9548A met Arduino te gebruiken om meerdere I2C -apparaten te beheren.
Wat u nodig hebt
- TCA9548A I2C Multiplexer -module
- Arduino Board (bijv. UNO, Mega, Nano)
- I2C -apparaten (bijv. Sensoren, displays)
- Breadboard en jumper draden
- Een computer met de Arduino Ide geïnstalleerd
Stap 1: Inzicht in de TCA9548A
De TCA9548A kan tot 8 onafhankelijke I2C -bussen (kanalen) regelen. Elk kanaal kan worden ingeschakeld of uitgeschakeld om apparaten met hetzelfde adres te isoleren.
Uitspraken
Pin | Functie |
---|---|
VCC | Voeding (3.3V/5V) |
GND | Grond |
SDA | I2C -gegevenslijn |
SCL | I2c kloklijn |
SDX/SCX | Individuele I2C-bussen (0-7) |
A0, A1, A2 | Adresconfiguratie |
I2C -adresconfiguratie
- Het I2C -adres van TCA9548A wordt bepaald door A0-, A1- en A2 -pinnen:
- Alle pinnen naar GND:
0x70
(Standaardadres) - Combinaties van hoog en laag kunnen adressen instellen van
0x70
naar0x77
.
- Alle pinnen naar GND:
Stap 2: De TCA9548A bedraden aan Arduino
Verbind de TCA9548A met Arduino
TCA9548A PIN | Arduino Pin |
---|---|
VCC | 5V |
GND | GND |
SDA | A4 |
SCL | A5 |
Verbind I2C -apparaten met de TCA9548A
- Sluit de SDA- en SCL -lijnen van uw I2C -apparaten aan op de overeenkomstige SDX- en SCX -pennen op de TCA9548A.
- Zorg ervoor dat de VCC- en GND -pennen van de apparaten ook zijn verbonden.
Stap 3: Installeer de vereiste bibliotheek
Installeer het werken met de TCA9548A de "draad" -bibliotheek (vooraf geïnstalleerd in de Arduino IDE).
Als u de voorkeur geeft aan een bibliotheek voor eenvoudiger hanteren, kunt u de Adafruit TCA9548A bibliotheek:
Stappen om te installeren:
- Open de Arduino Ide.
- Gaan naar Schetsen > Library innemen > Bibliotheken beheren.
- Zoek naar "Adafruit TCA9548A" en klik Installeren.
Stap 4: Upload de code
Het volgende voorbeeld laat zien hoe u een specifieke I2C -bus kunt selecteren en communiceert met een apparaat:
Voorbeeldcode
#include <Wire.h>
#define TCA9548A_ADDR 0x70 // Default I2C address of TCA9548A
void tcaSelect(uint8_t bus) {
if (bus > 7) return; // Ensure the bus number is valid
Wire.beginTransmission(TCA9548A_ADDR);
Wire.write(1 << bus); // Select the specific bus
Wire.endTransmission();
}
void setup() {
Serial.begin(9600);
Wire.begin();
Serial.println("TCA9548A Test");
// Test selecting each channel
for (uint8_t i = 0; i < 8; i++) {
tcaSelect(i);
Serial.print("Channel ");
Serial.print(i);
Serial.println(" selected.");
delay(500);
}
}
void loop() {
// Add specific I2C communication here
}
Stap 5: Communiceren met apparaten op elk kanaal
Bel de tcaSelect(bus)
Functie voordat u I2C -communicatie start. Bijvoorbeeld:
Gegevens lezen van sensoren
#include <Wire.h>
#define TCA9548A_ADDR 0x70
void tcaSelect(uint8_t bus) {
if (bus > 7) return;
Wire.beginTransmission(TCA9548A_ADDR);
Wire.write(1 << bus);
Wire.endTransmission();
}
void setup() {
Serial.begin(9600);
Wire.begin();
Serial.println("Reading from multiple sensors");
}
void loop() {
for (uint8_t i = 0; i < 8; i++) {
tcaSelect(i); // Select channel
Serial.print("Reading from channel ");
Serial.println(i);
Wire.requestFrom(0x40, 1); // Replace 0x40 with the I2C address of your sensor
if (Wire.available()) {
int data = Wire.read();
Serial.print("Data: ");
Serial.println(data);
}
delay(500);
}
}
Toepassingen van de TCA9548A
- Beheer van meerdere identieke I2C -apparaten (bijv. Meerdere sensoren met hetzelfde adres).
- I2C -apparaten uitbreiden in een project.
- Vermindering van de bedradingcomplexiteit in grote systemen.
Problemen oplossen
- Geen reactie van apparaten: Zorg ervoor dat de juiste I2C -bus is geselecteerd en controleer de bedrading.
- Adresconflicten: Controleer de I2C -adressen van verbonden apparaten om conflicten te voorkomen.
- Onjuiste busschakelen: Zorg ervoor dat het adres van de TCA9548A correct is geconfigureerd en komt overeen met de code.
Conclusie
Je hebt met succes de TCA9548A I2C -multiplexer met Arduino gekoppeld. Met deze krachtige module kunt u meerdere I2C -apparaten met hetzelfde adres verbinden en besturen, waardoor het een waardevol hulpmiddel is voor complexe projecten. Experimenteer met verschillende apparaten en configuraties om het volledige potentieel ervan te ontgrendelen!