Raspberry PiでTCA9548Aを使用します

Using the TCA9548A with the Raspberry Pi

TCA9548AはI2Cマルチプレクサであり、同じI2Cアドレスを持つ複数のデバイスを単一のRaspberry Piに接続できます。各I2Cデバイスを独自のバスで分離することで機能し、Raspberry PIが1つずつ通信できるようにします。これは、住所の競合が発生する可能性のある複雑なプロジェクトで特に役立ちます。


あなたが必要とするもの

  1. Raspberry Pi (GPIOサポートを備えたモデル、例えばPI 3、PI 4)
  2. TCA9548A I2Cマルチプレクサモジュール
  3. I2Cデバイス (例えば、センサーや周辺機器)
  4. ブレッドボードとジャンパーワイヤ
  5. Pythonインストール Raspberry Piで

ステップ1:TCA9548AをRaspberry PIに配線します

TCA9548Aは、I2Cプロトコルを使用してRaspberry Piに接続します。

接続

TCA9548Aピン ラズベリーPIピン
ヴィン 3.3V(ピン1)
GND グラウンド(ピン6)
SDA SDA(ピン3、GPIO2)
SCL SCL(ピン5、GPIO3)

I2CデバイスをTCA9548Aの番号付きI2Cバスに接続します(例: SD0/SCL0、SD1/SCL1).


ステップ2:I2Cインターフェイスを有効にします

  1. Raspberry Pi構成ツールを開きます。
    sudo raspi-config
    
  2. に移動します インターフェイスオプション> i2c そしてそれを有効にします。
  3. RaspberryPiを再起動します:
    sudo reboot
    

ステップ3:必要なライブラリをインストールします

  1. Raspberry Piのパッケージリストを更新します。

    sudo apt update && sudo apt upgrade -y
    
  2. I2CツールとPythonライブラリをインストールします。

    sudo apt install -y i2c-tools python3-pip
    pip3 install adafruit-circuitpython-tca9548a
    
  3. TCA9548AがI2Cバスで検出されていることを確認します。

    sudo i2cdetect -y 1
    

    マルチプレクサは通常、アドレスに表示されます 0x70.


ステップ4:TCA9548Aを使用するPythonコード

TCA9548Aで特定のI2Cチャネルを有効にし、接続されたセンサーからデータを読み取るためのPythonスクリプトを次に示します。

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} %")

説明:

  • tca[0] TCA9548Aの最初のI2Cチャネルを指します。
  • センサーライブラリを交換します(例: adafruit_bme280)特定のセンサーまたはデバイス用のライブラリを使用します。

ステップ5:チャネル間の切り替え

TCA9548Aを使用すると、異なるチャネルに接続された複数のI2Cデバイスを切り替えることができます。複数のデバイスから読み取るためにチャネルを介して反復する例を次に示します。

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()

このアプローチを使用して、マルチプレクサに接続された複数のセンサーまたは周辺機器を管理できます。


TCA9548Aのアプリケーション

  1. I2Cアドレスの競合を回避します:マルチプレクサを使用して、同じI2Cアドレスでデバイスを分離します。
  2. I2Cデバイスの拡張:最大8つのバスを接続し、それぞれが複数のデバイスをサポートします。
  3. IoTプロジェクト:複数のセンサーが必要なスマートホームまたは環境監視システムでTCA9548Aを使用します。
  4. 複雑なロボット工学:高度なロボット工学プロジェクトで複数のセンサーまたはアクチュエーターを管理します。

トラブルシューティング

  1. 検出されていないデバイス:

    • 配線を確認し、SDA/SCLピンが適切に接続されていることを確認します。
    • TCA9548Aが搭載されていることを確認し、そのアドレス(0x70 デフォルトでは)はi2cスキャンに表示されます。
  2. 間違ったチャネルデータ:

    • センサーが正しいチャネルに接続されており、Pythonスクリプトで適切なライブラリが使用されていることを確認してください。
  3. I2C通信エラー:

    • 同じチャネルで、接続のゆるいまたは競合するI2Cアドレスを確認してください。

結論

TCA9548A I2Cマルチプレクサは、Raspberry PIのI2C機能を拡張し、アドレスの競合を解決するための汎用性の高いツールです。このガイドに従うことにより、気象監視システム、スマートホーム、ロボット工学などの複雑なプロジェクトで複数のI2Cデバイスを効率的に管理できます。さまざまなデバイスとチャネルを試して、その機能を完全に調査してください!

コメントを残す

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.