O MCP2515 é um módulo de barramento CAN (Rede de Área do Controlador) amplamente utilizada para comunicação automotiva e industrial. Ele permite que o Arduino interage com os sistemas baseados em CAN para enviar e receber dados com eficiência. Este tutorial o guiará através da configuração e usando o módulo MCP2515 com Arduino.
O que você precisará
- Módulo de barramento de lata mcp2515
- Board Arduino (por exemplo, Uno, Mega, Nano)
- Dispositivo compatível com BUS ou outro módulo MCP2515
- Fios de jumper
- Pão de pão (opcional)
- Um computador com o Arduino IDE instalado
Etapa 1: Compreendendo o módulo MCP2515
O módulo MCP2515 usa o controlador CAN MCP2515 e o TJA1050 pode transceptor. O módulo se comunica com o Arduino através da interface SPI.
MCP2515 PILOUT
Alfinete | Função |
---|---|
VCC | Fonte de alimentação (5V) |
Gnd | Chão |
Cs | CHIP SELECT |
ENTÃO | Saída de dados SPI |
SI | Entrada de dados SPI |
Sck | Relógio SPI |
Int | Saída de interrupção |
Etapa 2: Fiação do MCP2515 para Arduino
Abaixo está o guia de fiação para conectar o módulo MCP2515 a um Arduino Uno:
MCP2515 PIN | Pino Arduino |
---|---|
VCC | 5V |
Gnd | Gnd |
Cs | Pino 10 |
ENTÃO | Pino 12 |
SI | Pino 11 |
Sck | Pino 13 |
Int | Pino 2 |
Observação: Para outras placas do Arduino, verifique se os pinos do SPI correspondem à pinalização da sua placa específica.
Etapa 3: Instale a biblioteca necessária
O MCP_CAN A biblioteca simplifica a interação com o módulo MCP2515.
Etapas para instalar a biblioteca MCP_Can:
- Abra o Arduino IDE.
- Vá para Esboço > Inclua biblioteca > Gerenciar bibliotecas.
- Pesquise "MCP_CAN" no gerente da biblioteca.
- Clique Instalar.
Etapa 4: Faça o upload do código
Código do transmissor (enviando dados no barramento 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
}
Código do receptor (Lendo dados do barramento 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();
}
}
Etapa 5: teste a configuração
- Conecte o módulo MCP2515 ao seu Arduino, conforme descrito na Etapa 2.
- Carregue o código do transmissor para um Arduino e o código do receptor para outro Arduino.
- Conecte os pinos CAN_H e CAN_L de ambos os módulos MCP2515 para estabelecer o barramento CAN.
- Abra o monitor serial em ambos os arduinos e defina a taxa de transmissão para
115200
. - No receptor Arduino, você deve ver as mensagens enviadas pelo transmissor Arduino.
Solução de problemas
- Nenhum dado recebido: Verifique as conexões CAN_H e CAN_L entre os módulos.
- Falha na inicialização: Verifique se as conexões SPI e o CS PIN correspondem à sua configuração.
- Comunicação irregular: Verifique se os dois módulos usam a mesma taxa de transmissão (500 kbps neste exemplo).
Aplicações do módulo de barramento MCP2515 CAN
- Diagnóstico do veículo (OBD-II)
- Sistemas de automação industrial
- Comunicação de robótica
- Dispositivos IoT com redes de barramento CAN
Conclusão
Você configurou com sucesso o módulo de barramento MCP2515 CAN com Arduino para enviar e receber dados. Este módulo é incrivelmente versátil para aplicações que exigem comunicação confiável em um barramento CAN. Experimente diferentes IDs de mensagem e cargas de dados para explorar todo o seu potencial!