في الوقت الحاضر، أصبح اتصال I2C أحد أكثر الطرق استخدامًا لتوصيل أجهزة متعددة بوحدة تحكم دقيقة مثل Arduino. هو TCA9548A هو موسع ناقل I2C ذو 8 قنوات والذي يحل إحدى المشاكل الأكثر شيوعًا في هذا النوع من الاتصالات: تعارض عنوان I2C. ستساعدك هذه المقالة على فهم كيفية عمل هذا الموسع وكيف يمكنك دمجه في مشاريع Arduino الخاصة بك.
إذا سبق لك أن واجهت أجهزة تشترك في نفس العنوان على ناقل I2C، فأنت تعلم مدى الإحباط الذي قد تشعر به عند محاولة الاتصال بها دون التسبب في حدوث تعارضات. مع استخدام TCA9548Aيمكننا تجنب هذه المشكلات وزيادة عدد الأجهزة المتصلة بحافلة I2C واحدة. دعونا نستكشف بالتفصيل الإمكانيات التي يوفرها معدد الإرسال هذا.
ما هو TCA9548A؟
El TCA9548A عبارة عن موسع ناقل I2C ذو 8 قنوات تم تطويره خصيصًا لأجهزة مثل Arduino. وتتمثل وظيفتها الرئيسية في السماح بربط عدة حافلات بحافلة I2C واحدة، مما يجعلها عنصرًا أساسيًا لإدارة الاتصال مع العديد من الأجهزة بكفاءة. ويمكن مقارنته بمُضاعِف الإرسال، ولكنه مُصمم خصيصًا للاتصالات عبر I2C.
يحتوي هذا الجهاز على مدخل ناقل I2C يتكون من سطرين، SDA (بيانات) وSCL (ساعة)، متصلين بـ 8 مخارج مستقلة، كل منها بمخرج SDA وSCL المقابل له. هذا يسمح يتصل المتحكم الدقيق بما يصل إلى 8 أجهزة، واختيار الشخص الذي تريد التفاعل معه في كل لحظة.
بالإضافة إلى ذلك، من الشائع استخدام TCA9548A لإدارة الأجهزة التي تشترك في نفس عنوان I2C، وهو أمر شائع في بعض أجهزة الاستشعار وشاشات العرض التي لا تسمح بتغيير عنوانها. باستخدام معدد الإرسال هذا، يمكنك تنشيط قناة والتواصل مع جهاز دون التدخل في القنوات الأخرى.
فوائد وأبرز
ومن بين الفوائد الأكثر صلة TCA9548A هناك القدرة على العمل مع حافلات I2C بمستويات جهد مختلفة دون الحاجة إلى استخدام المحولات المنطقية. وهذا يسمح التواصل مع الأجهزة التي تعمل بجهد 1.8 فولت، 2.5 فولت، 3.3 فولت و5 فولتمما يوسع إمكانيات التكامل في المشاريع المختلفة.
ميزة رئيسية أخرى هي أنه يمكن التحكم في معدد الإرسال مباشرة من ناقل الإدخال I2C، مما يجعل تشغيله من وحدة التحكم الدقيقة أمرًا بسيطًا للغاية. يتراوح جهد التشغيل من 1.65 فولت إلى 5.5 فولت، ويدعم حافلات I2C بترددات تصل إلى 400 كيلو هرتز، مما يجعله مناسبًا لمجموعة متنوعة من الأجهزة.
الاتصال والتكوين
يعد توصيل TCA9548A أمرًا بسيطًا للغاية. ما عليك سوى توصيل ناقل الإدخال بخطوط SDA وSCL الخاصة بـ Arduino، بالإضافة إلى منافذ الطاقة المقابلة (GND و5V، على سبيل المثال). وفي الطرف الآخر، يمكنك توصيل ما يصل إلى 8 أجهزة I2C، كل منها على القنوات الخاصة به مع SDA وSCL.
الميزة المثيرة للاهتمام هي أنه يمكنك تعديل عنوان I2C الخاص بـ TCA9548A من 0x70 إلى 0x77 باستخدام الأطراف A0 وA1 وA2. يعد هذا مفيدًا إذا كنت بحاجة إلى استخدام أكثر من معدد إرسال في نفس المشروع. أيضًا، إذا كنت بحاجة لسبب ما إلى إعادة ضبط مُضاعِف الإرسال، فيمكنك القيام بذلك عن طريق ضبط دبوس RST LOW، والذي تم ضبطه على السحب لأعلى بشكل افتراضي.
من الضروري أن نأخذ في الاعتبار أنه مع زيادة طول الكابلات أو تعقيد الأجهزة المتصلة، قد يكون من الضروري إضافة مقاومات سحب لضمان النقل الصحيح للبيانات على ناقل I2C.
مثال على التعليمات البرمجية لمسح أجهزة I2C
قبل التفاعل مع الأجهزة المتصلة بالشبكة TCA9548A، فمن المهم أولاً التأكد من اكتشاف معدد الإرسال بشكل صحيح. للقيام بذلك، يمكنك إجراء فحص للحافلة I2C. نعرض أدناه مثالًا أساسيًا لاكتشاف معدد الإرسال نفسه على الناقل.
#include "Wire.h"
void setup() {
Wire.begin();
Serial.begin(9600);
Serial.println("Escaneando bus I2C...");
for (byte address = 8; address <= 119; address++) {
Wire.beginTransmission(address);
byte error = Wire.endTransmission();
if (error == 0) {
Serial.print("Encontrado dispositivo en dirección 0x");
Serial.println(address, HEX);
}
}
Serial.println("Escaneo finalizado");
}
void loop() {
delay(1000);
}
يقوم الكود أعلاه بمسح عناوين ناقل I2C المحتملة، ويبحث عن ملف TCA9548A أو غيرها من الأجهزة المتصلة. بمجرد تحديد معدد الإرسال، يمكنك المتابعة لتحديد القناة التي تحتاج إلى تنشيطها.
اختيار قناة TCA9548A
بمجرد تكوين معدد الإرسال والكشف عنه، نحتاج إلى تحديد القناة الصحيحة للتواصل مع الجهاز المطلوب. يمكن القيام بذلك بسهولة عن طريق كتابة بايت ينشط القناة المحددة. فيما يلي مثال لكيفية اختيار القناة:
#define TCAADDR 0x70
void tcaselect(uint8_t i) {
if (i > 7) return;
Wire.beginTransmission(TCAADDR);
Wire.write(1 << i);
Wire.endTransmission();
}
void setup() {
Wire.begin();
Serial.begin(115200);
for (uint8_t t=0; t<8; t++) {
tcaselect(t);
Serial.print("Escaneando salida ");
Serial.println(t);
}
}
باستخدام هذا الرمز، يمكنك تحديد أي من الأجهزة المتصلة بالشبكة والتفاعل معها TCA9548A، واحدًا تلو الآخر. تذكر أنه يمكنك أيضًا تعديل الكود لمسح مخرجات كل قناة، والبحث عن أجهزة إضافية.
El TCA9548A هي أداة ممتازة لتوسيع قدرات ناقل I2C في مشاريع Arduino الخاصة بك، مما يسمح لك بتوصيل أجهزة متعددة بنفس العنوان أو مستويات جهد مختلفة بطريقة فعالة وبسيطة.