TCA9548A, aynı I2C adresine sahip birden çok cihaza tek bir Arduino'ya bağlamanızı sağlayan bir I2C çoklayıcıdır. Bunu, ayrı ayrı erişilebilen sekiz ayrı I2C otobüsü oluşturarak elde eder. Bu öğretici, birden fazla I2C aygıtını yönetmek için Arduino ile TCA9548A'yı arayüz ve kullanarak size rehberlik edecektir.
Ne İhtiyacınız Olacak
- TCA9548A I2C Multiplexer Modülü
- Arduino Kurulu (örn. UNO, Mega, Nano)
- I2C cihazları (örn. Sensörler, ekranlar)
- Breadboard ve jumper telleri
- Arduino IDE kurulu bir bilgisayar
1. Adım: TCA9548A'yı anlamak
TCA9548A, 8'e kadar bağımsız I2C otobüsünü (kanallar) kontrol edebilir. Her kanal, aynı adrese sahip aygıtları izole etmek için açılabilir veya kapatılabilir.
Pinout
Pin | İşlev |
---|---|
VCC | Güç kaynağı (3.3V/5V) |
Gnd | Zemin |
SDA | I2C veri hattı |
Scl | I2C saat çizgisi |
SDX/SCX | Bireysel I2C otobüsleri (0-7) |
A0, A1, A2 | Adres Yapılandırması |
I2C adres yapılandırması
- TCA9548A’nın I2C adresi A0, A1 ve A2 pimleri tarafından belirlenir:
- GND'ye tüm pimler:
0x70
(Varsayılan adres) - Yüksek ve düşük kombinasyonlar adresleri ayarlayabilir
0x70
ile0x77
.
- GND'ye tüm pimler:
Adım 2: TCA9548A'yı Arduino'ya bağlama
TCA9548A'yı Arduino'ya bağlayın
TCA9548A PIN | Arduino pimi |
---|---|
VCC | 5V |
Gnd | Gnd |
SDA | A4 |
Scl | A5 |
I2C cihazlarını TCA9548A'ya bağlayın
- I2C cihazlarınızın SDA ve SCL çizgilerini TCA9548A'daki ilgili SDX ve SCX pinlerine bağlayın.
- Cihazların VCC ve GND pimlerinin de bağlı olduğundan emin olun.
Adım 3: Gerekli kütüphaneyi kurun
TCA9548A ile çalışmayı basitleştirmek için "Tel" kitaplığını (Arduino IDE'ye önceden yüklenmiş) yükleyin.
Daha kolay kullanım için bir kütüphaneyi tercih ederseniz, Adafruit TCA9548A kütüphane:
Yüklenecek adımlar:
- Arduino IDE'yi açın.
- Gidip gelmek Eskiz > Kütüphane ekleyin > Kütüphaneleri Yönetin.
- "Adafruit TCA9548A" arayın ve tıklayın Düzenlemek.
4. Adım: Kodu yükleyin
Aşağıdaki örnek, belirli bir I2C veri yolunun nasıl seçileceğini ve bir cihazla iletişim kurulacağını gösterir:
Örnek Kodu
#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
}
Adım 5: Her kanaldaki cihazlarla iletişim kurma
Belirli bir kanaldaki bir cihazla iletişim kurmak için tcaSelect(bus)
I2C iletişimini başlatmadan önce işlev. Örneğin:
Sensörlerden Veri Okumak
#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);
}
}
TCA9548A uygulamaları
- Birden çok özdeş I2C cihazını yönetme (örneğin, aynı adrese sahip çoklu sensörler).
- Bir projede I2C cihazlarının genişletilmesi.
- Büyük sistemlerde kablo karmaşıklığının azaltılması.
Sorun giderme
- Cihazlardan yanıt yok: Doğru I2C veri yolunun seçildiğinden emin olun ve kabloları kontrol edin.
- Adres Çatışmaları: Çatışmaları önlemek için bağlı cihazların I2C adreslerini doğrulayın.
- Yanlış Otobüs Değiştirme: TCA9548A’nın adresinin doğru yapılandırıldığından ve kodu eşleştirdiğinden emin olun.
Çözüm
TCA9548A I2C Multiplexer'ı Arduino ile başarıyla arayüz ettiniz. Bu güçlü modül, birden fazla I2C aygıtını aynı adresle bağlamanıza ve kontrol etmenizi sağlar ve bu da onu karmaşık projeler için değerli bir araç haline getirir. Tam potansiyelinin kilidini açmak için farklı cihazlar ve konfigürasyonlarla deney yapın!