مهندس موفق الکترونیک

I2C در رزبری‌پای

مقدمه

  • I2C  یک ارتباط سریال همزمان است که ارتباط بین دو دستگاه را فراهم می‌کند.
  • این پروتکل یک پروتکل ارباب-برده (master-slave) است که می‌تواند یک یا چند ارباب و یک یا چند برده داشته باشد، درحالی که پروتکل SPI تنها یک ارباب دارد.
  • این پروتکل عموماً برای ارتباطات مسافت کوتاه استفاده می‌شود.
  • دستگاه I2C یک آدرس یکتای ۷ بیتی یا ۱۰ بیتی دارد. بنابراین، برای دسترسی به این دستگاه‌ها، ارباب باید آنها را با آدرس ۷ بیتی یا ۱۰ بیتی‌شان خطاب قرار دهد.
  • I2C کاربردهای فراوانی مانند خواندن RTC (ساعت بلادرنگ)، دسترسی به حافظه‌های EEPROM خارجی دارد. همچنین از این پروتکل برای ماژول‌های سنسور مانند ژیرو، مگنومتر و… به کار می‌رود.
  • این ارتباط همچنین با نام رابط دو سیمه Two Wire Interface) TWI) نیز شناخته می‌شود.

I2C در رزبری‌پای

  • رزبری‌‌پای یک پردازنده‌ی Broadcom دارد که دارای یک کنترلر سریال BSC) Broadcom) می‌باشد. این کنترلر، یک کنترلر BSC ارباب با مد سریع (400Kb/s) می‌باشد. گذرگاه (باس) BSC سازگار با گذرگاه I2C فیلیپس می‌باشد.
  • از هردو آدرس‌دهی ۷ بیتی و ۱۰ بیتی پشتیبانی می‌کند.
  • همچنین دارای یک ارباب BSC2 می‌باشد که اختصاصا برای ارتباط با HDMI قرار داده شده و نباید در دسترس کاربر قرار گیرد.
  • گذرگاه/رابط I2C برای ارتباط با دستگاه‌های خارجی نظیر RTC ،MPU6050، مغناطیس‌سنج و … تنها با ۲ خط به کار گرفته می‌شود. در صورت داشتن آدرس‌های مختلف می‌توان از طریق I2C به دستگاه‌های بیشتری نیز وصل شد.
مطلب پیشنهادی:  آموزش راه اندازی GPIO رزبری پای

برای دسترسی به گذرگاه I2C در رزبری‌پای، باید مقداری پیکربندی انجام گیرد. رزبری‌پای دارای پین I2C بوده که در ادامه خواهد آمد.

پین‌های I2C رزبری‌پای

I2C در رزبری‌پای

پیکربندی‌های رزبری‌پای

پیش از برقراری ارتباط دستگاه‌های I2C با رزبری‌پای، مقداری پیکربندی اولیه باید انجام داد. این پیکربندی‌ها در زیر آمده است.

اولا، باید I2C رزبری‌پای را فعال کنیم. این کار را از طریق ترمینال با دستور زیر شروع می‌کنیم.

sudo raspi-config

I2C در رزبری‌پای

گزینه‌ی Interface Configurations را انتخاب کنید.

I2C در رزبری‌پای

در Interfacing Options، گزینه‌ی I2C را انتخاب کنید.

I2C در رزبری‌پای

 I2C را فعال کنید.

I2C در رزبری‌پای

I2C در رزبری‌پای

هنگامی‌ که درخواست راه‌اندازی مجدد را داد، Yes را انتخاب کنید.

حال پس از راه‌اندازی رزبری‌پای، حالت کاربر (user-mode) پورت I2C را با دستور زیر چک می‌کنیم.

ls /dev/*i2c*

رزبری‌پای نام پورت I2C را نمایش می‌دهد.

I2C در رزبری‌پای

پاسخ فوق مد کاربر رابط I2C را نشان می‌دهد. نسخه‌های قدیمی‌تر رزبری‌پای ممکن است پورت مد کاربر را به صورت i2c-0 نشان دهند.

جستجو یا تست دستگاه I2C روی رزبری‌پای

اکنون می‌توان هر دستگاه I2C متصل به بورد رزبری‌پای را با نصب i2c tools جستجو و یا تست کنید. می‌توان با برنامه مدیریت پکیج‌های apt برنامه i2c tools را نصب کرد. دستور زیر را در ترمینال رزبری‌پای وارد کنید.

sudo apt-get install -y i2c-tools

اکنون هر دستگاه مبتنی بر I2C را که می‌خواهید به پورت مد کاربر وصل کنید و با استفاده از دستور زیر آن پورت را جستجو کنید.

sudo i2cdetect -y 1

این دستور آدرس دستگاه را به عنوان پاسخ برمی‌گرداند. مثلا در اینجا، ما یک دستگاه MPU6050 مبتنی بر I2C را به رزبری‌پای وصل کرده و سعی در شناسایی آن داریم، روند این کار در شکل زیر آمده است.

مطلب پیشنهادی:  آموزش اتصال استپر موتور به رزبری پای

I2C در رزبری‌پای

دستور i2cdetect پورت I2C را برای گرفتن آدرس دستگاه متصل به آن جستجو می‌کند.

اگر هیچ دستگاهی به پورت I2C متصل نباشد، این دستور مقدار (- -) را برمی‌گرداند.

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

i2cgeti2cset, ...

مثال

sudo i2cget -y I2C_user_mode_Port address_of_device Register_addresssudo i2cget 1 0x68 0x01
sudo i2cget 1 0x68 0x01

این دستور داده موجود در رجیستر با آدرس 0x01 را برمی‌گرداند.

دسترسی به دستگاه‌های I2C با استفاده از SMBus

می‌توان با استفاده از SMBus به گذرگاه I2C رزبری‌پای دسترسی یافت. SMBus زیرمجموعه‌ای از گذرگاه/رابط I2C می‌باشد. SMBus پشتیبانی از دستگاه‌های مبتنی بر I2C را فراهم می‌کند. می‌توان هنگام نوشتن برنامه برای دسترسی به دستگاه I2C، از دستورات SMBus بهره برد.

هنگام توسعه برنامه برای ارتباط I2C با رزبری‌پای در پایتون، از پکیج کتابخانه‌ی SMBus استفاده کنید که پشتیبانی قدرتمندی برای دسترسی به دستگاه‌های I2C فراهم می‌کند. بنابراین، باید با استفاده از برنامه مدیریت پکیج‌های SMBus ،apt را برای پایتون اضافه کنیم.

sudo apt-get install python-smbus

اگر آموزش «I2C در رزبری‌پای» براتون مفید واقع شده ما را نیز دعا کنید و اگر خواستین می‌توانید از محتوا‌ی رایگان آموزشی حمایت مالی کنید. همچنین نظرات، پیشنهادات و درخواست‌های خود را در کامنت‌ها ⇓ بنویسید.

مطلب پیشنهادی:  کنترل GPIO های رزبری‌پای از طریق تلگرام

اگر این نوشته‌ برایتان مفید بود لطفا کامنت بنویسید.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *