ArduinoでTCA9548A I2Cマルチプレクサを使用する方法

How to Use the TCA9548A I2C Multiplexer with Arduino

TCA9548AはI2Cマルチプレクサであり、同じI2Cアドレスを持つ複数のデバイスを単一のArduinoに接続できます。これは、個別にアクセスできる最大8つのI2Cバスを作成することでこれを達成します。このチュートリアルでは、Arduinoを使用してTCA9548Aをインターフェースおよび使用して、複数のI2Cデバイスを管理することをガイドします。


あなたが必要とするもの

  1. TCA9548A I2Cマルチプレクサモジュール
  2. Arduino委員会(例:UNO、MEGA、NANO)
  3. I2Cデバイス(センサー、ディスプレイなど)
  4. ブレッドボードとジャンパーワイヤ
  5. Arduino IDEがインストールされたコンピューター

ステップ1:TCA9548Aの理解

TCA9548Aは、最大8つの独立したI2Cバス(チャネル)を制御できます。各チャネルをオンまたはオフにして、同じアドレスでデバイスを分離できます。

ピンアウト

ピン 関数
VCC 電源(3.3V/5V)
GND 地面
SDA I2Cデータライン
SCL I2Cクロックライン
SDX/SCX 個々のI2Cバス(0-7)
A0、A1、A2 アドレス構成

I2Cアドレス構成

  • TCA9548AのI2Cアドレスは、A0、A1、およびA2ピンによって決定されます。
    • GNDへのすべてのピン: 0x70 (デフォルトアドレス)
    • HighとLowの組み合わせは、からアドレスを設定できます 0x700x77.

ステップ2:TCA9548AをArduinoに配線します

TCA9548AをArduinoに接続します

TCA9548Aピン Arduino Pin
VCC 5V
GND GND
SDA A4
SCL A5

I2CデバイスをTCA9548Aに接続します

  • I2CデバイスのSDAラインとSCLラインを、TCA9548Aの対応するSDXおよびSCXピンに接続します。
  • デバイスのVCCおよびGNDピンも接続されていることを確認してください。

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

TCA9548Aでの作業を簡素化するには、「ワイヤ」ライブラリ(Arduino IDEにプリインストール)をインストールします。

ハンドリングを簡単にするためにライブラリを好む場合は、 Adafruit TCA9548A 図書館:

インストールする手順:

  1. Arduino IDEを開きます。
  2. 行きます スケッチ > ライブラリを含めます > ライブラリを管理します.
  3. 「Adafruit TCA9548A」を検索してクリックします インストール.

ステップ4:コードをアップロードします

次の例は、特定のI2Cバスを選択し、デバイスと通信する方法を示しています。

例コード

#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
}

ステップ5:各チャネルのデバイスとの通信

特定のチャネル上のデバイスと通信するには、 tcaSelect(bus) I2C通信を開始する前の機能。例えば:

センサーからデータを読む

#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のアプリケーション

  1. 複数の同一のI2Cデバイス(同じアドレスを持つ複数のセンサーなど)の管理。
  2. プロジェクトでI2Cデバイスを拡大します。
  3. 大規模システムの配線の複雑さを減らす。

トラブルシューティング

  • デバイスからの応答はありません: 正しいI2Cバスが選択されていることを確認し、配線を確認してください。
  • 対立に対処: 競合を回避するために、接続されたデバイスのI2Cアドレスを確認します。
  • 間違ったバスの切り替え: TCA9548Aのアドレスが正しく構成され、コードと一致することを確認します。

結論

TCA9548A I2CマルチプレクサとArduinoをインターフェースすることに成功しました。この強力なモジュールを使用すると、同じアドレスで複数の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.