Ang pag -unawa ay maaaring protocol ng bus at gamit ang MCP2515 kasama si Arduino

Understanding CAN Bus Protocol and Using the MCP2515 with Arduino

Sa kaharian ng mga aplikasyon ng automotiko at pang -industriya, ang maaasahang komunikasyon sa pagitan ng maraming mga microcontroller ay pinakamahalaga. Ang Controller Area Network (CAN) na protocol ng bus ay lumitaw bilang isang matatag na solusyon para sa mga naturang pangangailangan. Ang post sa blog na ito ay sumasalamin sa mga pundasyon ng protocol ng CAN BUS at ipinapakita kung paano isama ang MCP2515 ay maaaring magsusupil sa isang Arduino, na nagpapagana ng walang putol na komunikasyon sa iyong mga proyekto.

Ano ang maaaring protocol ng bus?

Ang Controller Area Network (CAN) BUS ay isang matatag na pamantayan ng bus ng sasakyan na idinisenyo upang payagan ang mga microcontroller at aparato na makipag -usap sa bawat isa nang walang isang host computer. Binuo ng Bosch noong 1980s, ang BUS ay naging isang pamantayan sa mga sistema ng automotiko ngunit malawakang ginagamit din sa pang -industriya na automation at iba pang mga naka -embed na system.

Ang mga pangunahing tampok ng protocol ng CAN BUS ay kasama ang:

  • Multi-master na pagsasaayos: Maramihang mga node ay maaaring makipag -usap sa parehong bus nang walang isang sentral na magsusupil.
  • Prioritization ng mensahe: Ang mga mensahe ay nauna nang batay sa kanilang identifier, tinitiyak ang kritikal na data ay nailipat muna.
  • Error Detection: Ang mga mekanismo ng pagtuklas ng matatag na error, kabilang ang mga tseke ng CRC at mga pagkilala sa mga piraso, mapahusay ang pagiging maaasahan.
  • Mataas na bilis ng komunikasyon: Sinusuportahan ang mga rate ng data hanggang sa 1 Mbps, na angkop para sa mga application ng real-time.

Ang mga tampok na ito ay maaaring mainam ng bus para sa mga sitwasyon kung saan ang maraming mga aparato ay kailangang makipag -usap nang mahusay at maaasahan, tulad ng sa mga sistema ng pamamahala ng engine ng sasakyan, pang -industriya na automation, at mga robotics.

Ang pagpapakilala sa MCP2515 ay maaaring magsusupil

Ang MCP2515 ay isang stand-alone controller area network (CAN) controller na nakikipag-ugnay sa mga microcontroller sa pamamagitan ng serial peripheral interface (SPI). Hinahawak nito ang masalimuot na protocol, na nagpapahintulot sa mga developer na tumuon sa mas mataas na antas ng lohika ng application. Ang mga pangunahing tampok ng MCP2515 ay kasama ang:

  • Suporta para sa Standard at Extended ay maaaring mga frame.
  • Built-in na mga mekanismo ng paghawak at pag-filter ng mga mekanismo.
  • Kakayahan sa iba't ibang mga microcontroller, kabilang ang Arduino.
  • Mababang pagkonsumo ng kuryente, ginagawa itong angkop para sa mga naka -embed na system.

Sa pamamagitan ng pagsasama ng MCP2515 sa isang Arduino, maaari kang magdagdag ng mga kakayahan sa bus sa iyong mga proyekto, pagpapagana ng komunikasyon sa iba pang mga aparato na maaaring ma-enable o network.

Pag -set up ng MCP2515 kasama si Arduino

Upang makapagsimula, kakailanganin mo ang mga sumusunod na sangkap:

  • Arduino Board (hal., Arduino Uno)
  • Ang MCP2515 ay maaaring module (madalas na may isang TJA1050 ay maaaring transceiver)
  • Jumper wires
  • Breadboard (Opsyonal)

Narito ang isang hakbang-hakbang na gabay upang mai-set up ang MCP2515 kasama ang iyong Arduino:

1. Ang mga kable ng MCP2515 kay Arduino

Ikonekta ang module ng MCP2515 sa Arduino tulad ng sumusunod:

  • VCC sa 5v Sa Arduino
  • Gnd sa Gnd Sa Arduino
  • CS sa Pin 10 Sa Arduino
  • SCK sa Pin 13 Sa Arduino
  • Si (Mosi) to Pin 11 Sa Arduino
  • Kaya (Miso) to Pin 12 Sa Arduino
  • Int sa Pin 2 Sa Arduino

     Arduino          MCP2515
     -------          -------
     5V       ------>  VCC
     GND      ------>  GND
     Pin 10   ------>  CS
     Pin 13   ------>  SCK
     Pin 11   ------>  SI (MOSI)
     Pin 12   ------>  SO (MISO)
     Pin 2    ------>  INT

2. Pag -install ng mga kinakailangang aklatan

