Cara menggunakan Modul Bus MCP2515 Can With Arduino

How to Use the MCP2515 CAN Bus Module with Arduino

Modul bus MCP2515 adalah CAN (Controller Area Network) yang banyak digunakan untuk komunikasi otomotif dan industri. Ini memungkinkan Arduino untuk berinteraksi dengan sistem berbasis kaleng untuk mengirim dan menerima data secara efisien. Tutorial ini akan memandu Anda melalui pengaturan dan menggunakan modul MCP2515 dengan Arduino.

Apa yang Anda Butuhkan

  1. MODUL MCP2515 CAN BUS
  2. Dewan Arduino (mis., Uno, mega, nano)
  3. Perangkat Kompatibel Can-Bus atau Modul MCP2515 Lainnya
  4. Kabel jumper
  5. Papan tempat memotong roti (opsional)
  6. Komputer dengan IDE Arduino diinstal

Langkah 1: Memahami Modul MCP2515

Modul MCP2515 menggunakan MCP2515 Can Controller IC dan TJA1050 Can Transceiver. Modul berkomunikasi dengan Arduino melalui antarmuka SPI.

Pinout MCP2515

Pin Fungsi
Vcc Catu daya (5V)
Gnd Tanah
CS Chip pilih
JADI Output data SPI
Si Input Data SPI
Sck Jam spi
Int Output interupsi

Langkah 2: Kabel MCP2515 ke Arduino

Di bawah ini adalah panduan kabel untuk menghubungkan modul MCP2515 ke Arduino UNO:

Pin MCP2515 Pin Arduino
Vcc 5v
Gnd Gnd
CS Pin 10
JADI Pin 12
Si Pin 11
Sck Pin 13
Int Pin 2

Catatan: Untuk papan Arduino lainnya, pastikan pin SPI sesuai dengan pinout papan spesifik Anda.

Langkah 3: Instal perpustakaan yang diperlukan

Itu Mcp_can Perpustakaan menyederhanakan interaksi dengan modul MCP2515.

Langkah -langkah untuk menginstal Perpustakaan MCP_CAN:

  1. Buka Ide Arduino.
  2. Pergi ke Sketsa > Sertakan perpustakaan > Kelola Perpustakaan.
  3. Cari "mcp_can" di manajer perpustakaan.
  4. Klik Memasang.

Langkah 4: Unggah kode

Kode pemancar (mengirim data pada bus 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 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
}

Kode penerima (membaca data dari bus 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();
  }
}

Langkah 5: Uji pengaturan

  1. Hubungkan modul MCP2515 ke Arduino Anda seperti yang dijelaskan pada Langkah 2.
  2. Unggah kode pemancar ke satu Arduino dan kode penerima ke Arduino lain.
  3. Sambungkan pin CAN_H dan CAN_L dari kedua modul MCP2515 untuk membuat bus CAN.
  4. Buka monitor serial di kedua arduinos dan atur laju baud ke 115200.
  5. Pada penerima Arduino, Anda akan melihat pesan yang dikirim oleh pemancar Arduino.

Pemecahan masalah

  • Tidak ada data yang diterima: Periksa koneksi can_h dan can_l antara modul.
  • Inisialisasi Gagal: Pastikan koneksi SPI dan pin CS cocok dengan pengaturan Anda.
  • Komunikasi yang tidak menentu: Pastikan kedua modul menggunakan laju baud yang sama (500 kbps dalam contoh ini).

Aplikasi Modul Bus MCP2515 Can

  1. Diagnostik Kendaraan (OBD-II)
  2. Sistem Otomasi Industri
  3. Komunikasi Robotika
  4. Perangkat IoT dengan jaringan bus Can

Kesimpulan

Anda telah berhasil mengatur modul bus Can MCP2515 dengan Arduino untuk mengirim dan menerima data. Modul ini sangat fleksibel untuk aplikasi yang membutuhkan komunikasi yang andal melalui bus CAN. Eksperimen dengan ID pesan dan payload data yang berbeda untuk mengeksplorasi potensi penuhnya!

Tinggalkan komentar

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.