TCA9548A, aynı I2C adresine sahip birden çok cihaza tek bir ahududu Pi'ye bağlamanızı sağlayan bir I2C çoklayıcıdır. Her I2C cihazını kendi otobüsünde izole ederek çalışır ve Raspberry Pi'nin birer birer iletişim kurmasını sağlar. Bu, özellikle adres çatışmalarının meydana gelebileceği karmaşık projelerde yararlıdır.
Ne İhtiyacınız Olacak
- Ahududu pi (GPIO destekli herhangi bir model, örneğin Pi 3, Pi 4)
- TCA9548A I2C Multiplexer Modülü
- I2C Cihazları (örneğin, sensörler veya çevre birimleri)
- Breadboard ve jumper telleri
- Python yüklü Raspberry Pi'de
Adım 1: TCA9548A'yı ahududu pi'ye bağlama
TCA9548A, I2C protokolünü kullanarak Raspberry Pi'ye bağlanır.
Bağlantılar
TCA9548A PIN | Raspberry Pi Pimi |
---|---|
Vin | 3.3V (pim 1) |
Gnd | Zemin (pim 6) |
SDA | SDA (pim 3, GPIO2) |
Scl | SCL (Pin 5, GPIO3) |
I2C cihazlarınızı TCA9548A'nın numaralı I2C otobüslerine bağlayın (ör., SD0/SCL0, SD1/SCL1).
2. Adım: I2C arayüzünü etkinleştirin
- Raspberry Pi yapılandırma aracını açın:
sudo raspi-config
- Gezmek Arayüz Seçenekleri> I2C ve etkinleştir.
- Raspberry Pi'yi yeniden başlatın:
sudo reboot
3. Adım: Gerekli kütüphaneleri kurun
-
Raspberry Pi’nin paket listesini güncelleyin:
sudo apt update && sudo apt upgrade -y
-
I2C araçlarını ve python kütüphanelerini yükleyin:
sudo apt install -y i2c-tools python3-pip pip3 install adafruit-circuitpython-tca9548a
-
TCA9548A'nın I2C veri yolunda tespit edildiğini doğrulayın:
sudo i2cdetect -y 1
Multiplexer genellikle adreste görünecektir
0x70
.
Adım 4: TCA9548A'yı kullanmak için Python kodu
İşte TCA9548A'da belirli bir I2C kanalını etkinleştirmek ve bağlı bir sensörden veri okumak için bir Python komut dosyası.
Python kodu örneği
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} %")
Açıklama:
-
tca[0]
TCA9548A'daki ilk I2C kanalını ifade eder. - Sensör kitaplığını değiştirin (ör.,
adafruit_bme280
) belirli sensörünüz veya cihazınız için kütüphane ile.
Adım 5: Kanallar arasında geçiş
TCA9548A, farklı kanallara bağlı birden fazla I2C cihazı arasında geçiş yapmanızı sağlar. Birden çok cihazdan okunacak kanallardan tekrarlamanın bir örneği:
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()
Bu yaklaşımı, çoğullayıcıya bağlı birden fazla sensörü veya çevre birimini yönetmek için kullanabilirsiniz.
TCA9548A uygulamaları
- I2C adres çatışmalarından kaçınmak: Aynı I2C adresine sahip cihazları izole etmek için Multiplexer'ı kullanın.
- Genişleyen I2C cihazları: Her biri birden fazla cihazı destekleyen en fazla 8 otobüse bağlanın.
- IoT Projeleri: Çoklu sensörlerin gerekli olduğu akıllı ev veya çevresel izleme sistemlerinde TCA9548A'yı kullanın.
- Karmaşık robotik: Gelişmiş robotik projelerde birden fazla sensör veya aktüatör yönetin.
Sorun giderme
-
Cihaz algılanmadı:
- Kabloları doğrulayın ve SDA/SCL pimlerinin uygun şekilde bağlandığından emin olun.
- TCA9548A'nın güçlendirildiğini ve adresinin (
0x70
varsayılan olarak) I2C taramasında görünür.
-
Yanlış Kanal Verileri:
- Sensörün doğru kanala bağlı olduğundan ve Python komut dosyalarınızda uygun kütüphanenin kullanıldığından emin olun.
-
I2C İletişim Hataları:
- Aynı kanaldaki gevşek bağlantılar veya çelişkili I2C adreslerini kontrol edin.
Çözüm
TCA9548A I2C Multiplexer, Raspberry Pi’nin I2C yeteneklerini genişletmek ve adres çatışmalarını çözmek için çok yönlü bir araçtır. Bu kılavuzu izleyerek, hava durumu izleme sistemleri, akıllı evler ve robotik gibi karmaşık projelerde birden fazla I2C cihazı verimli bir şekilde yönetebilirsiniz. Yeteneklerini tam olarak keşfetmek için farklı cihazlar ve kanallarla deney yapın!