جدول المحتويات:
- الخطوة 1: متطلبات الأجهزة
- الخطوة 2: المواضيع التي تمت تغطيتها
- الخطوة 3: أساسيات I2C Bus
- الخطوة 4: وحدة المضاعف TCA9548A I2C
- الخطوة الخامسة:
- الخطوة 6: كيف يرسل السيد البيانات ويستقبلها
- الخطوة 7: الكود
- الخطوة 8: ماسح I2C
- الخطوة 9: الأسلاك والعرض التجريبي
- الخطوة 10: المزايا والعيوب
- الخطوة 11: شكرا
فيديو: وحدة المضاعف TCA9548A I2C - مع Arduino و NodeMCU: 11 خطوة
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:40
هل سبق لك أن واجهت موقفًا اضطررت فيه إلى توصيل اثنين أو ثلاثة أو أكثر من مستشعرات I2C إلى Arduino لمجرد إدراك أن المستشعرات لها عنوان I2C ثابت أو واحد. علاوة على ذلك ، لا يمكنك الحصول على جهازين بنفس العنوان على نفس دبابيس SDA / SCL!
ماهي خياراتك؟ ضعهم جميعًا على معدد الإرسال TCA9548A 1 إلى 8 I2C لجعلهم جميعًا يتحدثون مع بعضهم البعض في نفس الحافلة! يتيح TCA9548A Breakout الاتصال بالعديد من أجهزة I2C التي لها نفس العنوان مما يسهل التفاعل معها.
الخطوة 1: متطلبات الأجهزة
في هذا البرنامج التعليمي نحتاج إلى:
- اللوح
- معدد TCA9548A I2C
- اردوينو أونو / نانو كل ما هو في متناول اليد
- NodeMCU
- عدد قليل من شاشات 0.91 و 0.96 I2C OLED
- كابلات العبور ، و
- كبل USB لتحميل الكود
الخطوة 2: المواضيع التي تمت تغطيتها
سنبدأ مناقشتنا من خلال فهم أساسيات تقنية I2C
ثم سنتعرف على TCA9548A Multiplexer وكيف يرسل السيد والعبد البيانات ويستقبلها باستخدام تقنية I2C ثم سنتحقق من كيفية برمجة واستخدام معدد الإرسال في مشروعنا باستخدام Arduino و NodeMCU التالي ، سأريك سريعًا عرض توضيحي باستخدام 8 شاشات I2C OLED وأخيراً سننهي البرنامج التعليمي من خلال مناقشة مزايا وعيوب جهاز TCA9548A Multiplexer
الخطوة 3: أساسيات I2C Bus
الدائرة المتكاملة التي يتم نطقها I-squared-C (I²C) أو I2C عبارة عن تقنية ناقل سلكي (4 أسلاك في الواقع لأنك تحتاج أيضًا إلى VCC والأرض) التي تُستخدم للتواصل بين معالجات وأجهزة استشعار متعددة.
السلكان هما:
* SDA - البيانات التسلسلية (خط البيانات) و
* SCL - الساعة التسلسلية (خط الساعة)
تذكر أن كلا الخطين "متزامن" "ثنائي الاتجاه" "مفتوح التصريف" ويتم "سحبهما باستخدام المقاومات".
تم تصميم تقنية ناقل I2C في الأصل بواسطة Philips Semiconductors في أوائل الثمانينيات للسماح بالاتصال السهل بين المكونات الموجودة على نفس لوحة الدائرة.
باستخدام I2C ، يمكنك توصيل العديد من العبيد بسيد واحد (مثل SPI) أو يمكن أن يكون لديك العديد من الأساتذة الذين يتحكمون في عبيد واحد أو عدة عبيد. يمكن لكل من السادة والعبيد نقل البيانات واستقبالها. لذلك ، يمكن أن يكون الجهاز الموجود على ناقل I2C في إحدى الحالات الأربع التالية:
* الإرسال الرئيسي - العقدة الرئيسية ترسل البيانات إلى العبد * الاستقبال الرئيسي - تستقبل العقدة الرئيسية البيانات من العبد
* إرسال الرقيق - تقوم العقدة التابعة بإرسال البيانات إلى السيد
* تلقي الرقيق - تتلقى العقدة التابعة البيانات من السيد
I2C هو بروتوكول اتصال تسلسلي "قصير المسافة" ، لذلك يتم نقل البيانات "بت بِت" على طول السلك الفردي أو خط SDA. تتم مزامنة خرج البتات مع أخذ عينات من البتات بواسطة إشارة ساعة "مشتركة" بين السيد والعبد. دائمًا ما يتحكم السيد في إشارة الساعة. السيد يولد الساعة ويبدأ التواصل مع العبيد.
لذا ، لتلخيص ذلك>
عدد الأسلاك المستخدمة: 2
متزامن أو غير متزامن: متزامن
المسلسل أو المتوازي: المسلسل
يتم التحكم في إشارة الساعة بواسطة: العقدة الرئيسية
الفولتية المستخدمة: +5 فولت أو +3.3 فولت
أقصى عدد للماجستير: غير محدود
الحد الأقصى لعدد العبيد: 1008
السرعة القصوى: الوضع القياسي = 100 كيلو بت في الثانية
الوضع السريع = 400 كيلو بت في الثانية
وضع السرعة العالية = 3.4 ميجابت في الثانية
الوضع فائق السرعة = 5 ميجابت في الثانية
الخطوة 4: وحدة المضاعف TCA9548A I2C
TCA9548A هو مُضاعِف I2C ثماني القنوات (ثنائي الاتجاه) والذي يسمح بالتحكم في ثمانية أجهزة I2C منفصلة بواسطة ناقل I2C مضيف واحد. تحتاج فقط إلى توصيل مستشعرات I2C بحافلات SCn / SDn متعددة الإرسال. على سبيل المثال ، إذا كانت هناك حاجة إلى ثماني شاشات OLED متطابقة في تطبيق ما ، فيمكن توصيل واحدة من كل شاشة في كل من هذه القنوات: 0-7.
يتصل المضاعف بخطوط VIN و GND و SDA و SCL لوحدة التحكم الدقيقة. تقبل لوحة الاختراق VIN من 1.65 فولت إلى 5.5 فولت. يتم توصيل كل من خطي الإدخال SDA و SCL بـ VCC من خلال مقاوم سحب 10K (يتم تحديد حجم المقاوم للسحب من خلال مقدار السعة على خطوط I2C). يدعم معدد الإرسال بروتوكولات I2C العادية (100 كيلو هرتز) والسريعة (400 كيلو هرتز). جميع منافذ الإدخال / الإخراج في TCA9548A تتحمل 5 فولت ويمكن استخدامها أيضًا للترجمة من الفولتية العالية إلى المنخفضة أو المنخفضة إلى العالية.
من الجيد وضع مقاومات سحب على جميع قنوات TCA9548A ، حتى لو كانت الفولتية متماثلة. السبب في ذلك هو بسبب مفتاح NMOS الداخلي. إنه لا ينقل الجهد العالي بشكل جيد ، ومن ناحية أخرى فإنه ينقل الفولتية المنخفضة بشكل جيد للغاية. يمكن أيضًا استخدام TCA9548A لترجمة الجهد ، مما يسمح باستخدام جهد ناقل مختلف على كل زوج SCn / SDn بحيث يمكن لأجزاء 1.8-V أو 2.5-V أو 3.3-V الاتصال بأجزاء 5-V. يتم تحقيق ذلك باستخدام مقاومات سحب خارجية لسحب الناقل لأعلى إلى الجهد المطلوب للقناة الرئيسية وكل قناة تابعة.
إذا اكتشفت وحدة التحكم الدقيقة وجود تعارض في الحافلة أو أي عملية أخرى غير صحيحة ، فيمكن إعادة ضبط TCA9548A عن طريق التأكيد على انخفاض دبوس إعادة الضبط.
الخطوة الخامسة:
يسمح TCA9548 لوحدة تحكم صغيرة واحدة بالاتصال بما يصل إلى '64 مستشعرًا' جميعها بنفس عنوان I2C أو مختلف عن طريق تعيين قناة فريدة لكل ناقل فرعي تابع لجهاز الاستشعار.
عندما نتحدث عن إرسال البيانات عبر سلكين إلى أجهزة متعددة ، نحتاج بعد ذلك إلى طريقة لمعالجتها. إنه نفس ساعي البريد الذي يأتي على طريق واحد ويسقط حزم البريد إلى منازل مختلفة لأن لديهم عناوين مختلفة مكتوبة عليها.
يمكن أن يكون لديك بحد أقصى 8 من معددات الإرسال متصلة ببعضها البعض على عناوين 0x70-0x77 للتحكم في 64 من نفس أجزاء I2C المعنونة. من خلال توصيل بتات العناوين الثلاثة A0 و A1 و A2 بـ VIN ، يمكنك الحصول على مجموعة مختلفة من العناوين. هذا ما يبدو عليه بايت عنوان TCA9548A. أول 7 بتات تتحد لتشكل عنوان العبد. يحدد الجزء الأخير من عنوان الرقيق العملية (قراءة أو كتابة) المطلوب إجراؤها. عندما تكون عالية (1) ، يتم تحديد قراءة ، بينما منخفضة (0) تحدد عملية كتابة.
الخطوة 6: كيف يرسل السيد البيانات ويستقبلها
ما يلي هو الإجراء العام للسيد للوصول إلى جهاز تابع:
1. إذا أراد السيد إرسال البيانات إلى أحد العبيد (يكتب):
- يرسل المرسل الرئيسي حالة START متبوعة بعناوين جهاز الاستقبال التابع وتعيين R / W على 0
- يرسل المرسل الرئيسي البيانات الموجودة في "سجلات التحكم ذات 8 بتات" إلى جهاز الاستقبال التابع عندما يقر العبد بأنه جاهز
- يقوم المرسل الرئيسي بإنهاء النقل بحالة STOP
2. إذا كان السيد يريد تلقي أو قراءة البيانات من العبد (يقرأ):
- يرسل المتلقي الرئيسي حالة START متبوعة بعناوين جهاز الاستقبال التابع ومجموعة R / W على 1
- يرسل المتلقي الرئيسي السجل المطلوب لقراءته إلى المرسل التابع
- يستقبل المتلقي الرئيسي البيانات من المرسل التابع
- بمجرد استلام جميع البايتات ، يرسل Master إشارة NACK إلى العبد لإيقاف الاتصالات وتحرير الناقل
- يقوم المتلقي الرئيسي بإنهاء النقل بشرط STOP
تعتبر الحافلة في وضع الخمول إذا كانت كل من خطوط SDA و SCL مرتفعة بعد حالة STOP.
الخطوة 7: الكود
الآن ، يتيح لك الرمز الدولي البدء بتضمين مكتبة "Wire" وتحديد عنوان معددات الإرسال.
# تضمين "Wire.h"
# تضمين "U8glib.h"
#define MUX_Address 0x70 // عنوان التشفير TCA9548A
ثم نحتاج إلى تحديد المنفذ الذي نريد الاتصال به وإرسال البيانات الموجودة عليه باستخدام هذه الوظيفة:
selectI2CChannels باطلة (uint8_t i) {
إذا (i> 7) يعود ؛
Wire.beginTransmission (MUX_Address) ؛
Wire.write (1 << i) ؛
Wire.endTransmission () ؛
}
بعد ذلك سنقوم بتهيئة العرض في قسم الإعداد عن طريق استدعاء "u8g.begin ()؛" لكل شاشة متصلة بـ MUX "tcaselect (i) ؛"
بمجرد التهيئة ، يمكننا بعد ذلك القيام بكل ما نريد فقط من خلال استدعاء الوظيفة "tcaselect (i)؛" حيث "i" هي قيمة ناقل متعدد الإرسال ثم إرسال البيانات والساعة وفقًا لذلك.
الخطوة 8: ماسح I2C
فقط في حالة إذا لم تكن متأكدًا من عنوان الجهاز الخاص بدرع I2C الخاص بك ، فقم بتشغيل رمز "I2C Scanner" المرفق للعثور على العنوان السداسي العشري لجهازك. عند التحميل على Arduino ، سيقوم الرسم بفحص شبكة I2C ، مع إظهار العناوين التي تستجيب.
الخطوة 9: الأسلاك والعرض التجريبي
الأسلاك:
لنبدأ بتوصيل معدد الإرسال بلوحة NodeMCU. الاتصال:
VIN إلى 5V (أو 3.3V)
GND على الأرض
SDA إلى D2 و
SCL إلى دبابيس D1 على التوالي
بالنسبة للوحة Arduino ، قم بالاتصال:
VIN إلى 5V (أو 3.3V)
GND على الأرض
SDA إلى A4 و
SCL إلى دبابيس A5 على التوالي
بمجرد توصيل MUX بوحدة التحكم الدقيقة ، تحتاج فقط إلى توصيل المستشعرات بأزواج SCn / SDn.
الآن ، دعنا نتفقد هذا العرض التوضيحي السريع الذي قمت فيه بتوصيل 8 شاشات OLED بجهاز TCA9548A Multiplexer. نظرًا لأن هذه الشاشات تستخدم اتصال I2C ، فإنها تتواصل مع Arduino باستخدام دبابيس فقط.
الخطوة 10: المزايا والعيوب
مزايا
* الاتصال يتطلب فقط خطين للحافلات (أسلاك)
* توجد علاقات السيد / العبد البسيطة بين جميع المكونات
* لا توجد متطلبات صارمة لمعدل البث بالباود مثل RS232 على سبيل المثال ، يقوم السيد بإنشاء ساعة ناقل
* الأجهزة أقل تعقيدًا من أجهزة UART
* يدعم سادة متعددين وعبيد متعددين
* يعطي بت ACK / NACK تأكيدًا على نقل كل إطار بنجاح
* I2C عبارة عن "ناقل حقيقي متعدد الوظائف" يوفر التحكيم واكتشاف الاصطدام
* كل جهاز متصل بالناقل يمكن عنونة برمجية عن طريق عنوان فريد
* يمكن لمعظم أجهزة I2C الاتصال بسرعة 100 كيلو هرتز أو 400 كيلو هرتز
* I²C مناسب للأجهزة الطرفية حيث تكون البساطة وانخفاض تكلفة التصنيع أكثر أهمية من السرعة
* بروتوكول معروف ومستخدم على نطاق واسع
سلبيات
* معدل نقل البيانات أبطأ من SPI
* حجم إطار البيانات محدود بـ 8 بتات
* يلزم تنفيذ أجهزة أكثر تعقيدًا من تقنية SPI
موصى به:
البرنامج التعليمي: كيف يتحكم Arduino في العديد من أجهزة العنوان نفسها باستخدام TCA9548A I2C Multiplexer: 3 خطوات
البرنامج التعليمي: كيف يتحكم Arduino في أجهزة متعددة من نفس العنوان باستخدام TCA9548A I2C Multiplexer: الوصف: تمكّن الوحدة النمطية TCA9548A I2C Multiplexer من توصيل الأجهزة بنفس عنوان I2C (حتى 8 نفس العنوان I2C) موصولة بمتحكم دقيق واحد. يعمل معدد الإرسال كحارس بوابة ، ينقل الأوامر إلى المجموعة المحددة
وحدة طاقة إنترنت الأشياء: إضافة ميزة قياس طاقة إنترنت الأشياء إلى وحدة التحكم في شحن الطاقة الشمسية لدي: 19 خطوة (بالصور)
وحدة طاقة إنترنت الأشياء: إضافة ميزة قياس طاقة إنترنت الأشياء إلى وحدة التحكم في شحن الطاقة الشمسية الخاصة بي: مرحبًا بالجميع ، أتمنى أن تكونوا جميعًا رائعون! في هذا الدليل ، سأوضح لك كيف صنعت وحدة قياس طاقة إنترنت الأشياء التي تحسب كمية الطاقة التي تولدها الألواح الشمسية الخاصة بي ، والتي يتم استخدامها بواسطة جهاز التحكم في الشحن الشمسي الخاص بي
وحدة تحكم اردوينو مع وحدة بلوتوث HC-06: 4 خطوات
التحكم في Arduino بقيادة وحدة HC-06 Bluetooth: مرحبًا بالجميع ، هذا هو أول برنامج تعليمي رسمي لي على Instructable.com ، أنا متحمس جدًا لمشروعي الأول! اليوم سأوضح لك كيفية توصيل وحدة Arduino و Bluetooth. سيتواصل Arduino مع HC-06 Bluetooth Module Board باستخدام
ARUPI - وحدة التسجيل الآلي منخفضة التكلفة / وحدة التسجيل الذاتي (ARU) لعلماء البيئة في Soundscape: 8 خطوات (بالصور)
ARUPI - وحدة التسجيل الآلي منخفضة التكلفة / وحدة التسجيل الذاتي (ARU) لعلماء البيئة في Soundscape: كتب هذا التوجيه أنتوني تيرنر. تم تطوير المشروع بمساعدة كبيرة من Shed in the School of Computing، University of Kent (كان السيد Daniel Knox مفيدًا جدًا!). سيوضح لك كيفية إنشاء تسجيل صوتي آلي
وحدة RF 433 ميجا هرتز - اصنع جهاز استقبال وجهاز إرسال من وحدة RF 433MHZ بدون أي متحكم دقيق: 5 خطوات
وحدة RF 433 ميجا هرتز | اصنع جهاز استقبال وجهاز إرسال من وحدة RF 433MHZ بدون أي متحكم دقيق: هل ترغب في إرسال بيانات لاسلكية؟ بسهولة وبدون الحاجة إلى متحكم دقيق؟ ها نحن ذا ، سأوضح لك في هذه التعليمات أن جهاز إرسال واستقبال الترددات اللاسلكية الأساسي جاهز للاستخدام! في هذا الدليل ، يمكنك إرسال واستقبال البيانات باستخدام الإصدار