رابط I2C و Arduino

فهرست مطالب:

رابط I2C و Arduino
رابط I2C و Arduino

تصویری: رابط I2C و Arduino

تصویری: رابط I2C و Arduino
تصویری: Arduino I2C связь между контроллерами 2024, ممکن است
Anonim

در این مقاله بررسی خواهیم کرد که رابط I2C (ay-tu-si ، i-two-tse) چیست ، ویژگی های آن چیست و نحوه کار با آن چیست.

رابط I2c
رابط I2c

لازم است

  • - آردوینو ؛
  • - پتانسیومتر دیجیتال AD5171؛
  • - دیود ساطع نور؛
  • - مقاومت 220 اهم ؛
  • - 2 مقاومت برای 4.7 کیلو اهم
  • - اتصال سیم ها

دستورالعمل ها

مرحله 1

پروتکل ارتباطات سریال IIC (که I2C - مدارهای مجتمع نیز نامیده می شود) از دو خط ارتباط دو طرفه برای انتقال داده استفاده می کند که به آنها گذرگاه SDA (داده سریال) و گذرگاه SCL (سریال ساعت) گفته می شود. همچنین دو خط برق وجود دارد. باس های SDA و SCL از طریق مقاومت ها به سمت باس قدرت کشیده می شوند.

حداقل یک استاد در شبکه وجود دارد که انتقال داده را آغاز می کند و سیگنال های هماهنگی را تولید می کند. این شبکه همچنین دارای بردهایی است که به درخواست استاد داده را انتقال می دهند. هر دستگاه slave یک آدرس منحصر به فرد دارد که استاد در آن آدرس می دهد. آدرس دستگاه در گذرنامه (صفحه داده) نشان داده شده است. حداکثر 127 دستگاه را می توان به یک گذرگاه I2C متصل کرد ، از جمله چندین مستر. دستگاه ها می توانند در هنگام کار به باس متصل شوند ، یعنی از اتصال داغ پشتیبانی می کند.

نمودار اتصال I2C
نمودار اتصال I2C

گام 2

آردوینو از دو پورت برای کار با رابط I2C استفاده می کند. به عنوان مثال ، در Arduino UNO و Arduino Nano ، پورت آنالوگ A4 با SDA مطابقت دارد ، پورت آنالوگ A5 با SCL مطابقت دارد.

برای سایر مدل های تخته:

Arduino Pro و Pro Mini - A4 (SDA) ، A5 (SCL)

آردوینو مگا - 20 (SDA) ، 21 (SCL)

آردوینو لئوناردو - 2 (SDA) ، 3 (SCL)

Arduino Due - 20 (SDA) ، 21 (SCL) ، SDA1 ، SCL1

نگاشت پین های آردوینو به اتوبوس های SDA و SCL
نگاشت پین های آردوینو به اتوبوس های SDA و SCL

مرحله 3

برای تسهیل تبادل داده ها با دستگاه ها از طریق گذرگاه I2C ، یک کتابخانه استاندارد "Wire" برای آردوینو نوشته شده است. این توابع زیر را دارد:

start (آدرس) - مقداردهی اولیه کتابخانه و اتصال به گذرگاه I2C ؛ اگر هیچ نشانی مشخص نشده باشد ، دستگاه متصل اصلی در نظر گرفته می شود. آدرس دهی 7 بیتی استفاده می شود.

requestFrom () - توسط استاد برای درخواست تعداد مشخصی بایت از بنده استفاده می شود.

startTransmission (آدرس) - آغاز انتقال داده به دستگاه برده در یک آدرس خاص ؛

endTransmission () - خاتمه انتقال داده به برده ؛

نوشتن () - نوشتن داده ها از بنده در پاسخ به درخواست ؛

available () - تعداد بایت اطلاعات موجود برای دریافت از برده را برمی گرداند.

read () - خواندن بایت منتقل شده از بنده به ارباب یا از ارباب به برده ؛

onReceive () - نشانگر تابعی است که باید فراخوانی شود وقتی که برده از master ارسال می کند.

onRequest () - تابعی را نشان می دهد که وقتی ارباب از بنده انتقالی می گیرد فراخوانی می شود.

مرحله 4

بیایید ببینیم که چگونه با استفاده از آردوینو با اتوبوس I2C کار کنیم.

ابتدا مدار را جمع می کنیم ، همانطور که در شکل نشان داده شده است. ما روشنایی LED را با استفاده از پتانسیومتر دیجیتال 64 موقعیت AD5171 ، که به باس I2C متصل می شود ، کنترل خواهیم کرد. آدرسی که در آن به پتانسیومتر مراجعه خواهیم کرد 0x2c است (44 عددی).

مدار کنترل LED با استفاده از پتانسیومتر دیجیتال و آردوینو
مدار کنترل LED با استفاده از پتانسیومتر دیجیتال و آردوینو

مرحله 5

حال بیایید طرحی از نمونه کتابخانه "Wire" را باز کنیم:

پرونده -> نمونه ها -> سیم -> پتانسیومتر_ دیجیتال. بیایید آن را در حافظه آردوینو بارگذاری کنیم. بگذارید آن را روشن کنیم.

می بینید که روشنایی LED به صورت چرخشی افزایش می یابد و پس از آن ناگهان خاموش می شود. در این حالت ، ما پتانسیومتر را با استفاده از آردوینو از طریق گذرگاه I2C کنترل می کنیم.

توصیه شده: