How to Use the MCP2515 CAN Bus Module with Arduino

How to Use the MCP2515 CAN Bus Module with Arduino

The MCP2515 is a CAN (Controller Area Network) bus module widely used for automotive and industrial communication. Arduino'nun veriyi verimli bir şekilde göndermek ve almak için Can tabanlı sistemlerle arayüz oluşturmasını sağlar. Bu öğretici, Arduino ile MCP2515 modülünü kurma ve kullanarak size rehberlik edecektir.

Ne İhtiyacınız Olacak

  1. MCP2515 CAN BUS MODÜLÜ
  2. Arduino Kurulu (örn. UNO, Mega, Nano)
  3. Can-Bus uyumlu cihaz veya başka bir MCP2515 modülü
  4. Jumper telleri
  5. Breadboard (isteğe bağlı)
  6. Arduino IDE kurulu bir bilgisayar

Adım 1: MCP2515 modülünü anlamak

MCP2515 modülü, MCP2515 CAN denetleyicisini IC ve TJA1050'nin alıcı -vericisini kullanır. Modül, SPI arayüzü aracılığıyla Arduino ile iletişim kurar.

MCP2515 Pinout

Pin İşlev
VCC Güç kaynağı (5V)
Gnd Zemin
CS Çip Seçim
BU YÜZDEN SPI veri çıkışı
SPI veri girişi
Sck SPI saati
İnt Çıktı kesinti

Adım 2: MCP2515'i Arduino'ya bağlama

Aşağıda, MCP2515 modülünü bir Arduino Uno'ya bağlamak için kablo kılavuzu verilmiştir:

MCP2515 PIN Arduino pimi
VCC 5V
Gnd Gnd
CS Pim 10
BU YÜZDEN Pim 12
Pim 11
Sck Pin 13
İnt Pim 2

Not: Diğer Arduino panoları için, SPI pimlerinin belirli panonuzun pinout'una karşılık geldiğinden emin olun.

Adım 3: Gerekli kütüphaneyi kurun

. MCP_CAN Kütüphane, MCP2515 modülü ile etkileşimi basitleştirir.

MCP_CAN Kütüphanesi Yükleme Adımları:

  1. Arduino IDE'yi açın.
  2. Gidip gelmek Eskiz > Kütüphane ekleyin > Kütüphaneleri Yönetin.
  3. Kütüphane yöneticisinde "MCP_CAN" ı arayın.
  4. Tıklamak Düzenlemek.

4. Adım: Kodu yükleyin

Verici Kodu (CAN veriyolunda veri gönderme):

#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
}

Alıcı Kodu (CAN veriyolundan veri okuma):

#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();
  }
}

Adım 5: Kurulumu test edin

  1. MCP2515 modülünü Adım 2'de açıklandığı gibi Arduino'nuza bağlayın.
  2. Verici kodunu bir Arduino'ya ve alıcı kodunu başka bir Arduino'ya yükleyin.
  3. CAN veriyolunu oluşturmak için her iki MCP2515 modülünün Can_H ve Can_L pinlerini bağlayın.
  4. Her iki Arduino'daki seri monitörü açın ve baud hızını 115200.
  5. Alıcı Arduino'da Verici Arduino tarafından gönderilen mesajları görmelisiniz.

Sorun giderme

  • Alınan veri yok: Modüller arasındaki CAN_H ve CAN_L bağlantılarını kontrol edin.
  • Başlatma başarısız oldu: SPI bağlantılarının ve CS PIN'in kurulumunuzla eşleştiğinden emin olun.
  • Düzensiz iletişim: Her iki modülün de aynı baud hızını kullandığını doğrulayın (bu örnekte 500 kbps).

MCP2515 CAN BUS MODÜLÜNÜNÜNLERİN UYGULAMALARI

  1. Araç teşhisi (OBD-II)
  2. Endüstriyel Otomasyon Sistemleri
  3. Robot iletişim
  4. CAN otobüs ağlarıyla IoT cihazları

Çözüm

Veri göndermek ve almak için Arduino ile MCP2515 CAN modülünü başarıyla ayarladınız. Bu modül, bir CAN veriyolunda güvenilir iletişim gerektiren uygulamalar için inanılmaz derecede çok yönlüdür. Tam potansiyelini keşfetmek için farklı mesaj kimlikleri ve veri yükleri ile deney yapın!

Yorum bırak

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.