Παραγγελία έως τις 14:00 τις εργάσιμες = αποστολή την ίδια ημέρα 30 ημέρες δικαίωμα υπαναχώρησης Εγγύηση 1 έτους
← Πίσω στην επισκόπηση

Διάγραμμα σύνδεσης και παράδειγμα κώδικα

Έτσι συνδέεις το Μονάδα CAN-bus MCP2515 SPI 5V σε ένα Arduino UNO ή ESP32, με ένα παράδειγμα sketch που μπορείς να ανεβάσεις αμέσως.

Επικοινωνία διαύλου CAN με MCP2515

Συνδέει ένα module διαύλου CAN MCP2515 σε ένα Arduino Uno χρησιμοποιώντας hardware SPI. Το sketch αρχικοποιεί τον CAN controller στα 500 kbps, στέλνει ένα δοκιμαστικό μήνυμα CAN κάθε 2 seconds και εμφανίζει όλα τα ληφθέντα frames στο Serial Monitor.

Διάγραμμα σύνδεσης: Μονάδα CAN-bus MCP2515 SPI 5V σε ένα Arduino UNO
Διάγραμμα σύνδεσης · Κάνε κλικ για μεγέθυνση
Πίνακας σύνδεσης: Μονάδα CAN-bus MCP2515 SPI 5V σε ένα Arduino UNO
Πίνακας σύνδεσης · Κάνε κλικ για μεγέθυνση
CAN_Bus_Communication_with_MCP2515.ino · μεταγλωττισμένο και δοκιμασμένο
/*
 * ==================================================================
 *  Generated by Codey.online  —  https://www.codey.online
 * ==================================================================
 *  Project   : CAN Bus Communication with MCP2515
 *  Board     : Arduino UNO (arduino:avr:uno)
 *  Parts     : CAN-bus module MCP2515 SPI 5V
 *  Libraries : mcp_can 1.5.1
 *
 *  Codey Online is an AI-powered browser IDE for Arduino and ESP32.
 *  Describe your project and Codey writes the code, draws the wiring
 *  diagram and uploads it to your board, straight from the browser.
 *  This code is free to use, modify and share, without warranty.
 * ==================================================================
 */

#include <SPI.h>
#include <mcp_can.h>

const byte CAN_CS_PIN = 10;
const byte CAN_INT_PIN = 2;

MCP_CAN CAN(CAN_CS_PIN);

unsigned long lastSend = 0;

void setup() {
  Serial.begin(115200);
  pinMode(CAN_INT_PIN, INPUT);

  // Initialize MCP2515 with standard 8MHz crystal at 500 kbps
  if (CAN.begin(MCP_ANY, CAN_500KBPS, MCP_8MHZ) == CAN_OK) {
    Serial.println(F("MCP2515 initialized successfully!"));
  } else {
    Serial.println(F("MCP2515 initialization failed!"));
    while (1);
  }

  CAN.setMode(MCP_NORMAL);
  Serial.println(F("CAN controller ready in normal mode."));
}

void loop() {
  // Check for received CAN messages
  if (CAN.checkReceive() == CAN_MSGAVAIL) {
    unsigned long rxId;
    byte len = 0;
    byte rxBuf[8];

    CAN.readMsgBuf(&rxId, &len, rxBuf);

    Serial.print(F("RX -> ID: 0x"));
    Serial.print(rxId, HEX);
    Serial.print(F(" DLC: "));
    Serial.print(len);
    Serial.print(F(" Data: "));
    for (byte i = 0; i < len; i++) {
      if (rxBuf[i] < 0x10) Serial.print('0');
      Serial.print(rxBuf[i], HEX);
      Serial.print(' ');
    }
    Serial.println();
  }

  // Send a test packet every 2 seconds
  if (millis() - lastSend >= 2000) {
    lastSend = millis();
    byte txData[4] = {0xDE, 0xAD, 0xBE, 0xEF};
    byte sndStat = CAN.sendMsgBuf(0x100, 0, 4, txData);

    if (sndStat == CAN_OK) {
      Serial.println(F("TX -> Sent frame (ID: 0x100, Data: DE AD BE EF)"));
    } else {
      Serial.println(F("TX -> Error sending message"));
    }
  }
}

Απαραίτητες βιβλιοθήκες: mcp_can 1.5.1

Wiring diagram and example code generated by Codey.online — https://www.codey.online

Επικοινωνία ESP32 CAN Bus με MCP2515

Αυτό το κύκλωμα συνδέει ένα ESP32 με ένα module CAN-bus MCP2515 μέσω SPI, χρησιμοποιώντας έναν αμφίδρομο level shifter 4 καναλιών για να προστατεύσει τη λογική 3.3V του ESP32 από το module 5V. Το sketch αρχικοποιεί τον ελεγκτή CAN στα 500 kbps, στέλνει ένα δοκιμαστικό CAN data frame κάθε δύο δευτερόλεπτα και εμφανίζει όλα τα ληφθέντα μηνύματα του CAN bus στο Serial Monitor.

