واجهة I2C و Arduino

جدول المحتويات:

واجهة I2C و Arduino
واجهة I2C و Arduino

فيديو: واجهة I2C و Arduino

فيديو: واجهة I2C و Arduino
فيديو: Видеоуроки по Arduino. I2C и processing (7-я серия, ч1) 2024, يمكن
Anonim

في هذه المقالة سنلقي نظرة على ماهية واجهة I2C (ay-tu-si ، i-two-tse) ، وما هي ميزاتها وكيفية التعامل معها.

واجهة I2c
واجهة I2c

انه ضروري

  • - اردوينو
  • - مقياس الجهد الرقمي AD5171 ؛
  • - الصمام الثنائي الباعث للضوء ؛
  • - 220 أوم المقاوم ؛
  • - 2 مقاومات لـ 4.7 كيلو أوم ؛
  • - توصيل الأسلاك.

تعليمات

الخطوة 1

يستخدم بروتوكول الاتصال التسلسلي IIC (يسمى أيضًا I2C - الدوائر المتكاملة) خطي اتصال ثنائي الاتجاه لنقل البيانات ، يطلق عليهما ناقل SDA (البيانات التسلسلية) وناقل SCL (الساعة التسلسلية). هناك نوعان من خطوط الكهرباء. يتم سحب حافلات SDA و SCL إلى الحافلة الكهربائية من خلال المقاومات.

يوجد على الأقل Master واحد في الشبكة يبدأ نقل البيانات ويولد إشارات التزامن. تحتوي الشبكة أيضًا على عبيد ينقلون البيانات بناءً على طلب السيد. كل جهاز تابع له عنوان فريد يخاطبه السيد. يشار إلى عنوان الجهاز في جواز السفر (ورقة البيانات). يمكن توصيل ما يصل إلى 127 جهازًا بحافلة I2C واحدة ، بما في ذلك العديد من الأجهزة الرئيسية. يمكن توصيل الأجهزة بالحافلة أثناء التشغيل ، أي وهو يدعم التوصيل الساخن.

مخطط اتصال I2C
مخطط اتصال I2C

الخطوة 2

يستخدم Arduino منفذين للعمل على واجهة I2C. على سبيل المثال ، في Arduino UNO و Arduino Nano ، يتوافق المنفذ التناظري A4 مع SDA ، المنفذ التناظري A5 يتوافق مع SCL.

بالنسبة إلى موديلات الألواح الأخرى:

اردوينو برو وبرو ميني - A4 (SDA) ، A5 (SCL)

اردوينو ميجا - 20 (SDA) ، 21 (SCL)

اردوينو ليوناردو - 2 (SDA) ، 3 (SCL)

اردوينو ديو - 20 (SDA) ، 21 (SCL) ، SDA1 ، SCL1

رسم خرائط دبابيس Arduino لحافلات SDA و SCL
رسم خرائط دبابيس Arduino لحافلات SDA و SCL

الخطوه 3

لتسهيل تبادل البيانات مع الأجهزة عبر ناقل I2C ، تمت كتابة مكتبة "Wire" قياسية لـ Arduino. لديها الوظائف التالية:

تبدأ (العنوان) - تهيئة المكتبة والاتصال بحافلة I2C ؛ إذا لم يتم تحديد عنوان ، فسيتم اعتبار الجهاز المتصل هو الرئيسي ؛ يتم استخدام عنونة 7 بت ؛

requestFrom () - يستخدمه السيد لطلب عدد معين من البايتات من العبد ؛

startTransmission (العنوان) - بداية نقل البيانات إلى الجهاز التابع في عنوان محدد ؛

endTransmission () - إنهاء إرسال البيانات إلى العبد ؛

write () - كتابة البيانات من العبد استجابة لطلب ؛

available () - إرجاع عدد بايتات المعلومات المتاحة لتلقيها من العبد ؛

قراءة () - قراءة البايت المنقولة من العبد إلى السيد أو من السيد إلى العبد ؛

onReceive () - تشير إلى الوظيفة التي سيتم استدعاؤها عندما يتلقى العبد إرسالًا من السيد ؛

onRequest () - يشير إلى وظيفة يتم استدعاؤها عندما يتلقى السيد إرسالًا من التابع.

الخطوة 4

دعونا نرى كيفية العمل مع I2C bus باستخدام Arduino.

أولاً ، سنقوم بتجميع الدائرة ، كما هو موضح في الشكل. سنتحكم في سطوع مؤشر LED باستخدام مقياس الجهد الرقمي AD5171 ذو 64 موضعًا ، والذي يتصل بحافلة I2C. العنوان الذي سنشير إليه إلى مقياس الجهد هو 0x2c (44 في النظام العشري).

دائرة تحكم LED باستخدام مقياس الجهد الرقمي واردوينو
دائرة تحكم LED باستخدام مقياس الجهد الرقمي واردوينو

الخطوة الخامسة

لنفتح الآن رسمًا تخطيطيًا من أمثلة مكتبة "Wire":

ملف -> عينات -> سلك -> مقياس الجهد الرقمي. لنقم بتحميله في ذاكرة Arduino. دعونا نشغلها.

كما ترى ، يرتفع سطوع LED بشكل دوري ، ثم ينطفئ فجأة. في هذه الحالة ، نتحكم في مقياس الجهد باستخدام Arduino عبر ناقل I2C.

موصى به: