إذا كنت من محبي التكنولوجيا وكثيرًا ما تقوم بتجارب باستخدام الأردوينو، فهذا المقال سوف يبهرك. سنرى اليوم كيفية إعداد شبكة CAN الخاصة بك باستخدام وحدة MCP2515 وArduino. سوف تكتشف كيفية التواصل بين الأجهزة المختلفة على شبكة CAN بكفاءة وموثوقية. يستخدم هذا النوع من الشبكات على نطاق واسع في السيارات والتطبيقات الصناعية الأخرى.
سواء كنت تقوم بمشروع سيارات أو تحتاج إلى اتصال بين وحدات تحكم دقيقة متعددة، فإن ناقل CAN مثالي للتطبيقات التي تكون فيها الموثوقية والأداء ضروريين. ومع وحدة MCP2515، من السهل جدًا دمج Arduino في هذه الشبكة. لذا، استعد للتعلم بعمق حول بروتوكول CAN وتكوين الأجهزة والبرمجة اللازمة.
ما هي حافلة CAN؟
حافلة CAN (شبكة منطقة التحكم) هي بروتوكول اتصال تسلسلي يسمح للأجهزة المختلفة بالتواصل مع بعضها البعض. تم تطويره في عام 1986 من قبل شركة Bosch، وهو مصمم خصيصًا لتطبيقات السيارات، على الرغم من أن استخدامه امتد إلى قطاعات أخرى مثل الأتمتة الصناعية. في هذا النوع من الشبكات، تقوم الأجهزة المتصلة بإرسال واستقبال الرسائل دون الحاجة إلى مضيف مركزي أو وحدة تحكم، مما يجعله بروتوكولًا فعالاً للغاية للبيئات التي يكون فيها الاتصال والموثوقية أمرًا أساسيًا.
تحتوي السيارة الحديثة على أكثر من 70 جهاز تحكم، تعرف باسم ECUs (وحدات التحكم الإلكترونية)، متصلة ببعضها البعض عبر ناقل CAN. بفضل هذا البروتوكول، تقوم وحدات التحكم الإلكترونية بتبادل المعلومات الأساسية لتشغيل السيارة، مثل بيانات سرعة السيارة أو موضع دواسة الوقود.
يمكن طوبولوجيا الحافلة والإشارات
طوبولوجيا نظام CAN هي النوع multimasterمما يعني أن أي جهاز متصل بالشبكة يمكنه التحكم في الناقل لإرسال الرسائل. تستمع كافة العقد إلى هذه الرسائل وتقرر ما إذا كانت تريد الرد عليها أو تجاهلها.
من الناحية المادية، يتم الاتصال عبر كابلين: يمكن_H y هل يمكنني. هذه الكابلات مضفرة لتقليل التداخل الكهرومغناطيسي. بالإضافة إلى ذلك، يجب إنهاء أطراف الشبكة بمقاومات 120 أوم لتجنب الانعكاسات في الإشارة.
يمكن الإشارة
يستخدم نظام CAN حالتين منطقيتين للاتصال: مهيمن y متنحية. في الحالة السائدة، يبلغ جهد CAN_H 3.5 فولت، بينما يبلغ جهد CAN_L 1.5 فولت. في هذه الحالة يتم إرسال "0" منطقي. من ناحية أخرى، في الحالة المتنحية، يكون لكلا السلكين جهد 2.5 فولت، مما يشير إلى أن الحافلة مجانية ويمكن نقل المنطق "1". وهذا التغيير في الفولتية بين الكابلين هو الذي يسمح بنقل البيانات على الشبكة.
وحدة MCP2515
El وحدة MCP2515 إنه حل مثالي لإضافة اتصال CAN إلى Arduino الخاص بك. وهو يتألف من وحدة تحكم CAN (MCP2515، التي تتبع مواصفات CAN 2.0B) وجهاز إرسال واستقبال CAN (TJA1050، الذي يتعامل مع الاتصال المادي). تعمل هاتان الرقاقتان معًا حتى تتمكن من إرسال واستقبال رسائل CAN باستخدام Arduino الخاص بك عبر واجهة SPI.
يدعم MCP2515 كلاً من الرسائل القياسية (11 بت) والممتدة (29 بت) ولديه القدرة على تصفية الرسائل غير المرغوب فيها من خلال استخدام الأقنعة والمرشحات، التي تعمل على إلغاء تحميل العمل من وحدة التحكم الدقيقة. إنه خيار ممتاز للمشاريع التي تتطلب اتصالات موثوقة، سواء في البيئات الصاخبة أو لمسافات طويلة.
مكونات الوحدة النمطية MCP2515
تتضمن وحدة MCP2515 الأجزاء التالية:
- يمكن التحكم MCP2515: مسؤول عن تنفيذ كافة وظائف بروتوكول CAN، مثل إرسال واستقبال الرسائل.
- جهاز الإرسال والاستقبال TJA1050: مسؤول عن تحويل البيانات من وحدة التحكم CAN إلى إشارات لناقل CAN الفعلي والعكس.
- دبابيس الاتصال SPI: باستخدام دبابيس SCK وMOSI وMISO وCS، يتواصل MCP2515 مع Arduino من خلال واجهة SPI الخاصة به.
- محطات الحافلات يمكن: هذه الكتلة الطرفية اللولبية الصغيرة تحمل علامة "H" و"L". يجب توصيل CAN_H وCAN_L بكابلات شبكة CAN.
كيفية إنشاء شبكة CAN باستخدام الاردوينو
مع وحدة MCP2515، يعد إعداد شبكة CAN أمرًا بسيطًا نسبيًا. أشرح أدناه كيفية توصيل الوحدة بلوحة Arduino الخاصة بك وكيفية تكوين البرنامج.
اتصالات الوحدة النمطية MCP2515
للبدء، قم بتوصيل منافذ SPI الخاصة بالاردوينو الخاص بك كما يلي:
- ميسو (إخراج الوحدة) لتثبيت D12 من Arduino
- MOSI (إدخال الوحدة النمطية) لتثبيت D11 من Arduino
- SCK (الساعة) إلى Arduino pin D13
- CS (اختيار الشريحة) إلى Arduino pin D10
ستحتاج أيضًا إلى توصيل طرف INT الخاص بـ MCP2515 بمنفذ Arduino الرقمي، على سبيل المثال D2، حيث يتم استخدام هذا المنفذ للتعامل مع المقاطعات عند تلقي رسالة صالحة.
لا تنس تشغيل الوحدة الخاصة بك. يجب توصيل طرف VCC بجهد 5 فولت، ودبوس GND بالأرضي.
بالنسبة لمحطات حافلات CAN، قم بتوصيل CAN_H بـ CAN_H وCAN_L بـ CAN_L بين العقد المختلفة التي تريد ربطها فيما بينها. تذكر أنه يجب إنهاء ناقل CAN عند كلا الطرفين بمقاومة تبلغ 120 أوم.
برمجة الاردوينو
بمجرد توصيل العقد، فقد حان الوقت لبرمجة Arduino الخاص بك للتواصل مع ناقل CAN عبر وحدة MCP2515. أفضل طريقة للقيام بذلك هي باستخدام مكتبة مناسبة، مثل المكتبة 'mcp2515'.
أولا، تحتاج إلى تثبيت هذه المكتبة. إذا كنت تستخدم Arduino IDE، فانتقل إلى Sketch > Include Library > Manage Libraries. ابحث عن "mcp2515" وحدد خيار التثبيت.
بعد تثبيت المكتبة، يمكنك المتابعة لكتابة الكود الخاص بعقدة جهاز الإرسال وعقدة جهاز الاستقبال. سأعرض لك أدناه أمثلة أساسية لكليهما.
مثال التعليمات البرمجية لعقدة الارسال
يرسل هذا الرمز رسالة "Hello World" عبر حافلة CAN كل ثانية.
#include void setup() { Serial.begin(9600); while (!Serial); Serial.println("Nodo transmisor CAN"); if (!CAN.begin(500E3)) { Serial.println("Error al iniciar CAN"); while (1); }}void loop() { Serial.print("Enviando mensaje... "); CAN.beginPacket(0x12); CAN.write('H'); CAN.write('o'); CAN.write('l'); CAN.write('a'); CAN.write(' '); CAN.write('M'); CAN.write('u'); CAN.write('n'); CAN.write('d'); CAN.write('o'); CAN.endPacket(); Serial.println("Mensaje enviado correctamente"); delay(1000);}
مثال التعليمات البرمجية للعقدة المتلقية
يتلقى هذا الرمز رسائل من ناقل CAN ويعرضها على الشاشة التسلسلية.
#include void setup() { Serial.begin(9600); while (!Serial); Serial.println("Nodo receptor CAN"); if (!CAN.begin(500E3)) { Serial.println("Error al iniciar CAN"); while (1); } CAN.onReceive(onReceive);}void loop() {}void onReceive(int packetSize) { Serial.print("Mensaje recibido con ID: 0x"); Serial.print(CAN.packetId(), HEX); Serial.print(" | Tamaño: "); Serial.print(packetSize); Serial.print(" | Datos: "); while (CAN.available()) { Serial.print((char)CAN.read()); } Serial.println();}
السرعات والمسافات في شبكة CAN
تتيح حافلة CAN الاتصال بسرعات مختلفة. الحد الأقصى للسرعة التي يدعمها MCP2515 هو 1 ميجابت/ثانية، لكن طول الناقل يحد من سرعة الإرسال. على سبيل المثال، عند سرعة 1 ميجابت/ثانية، يبلغ الحد الأقصى لطول الناقل حوالي 40 مترًا. ومع ذلك، إذا كنت بحاجة إلى السفر لمسافات أكبر، فيمكنك تقليل سرعتك. وبسرعة 125 كيلوبت/ثانية، يمكن أن يصل طول الحافلة إلى 500 متر.
من المهم تخطيط الشبكة بشكل جيد واستخدام السرعة المناسبة لطول الحافلة والبيئة التي سيتم استخدامها فيها، حيث أن البيئات الصاخبة يمكن أن تؤثر على جودة الاتصال.
تذكر أيضًا استخدام الزوج المجدول لكابلات CAN_H وCAN_L، حيث يساعد ذلك على تقليل التداخل الكهرومغناطيسي وتحسين موثوقية الشبكة.
يمكن الشبكة مع العقد المتعددة
إذا كنت ترغب في تكوين شبكة ذات عقد متعددة، فإن العملية مشابهة جدًا. الشيء الوحيد الذي عليك القيام به هو التأكد من توصيل جميع العقد بالتوازي مع خطوط CAN_H وCAN_L. تذكر أيضًا وضع مقاومات الإنهاء فقط في نهايات الخط الرئيسي، وليس عند العقد الوسيطة.
في شبكة أكثر تعقيدًا، قد يكون لديك عقد متعددة تعمل كأجهزة إرسال واستقبال. تضيف كل عقدة الحد الأدنى من الحمل إلى الناقل، مما يسمح بتوصيل ما يصل إلى 112 عقدة على شبكة CAN دون التأثير بشكل كبير على الأداء.
سواء كنت تستخدم ناقل CAN في السيارة لقراءة بيانات المحرك أو في مشروع صناعي لتوصيل أجهزة استشعار متعددة، فإن وحدة MCP2515 تجعل من السهل والفعال إضافة هذه الوظيفة. يعد هذا النوع من الشبكات مثاليًا للتطبيقات التي يكون فيها زمن الوصول المنخفض والموثوقية في نقل البيانات أمرًا ضروريًا.