TCA9548AはI2Cマルチプレクサであり、同じI2Cアドレスを持つ複数のデバイスを単一のArduinoに接続できます。これは、個別にアクセスできる最大8つのI2Cバスを作成することでこれを達成します。このチュートリアルでは、Arduinoを使用してTCA9548Aをインターフェースおよび使用して、複数のI2Cデバイスを管理することをガイドします。
あなたが必要とするもの
- TCA9548A I2Cマルチプレクサモジュール
- Arduino委員会(例:UNO、MEGA、NANO)
- I2Cデバイス(センサー、ディスプレイなど)
- ブレッドボードとジャンパーワイヤ
- 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の組み合わせは、からアドレスを設定できます
0x70
に0x77
.
- GNDへのすべてのピン:
ステップ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 図書館:
インストールする手順:
- Arduino IDEを開きます。
- 行きます スケッチ > ライブラリを含めます > ライブラリを管理します.
- 「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のアプリケーション
- 複数の同一のI2Cデバイス(同じアドレスを持つ複数のセンサーなど)の管理。
- プロジェクトでI2Cデバイスを拡大します。
- 大規模システムの配線の複雑さを減らす。
トラブルシューティング
- デバイスからの応答はありません: 正しいI2Cバスが選択されていることを確認し、配線を確認してください。
- 対立に対処: 競合を回避するために、接続されたデバイスのI2Cアドレスを確認します。
- 間違ったバスの切り替え: TCA9548Aのアドレスが正しく構成され、コードと一致することを確認します。
結論
TCA9548A I2CマルチプレクサとArduinoをインターフェースすることに成功しました。この強力なモジュールを使用すると、同じアドレスで複数のI2Cデバイスを接続および制御できるため、複雑なプロジェクトに役立つツールになります。さまざまなデバイスと構成を実験して、その最大限の潜在能力を解除してください!