ה- TCA9548A הוא מרבב I2C המאפשר לך לחבר מכשירים מרובים עם אותה כתובת I2C לארדואינו יחיד. זה משיג זאת על ידי יצירת עד שמונה אוטובוסים I2C נפרדים, אליהם ניתן לגשת באופן פרטני. מדריך זה ינחה אתכם בממשק ושימוש ב- TCA9548A עם Arduino לניהול מכשירי I2C מרובים.
מה תצטרך
- TCA9548A I2C מודול מולטיפלקס
- לוח ארדואינו (למשל, אונו, מגה, ננו)
- מכשירי i2c (למשל, חיישנים, תצוגות)
- חוטי לחם וגשר
- מחשב עם Arduino IDE המותקן
שלב 1: הבנת ה- TCA9548A
TCA9548A יכול לשלוט עד 8 אוטובוסים I2C עצמאיים (ערוצים). ניתן להפעיל או לכבות כל ערוץ כדי לבודד מכשירים עם אותה כתובת.
Pinout
פִּין | פוּנקצִיָה |
---|---|
VCC | ספק כוח (3.3V/5V) |
GND | טָחוּן |
SDA | קו נתונים I2C |
SCL | קו שעון I2C |
SDX/SCX | אוטובוסים I2C בודדים (0-7) |
A0, A1, A2 | תצורת כתובת |
תצורת כתובת I2C
- כתובת ה- I2C של TCA9548A נקבעת על ידי סיכות A0, A1 ו- A2:
- כל הסיכות ל- GND:
0x70
(כתובת ברירת מחדל) - שילובים של גבוהים ונמוכים יכולים להגדיר כתובות מ
0x70
אֶל0x77
.
- כל הסיכות ל- GND:
שלב 2: חיווט TCA9548A לארדואינו
חבר את TCA9548A לארדואינו
TCA9548A סיכה | סיכת ארדואינו |
---|---|
VCC | 5V |
GND | GND |
SDA | A4 |
SCL | A5 |
חבר מכשירי i2c ל- TCA9548A
- חבר את קווי ה- SDA ו- SCL של מכשירי ה- I2C שלך לסיכות SDX ו- SCX המתאימות ב- TCA9548A.
- ודא כי סיכות VCC ו- GND של המכשירים מחוברים גם הם.
שלב 3: התקן את הספרייה הנדרשת
כדי לפשט את העבודה עם TCA9548A, התקן את ספריית "התיל" (המותקנת מראש ב- Arduino IDE).
אם אתה מעדיף ספרייה לטיפול קל יותר, אתה יכול להשתמש ב- Adafruit TCA9548A סִפְרִיָה:
שלבים להתקנה:
- פתח את IDE Arduino.
- לך אל סְקִיצָה > כלול ספרייה > לנהל ספריות.
- חפש "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 מרובים עם אותה כתובת, מה שהופך אותו לכלי חשוב לפרויקטים מורכבים. התנסו במכשירים ותצורות שונות כדי לפתוח את מלוא הפוטנציאל שלו!