MCP2515 عبارة عن وحدة ناقل CAN (شبكة منطقة التحكم) تستخدم على نطاق واسع للاتصالات بالسيارات والصناعية. إنه يمكّن Arduino من الواجهة مع الأنظمة القائمة على العلبة لإرسال واستقبال البيانات بكفاءة. سوف يرشدك هذا البرنامج التعليمي من خلال إعداد وحدة MCP2515 باستخدام Arduino.
ماذا ستحتاج
- MCP2515 CAN CAN MODULE
- لوحة Arduino (على سبيل المثال ، UNO ، Mega ، Nano)
- جهاز متوافق مع CAN-BUS أو وحدة أخرى MCP2515
- الأسلاك الطائر
- لوح (اختياري)
- جهاز كمبيوتر مع 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:
- افتح Arduino IDE.
- اذهب إلى رسم > تشمل المكتبة > إدارة المكتبات.
- ابحث عن "MCP_CAN" في مدير المكتبة.
- انقر ثَبَّتَ.
الخطوة 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: اختبار الإعداد
- قم بتوصيل وحدة MCP2515 بأردوينو الخاص بك كما هو موضح في الخطوة 2.
- قم بتحميل رمز الإرسال إلى Arduino ورمز المتلقي إلى Arduino آخر.
- قم بتوصيل دبابيس Can_H و Can_L لكل من وحدات MCP2515 لإنشاء حافلة CAN.
- افتح الشاشة التسلسلية على كل من Arduinos وضبط معدل Baud على
115200
. - في جهاز الاستقبال Arduino ، يجب أن ترى الرسائل التي يرسلها جهاز الإرسال Arduino.
استكشاف الأخطاء وإصلاحها
- لم يتم استلام البيانات: تحقق من اتصالات can_h و can_l بين الوحدات.
- فشل التهيئة: تأكد من توصيل اتصالات SPI و CS PIN.
- التواصل الخاطئ: تحقق من أن كلا الوحدات تستخدم نفس معدل الباود (500 كيلو بايت في الثانية في هذا المثال).
تطبيقات وحدة MCP2515 CAN BUS
- تشخيصات المركبات (OBD-II)
- أنظمة الأتمتة الصناعية
- اتصالات الروبوتات
- أجهزة إنترنت الأشياء مع شبكات الحافلات Can
خاتمة
لقد نجحت في إعداد وحدة MCP2515 CAN CAN مع Arduino لإرسال وتلقي البيانات. هذه الوحدة متعددة الاستخدامات بشكل لا يصدق للتطبيقات التي تتطلب اتصالًا موثوقًا به على حافلة علبة. قم بتجربة معرفات الرسائل المختلفة وحمولة البيانات لاستكشاف إمكاناتها الكاملة!