Διάγραμμα σύνδεσης: Μονάδα CAN-bus MCP2515 SPI 5V σε ένα ESP32 DevKit V1
Διάγραμμα σύνδεσης · Κάνε κλικ για μεγέθυνση
Πίνακας σύνδεσης: Μονάδα CAN-bus MCP2515 SPI 5V σε ένα ESP32 DevKit V1
Πίνακας σύνδεσης · Κάνε κλικ για μεγέθυνση
ESP32_CAN_Bus_Communication_with_MCP2515.ino · μεταγλωττισμένο και δοκιμασμένο
/*
 * ==================================================================
 *  Generated by Codey.online  —  https://www.codey.online
 * ==================================================================
 *  Project   : ESP32 CAN Bus Communication with MCP2515
 *  Board     : ESP32 DEVKIT V1 (esp32:esp32:esp32doit-devkit-v1)
 *  Parts     : CAN-bus module MCP2515 SPI 5V
 *  Libraries : mcp_can 1.5.1
 *
 *  Codey Online is an AI-powered browser IDE for Arduino and ESP32.
 *  Describe your project and Codey writes the code, draws the wiring
 *  diagram and uploads it to your board, straight from the browser.
 *  This code is free to use, modify and share, without warranty.
 * ==================================================================
 */

#include <SPI.h>
#include <mcp_can.h>

const int CAN_CS_PIN = 5;
MCP_CAN CAN0(CAN_CS_PIN);

void setup() {
  Serial.begin(115200);
  while (!Serial);

  // Initialize MCP2515 running at 8MHz clock and 500kbps CAN baud rate
  if (CAN0.begin(MCP_ANY, CAN_500KBPS, MCP_8MHZ) == CAN_OK) {
    Serial.println("MCP2515 Initialized Successfully!");
  } else {
    Serial.println("Error Initializing MCP2515...");
  }

  CAN0.setMode(MCP_NORMAL);
}

void loop() {
  // Prepare sample data payload (8 bytes)
  byte data[8] = {0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88};
  
  // Send CAN message with standard ID 0x100
  byte sndStat = CAN0.sendMsgBuf(0x100, 0, 8, data);
  if (sndStat == CAN_OK) {
    Serial.println("CAN Message Sent Successfully!");
  } else {
    Serial.println("Error Sending CAN Message...");
  }

  // Check for incoming CAN messages
  if (CAN0.checkReceive() == CAN_MSGAVAIL) {
    long unsigned int rxId;
    unsigned char len = 0;
    unsigned char rxBuf[8];
    
    CAN0.readMsgBuf(&rxId, &len, rxBuf);
    
    Serial.print("Received ID: 0x");
    Serial.print(rxId, HEX);
    Serial.print(" Data: ");
    for (byte i = 0; i < len; i++) {
      Serial.print("0x");
      if (rxBuf[i] < 0x10) Serial.print("0");
      Serial.print(rxBuf[i], HEX);
      Serial.print(" ");
    }
    Serial.println();
  }

  delay(2000);
}

Απαραίτητες βιβλιοθήκες: mcp_can 1.5.1

Wiring diagram and example code generated by Codey.online — https://www.codey.online

Πρόσφατα προβεβλημένα

74HC595 8-bit Shift register / Σειριακό καταχωρητή IC

74HC595 8-bit Shift register / Σειριακό καταχωρητή IC

€ 0,80
Μονάδα αισθητήρα δόνησης και κραδασμών

Μονάδα αισθητήρα δόνησης και κραδασμών

€ 4,40
USB Host Shield για Arduino Uno, Mega ή Due

USB Host Shield για Arduino Uno, Mega ή Due

€ 12,50
Breadboard 270 οπών υψηλής ποιότητας

Breadboard 270 οπών υψηλής ποιότητας

€ 2,20
Μονάδα ρελέ 16 καναλιών 12V με optocoupler

Μονάδα ρελέ 16 καναλιών 12V με optocoupler

€ 12,50
Πλακέτα πειραματισμού Prototyping 3x7cm πράσινη

Πλακέτα πειραματισμού Prototyping 3x7cm πράσινη

€ 0,90
ST-Link V2 για STM8 και STM32 συμβατό

ST-Link V2 για STM8 και STM32 συμβατό

€ 3,65
Προβολή
Μίνι Breadboard 170 οπών για πρωτοτυποποίηση Μπλε (connect)

Μίνι Breadboard 170 οπών για πρωτοτυποποίηση Μπλε (connect)

€ 0,95
10x αντίσταση 10K Ohm 1/4 Watt 5% (Pull-up Pull-down)

10x αντίσταση 10K Ohm 1/4 Watt 5% (Pull-up Pull-down)

€ 1,25
Οθόνη OLED 2.4 inch 128x64 Μπλε I2C SSD1309 3.3V

Οθόνη OLED 2.4 inch 128x64 Μπλε I2C SSD1309 3.3V

€ 17,70
Breadboard 840 οπών υψηλής ποιότητας

Breadboard 840 οπών υψηλής ποιότητας

€ 2,45
Αισθητήρας Ambient Light και Proximity APDS-9930

Αισθητήρας Ambient Light και Proximity APDS-9930

€ 2,30
CH340 TTL USB Serial Port Adapter 3.3v-5v

CH340 TTL USB Serial Port Adapter 3.3v-5v

€ 2,55
Υπέρυθρη μονάδα αποφυγής εμποδίων HW-201

Υπέρυθρη μονάδα αποφυγής εμποδίων HW-201

€ 1,25