كيفية استخدام MCP2515 Can Can Module مع Arduino

How to Use the MCP2515 CAN Bus Module with Arduino

MCP2515 عبارة عن وحدة ناقل CAN (شبكة منطقة التحكم) تستخدم على نطاق واسع للاتصالات بالسيارات والصناعية. إنه يمكّن Arduino من الواجهة مع الأنظمة القائمة على العلبة لإرسال واستقبال البيانات بكفاءة. سوف يرشدك هذا البرنامج التعليمي من خلال إعداد وحدة MCP2515 باستخدام Arduino.

ماذا ستحتاج

  1. MCP2515 CAN CAN MODULE
  2. لوحة Arduino (على سبيل المثال ، UNO ، Mega ، Nano)
  3. جهاز متوافق مع CAN-BUS أو وحدة أخرى MCP2515
  4. الأسلاك الطائر
  5. لوح (اختياري)
  6. جهاز كمبيوتر مع Arduino IDE مثبت

الخطوة 1: فهم وحدة MCP2515

تستخدم وحدة MCP2515 CAN MCP2515 CAN CAN CANTERSIC IC و TJA1050 يمكن أن تستقل الإرسال والاستقبال. تتواصل الوحدة مع Arduino عبر واجهة SPI.

MCP2515 Pinout

دبوس وظيفة
VCC مزود الطاقة (5 فولت)
GND أرضي
CS رقاقة اختيار
لذا إخراج بيانات SPI
سي إدخال بيانات SPI
SCK SPI Clock
int الإخراج المقاطعة

الخطوة 2: توصيل MCP2515 إلى Arduino

فيما يلي دليل الأسلاك لتوصيل وحدة MCP2515 بوحدة Arduino UNO:

MCP2515 دبوس دبوس أردوينو
VCC 5V
GND GND
CS دبوس 10
لذا دبوس 12
سي دبوس 11
SCK دبوس 13
int دبوس 2

ملحوظة: بالنسبة إلى لوحات Arduino الأخرى ، تأكد من أن دبابيس SPI تتوافق مع pinout الخاص بمجلسك المحدد.

الخطوة 3: تثبيت المكتبة المطلوبة

ال MCP_CAN تعمل المكتبة على تبسيط التفاعل مع وحدة MCP2515.

خطوات لتثبيت مكتبة MCP_CAN:

  1. افتح Arduino IDE.
  2. اذهب إلى رسم > تشمل المكتبة > إدارة المكتبات.
  3. ابحث عن "MCP_CAN" في مدير المكتبة.
  4. انقر ثَبَّتَ.

الخطوة 4: تحميل الرمز

رمز الإرسال (إرسال بيانات على ناقل العلبة):

#include <SPI.h>
#include <mcp_can.h>

#define CAN_CS 10
MCP_CAN CAN(CAN_CS); // Set CS pin for MCP2515

void setup() {
  Serial.begin(115200);

  if (CAN.begin(MCP_ANY, 500000, MCP_8MHZ) == CAN_OK) {
    Serial.println("CAN Bus Initialized Successfully");
  } else {
    Serial.println("CAN Bus Initialization Failed");
    while (1);
  }

  CAN.setMode(MCP_NORMAL);
  Serial.println("CAN Bus set to Normal Mode");
}

void loop() {
  unsigned char data[8] = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08};

  if (CAN.sendMsgBuf(0x100, 0, 8, data) == CAN_OK) {
    Serial.println("Message Sent Successfully");
  } else {
    Serial.println("Error Sending Message");
  }

  delay(1000); // Send data every second
}

رمز الاستقبال (قراءة البيانات من حافلة CAN):

#include <SPI.h>
#include <mcp_can.h>

#define CAN_CS 10
MCP_CAN CAN(CAN_CS); // Set CS pin for MCP2515

void setup() {
  Serial.begin(115200);

  if (CAN.begin(MCP_ANY, 500000, MCP_8MHZ) == CAN_OK) {
    Serial.println("CAN Bus Initialized Successfully");
  } else {
    Serial.println("CAN Bus Initialization Failed");
    while (1);
  }

  CAN.setMode(MCP_NORMAL);
  Serial.println("CAN Bus set to Normal Mode");
}

void loop() {
  unsigned char len = 0;
  unsigned char buf[8];

  if (CAN.checkReceive() == CAN_MSGAVAIL) {
    CAN.readMsgBuf(&len, buf);
    unsigned long id = CAN.getCanId();

    Serial.print("Message ID: 0x");
    Serial.println(id, HEX);

    Serial.print("Data: ");
    for (int i = 0; i < len; i++) {
      Serial.print(buf[i], HEX);
      Serial.print(" ");
    }
    Serial.println();
  }
}

الخطوة 5: اختبار الإعداد

  1. قم بتوصيل وحدة MCP2515 بأردوينو الخاص بك كما هو موضح في الخطوة 2.
  2. قم بتحميل رمز الإرسال إلى Arduino ورمز المتلقي إلى Arduino آخر.
  3. قم بتوصيل دبابيس Can_H و Can_L لكل من وحدات MCP2515 لإنشاء حافلة CAN.
  4. افتح الشاشة التسلسلية على كل من Arduinos وضبط معدل Baud على 115200.
  5. في جهاز الاستقبال Arduino ، يجب أن ترى الرسائل التي يرسلها جهاز الإرسال Arduino.

استكشاف الأخطاء وإصلاحها

  • لم يتم استلام البيانات: تحقق من اتصالات can_h و can_l بين الوحدات.
  • فشل التهيئة: تأكد من توصيل اتصالات SPI و CS PIN.
  • التواصل الخاطئ: تحقق من أن كلا الوحدات تستخدم نفس معدل الباود (500 كيلو بايت في الثانية في هذا المثال).

تطبيقات وحدة MCP2515 CAN BUS

  1. تشخيصات المركبات (OBD-II)
  2. أنظمة الأتمتة الصناعية
  3. اتصالات الروبوتات
  4. أجهزة إنترنت الأشياء مع شبكات الحافلات Can

خاتمة

لقد نجحت في إعداد وحدة MCP2515 CAN CAN مع Arduino لإرسال وتلقي البيانات. هذه الوحدة متعددة الاستخدامات بشكل لا يصدق للتطبيقات التي تتطلب اتصالًا موثوقًا به على حافلة علبة. قم بتجربة معرفات الرسائل المختلفة وحمولة البيانات لاستكشاف إمكاناتها الكاملة!

اترك تعليقًا

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.