Paano gamitin ang MCP2515 ay maaaring Module ng Bus kasama ang Arduino

How to Use the MCP2515 CAN Bus Module with Arduino

Ang MCP2515 ay isang module ng bus ng CAN (Controller Area) na malawakang ginagamit para sa komunikasyon ng automotiko at pang -industriya. Pinapayagan nito ang Arduino na makipag-ugnay sa mga system na batay sa can upang maipadala at makatanggap ng data nang mahusay. Ang tutorial na ito ay gagabay sa iyo sa pamamagitan ng pag -set up at paggamit ng MCP2515 module kasama si Arduino.

Ano ang kakailanganin mo

  1. Ang MCP2515 ay maaaring module ng bus
  2. Arduino Board (hal., Uno, Mega, Nano)
  3. Maaaring katugmang aparato o isa pang module ng MCP2515
  4. Jumper wires
  5. Breadboard (Opsyonal)
  6. Isang computer na may naka -install na Arduino IDE

Hakbang 1: Pag -unawa sa module ng MCP2515

Ang module ng MCP2515 ay gumagamit ng MCP2515 ay maaaring magsusupil sa IC at ang TJA1050 ay maaaring mag -transceiver. Ang module ay nakikipag -usap sa Arduino sa pamamagitan ng interface ng SPI.

MCP2515 Pinout

Pin Function
VCC Power Supply (5V)
Gnd Lupa
CS Piliin ang chip
Kaya Output ng data ng SPI
Si Input ng data ng SPI
SCK SPI Clock
Int Makagambala sa output

Hakbang 2: Ang mga kable ng MCP2515 kay Arduino

Nasa ibaba ang gabay ng mga kable para sa pagkonekta sa module ng MCP2515 sa isang Arduino uno:

MCP2515 Pin Arduino Pin
VCC 5v
Gnd Gnd
CS Pin 10
Kaya Pin 12
Si Pin 11
SCK Pin 13
Int Pin 2

Tandaan: Para sa iba pang mga board ng Arduino, tiyakin na ang mga SPI pin ay tumutugma sa pinout ng iyong tukoy na board.

Hakbang 3: I -install ang kinakailangang library

Ang Mcp_can Pinapagaan ng library ang pakikipag -ugnay sa module ng MCP2515.

Mga Hakbang upang I -install ang MCP_Can Library:

  1. Buksan ang Arduino IDE.
  2. Pumunta sa Sketch > Isama ang library > Pamahalaan ang mga aklatan.
  3. Maghanap para sa "MCP_CAN" sa manager ng aklatan.
  4. Mag -click I -install.

Hakbang 4: Mag -upload ng code

Transmiter code (pagpapadala ng data sa CAN BUS):

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

Receiver Code (pagbabasa ng data mula sa CAN BUS):

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

Hakbang 5: Subukan ang pag -setup

  1. Ikonekta ang module ng MCP2515 sa iyong Arduino tulad ng inilarawan sa Hakbang 2.
  2. I -upload ang transmiter code sa isang Arduino at ang code ng tatanggap sa isa pang Arduino.
  3. Ikonekta ang mga can_h at can_l pin ng parehong mga module ng MCP2515 upang maitaguyod ang bus.
  4. Buksan ang serial monitor sa parehong mga arduinos at itakda ang rate ng baud sa 115200.
  5. Sa tatanggap na Arduino, dapat mong makita ang mga mensahe na ipinadala ng transmiter na Arduino.

Pag -aayos

  • Walang natanggap na data: Suriin ang mga koneksyon sa can_h at can_l sa pagitan ng mga module.
  • Nabigo ang Initialization: Tiyakin na ang mga koneksyon sa SPI at CS pin ay tumutugma sa iyong pag -setup.
  • Maling komunikasyon: Patunayan na ang parehong mga module ay gumagamit ng parehong rate ng baud (500 kbps sa halimbawang ito).

Ang mga aplikasyon ng MCP2515 ay maaaring module ng bus

  1. Diagnostics ng Sasakyan (OBD-II)
  2. Mga Sistema ng Pang -industriya ng Pang -industriya
  3. Komunikasyon ng Robotics
  4. Ang mga aparato ng IoT na may mga network ng BUS

Konklusyon

Matagumpay mong na -set up ang MCP2515 ay maaaring bus module kasama si Arduino para sa pagpapadala at pagtanggap ng data. Ang module na ito ay hindi kapani -paniwalang maraming nalalaman para sa mga application na nangangailangan ng maaasahang komunikasyon sa isang bus ng CAN. Eksperimento sa iba't ibang mga ID ng mensahe at mga datos ng data upang galugarin ang buong potensyal nito!

Mag -iwan ng komento

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.