Upang makipag -usap sa MCP2515, kakailanganin mo ang mcp_can Library. I -install ito sa pamamagitan ng Arduino Library Manager:

  1. Buksan ang Arduino IDE.
  2. Mag -navigate sa Sketch> Isama ang Library> Pamahalaan ang mga aklatan ...
  3. Maghanap mcp_can at i -install ang mcp_can Library ni Cory J. Fowler.

3. Pag -upload ng halimbawa ng code

Narito ang isang pangunahing halimbawa upang maipadala at matanggap ang mga mensahe na gumagamit ng MCP2515 at Arduino:

Nagpapadala ng isang mensahe ng CAN


// Include the necessary libraries
#include 
#include "mcp_can.h"

// Define the CS pin
#define CAN0_CS 10

// Initialize the CAN controller
MCP_CAN CAN0(CAN0_CS);

void setup() {
    Serial.begin(115200);
    while (CAN0.begin(MCP_ANY, CAN_500KBPS, MCP_8MHZ) != CAN_OK) {
        Serial.println("CAN BUS Shield init fail");
        Serial.println(" Init CAN BUS Shield again");
        delay(100);
    }
    Serial.println("CAN BUS Shield init ok!");
    CAN0.setMode(MCP_NORMAL);
}

void loop() {
    byte data[] = {0x00, 0xFF, 0xAA, 0x55, 0x33, 0x66, 0x99, 0xCC};
    // Send data: CAN ID = 0x100, data length = 8
    if (CAN0.sendMsgBuf(0x100, 0, 8, data) == CAN_OK) {
        Serial.println("Message Sent Successfully!");
    } else {
        Serial.println("Error Sending Message...");
    }
    delay(1000);
}

Pagtanggap ng isang mensahe ng maaaring


// Include the necessary libraries
#include 
#include "mcp_can.h"

// Define the CS pin
#define CAN0_CS 10

// Initialize the CAN controller
MCP_CAN CAN0(CAN0_CS);

void setup() {
    Serial.begin(115200);
    while (CAN0.begin(MCP_ANY, CAN_500KBPS, MCP_8MHZ) != CAN_OK) {
        Serial.println("CAN BUS Shield init fail");
        Serial.println(" Init CAN BUS Shield again");
        delay(100);
    }
    Serial.println("CAN BUS Shield init ok!");
    CAN0.setMode(MCP_NORMAL);
}

void loop() {
    unsigned long canId;
    byte len = 0;
    byte buf[8];
    
    // Check if data has been received
    if (CAN0.checkReceive() == CAN_MSGAVAIL) {
        CAN0.readMsgBuf(&canId, &len, buf);
        Serial.print("CAN ID: 0x");
        Serial.println(canId, HEX);
        Serial.print("Data: ");
        for (int i = 0; i < len; i++) {
            Serial.print(buf[i], HEX);
            Serial.print(" ");
        }
        Serial.println();
    }
}

Sa pagpapadala ng sketch, ang arduino ay nagpapadala ng isang mensahe ng maaaring may id 0x100 bawat segundo. Ang pagtanggap ng sketch ay nakikinig para sa papasok na mga mensahe at mai -print ang ID at data sa serial monitor.

Ang mga aplikasyon ng CAN Bus kasama si Arduino

Ang pagsasama ay maaaring bus kasama ang Arduino ay nagbubukas ng maraming mga aplikasyon na lampas sa mga sistema ng automotiko. Ang ilang mga tanyag na kaso ng paggamit ay kinabibilangan ng:

  • Robotics: Paganahin ang komunikasyon sa pagitan ng maraming mga controller ng motor at sensor.
  • Pang -industriya Automation: Mapadali ang pagpapalitan ng data sa pagitan ng iba't ibang mga makinarya at mga yunit ng kontrol.
  • Home Automation: Ikonekta ang iba't ibang mga matalinong aparato sa loob ng isang pinag -isang network.
  • Mga sistema ng pagkuha ng data: Kolektahin at iproseso ang data mula sa maraming mga sensor nang mahusay.

Konklusyon

Ang protocol ng BUS, na may pagiging maaasahan at kahusayan nito, ay nagsisilbing isang gulugod para sa komunikasyon sa maraming mga naka -embed na sistema. Sa pamamagitan ng paggamit ng MCP2515 ay maaaring magsusupil sa isang Arduino, ang mga developer ay maaaring walang kahirap -hirap na pagsamahin ang mga kakayahan sa bus sa kanilang mga proyekto. Kung nagtatrabaho ka sa mga sistema ng automotiko, pang -industriya na automation, o kumplikadong mga robotics, pag -unawa at pag -agaw ay maaaring mapahusay ang bus ay maaaring mapahusay ang balangkas ng komunikasyon ng iyong system.

Gamit ang komprehensibong gabay at mga halimbawa na ibinigay, mahusay ka upang magsimula sa pagsasama ay maaaring bus sa iyong susunod na proyekto ng Arduino. Maligayang Coding!

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.