پروتکل i2c چیست ؟

پروتکل i2c چیست

🧩 معرفی پروتکل I2C — ارتباط سریال دو سیمه در دنیای الکترونیک

✅ I2C چیست؟

پروتکل I2C (مخفف Inter-Integrated Circuit) یکی از معروف‌ترین روش‌های ارتباطی در الکترونیک دیجیتال است که برای تبادل داده بین میکروکنترلرها و قطعات جانبی (مثل سنسورها، نمایشگرها، RTC، حافظه‌ها و …) استفاده می‌شود.


🔌 ویژگی‌های کلیدی I2C

ویژگیتوضیح
نوع ارتباطسریال (Serial)
تعداد سیم‌هافقط ۲ سیم (SDA برای داده، SCL برای کلاک)
حالت ارتباطMaster-Slave
سرعت انتقالتا ۳.۴ Mbps (در حالت High-Speed)
تعداد دستگاه‌هاتا ۱۲۷ دستگاه (با آدرس‌دهی منحصر به فرد)

🧠 نحوه عملکرد I2C

I2C از یک مستر (مثلاً آردوینو) برای کنترل انتقال داده‌ها استفاده می‌کند. دستگاه‌های دیگر به عنوان Slave منتظر دستور مستر می‌مانند.

  • SDA: خط داده (Data)
  • SCL: خط کلاک (Clock)

هر دستگاه Slave دارای یک آدرس یونیک است (معمولاً ۷ بیتی یا ۱۰ بیتی). زمانی که مستر می‌خواهد با یک دستگاه خاص ارتباط برقرار کند، آدرس آن را روی باس قرار می‌دهد.


🔗 مزایای I2C

✅ تنها دو سیم برای ارتباط با چند دستگاه
✅ سرعت مناسب برای بیشتر پروژه‌های DIY
✅ پشتیبانی وسیع توسط کتابخانه‌های آردوینو، STM32، ESP32 و …
✅ محبوب در پروژه‌های رباتیک و سنسورها


🔌 کاربردهای I2C در پروژه‌ها

ماژول یا سنسورتوضیح
MPU6050ژیروسکوپ و شتاب‌سنج ۳ محوره
OLED Displayنمایشگرهای کوچک با رزولوشن بالا
RTC (DS3231)ساعت دقیق واقعی
EEPROMحافظه‌های خارجی غیر فرّار

📐 نمونه کد ساده برای خواندن اطلاعات از یک دستگاه I2C (مثلاً MPU6050)

#include <Wire.h>

void setup() {
  Wire.begin(); // شروع ارتباط I2C
  Serial.begin(9600);
}

void loop() {
  Wire.beginTransmission(0x68); // آدرس I2C دستگاه
  Wire.write(0x3B); // رجیستر شروع داده
  Wire.endTransmission(false);
  Wire.requestFrom(0x68, 6); // درخواست خواندن ۶ بایت

  while (Wire.available()) {
    int data = Wire.read();
    Serial.print(data); Serial.print(" ");
  }
  Serial.println();
  delay(500);
}

 

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

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