🛠 CAN bus between two R4 Minimas (external transceiver required)

Arduino UNO R4 Minima · intermediaire · Schéma : IMG-uno-r4-minima-intermediaire-3-can-bus-deux-cartes.svg — deux UNO R4 Minima, chacune avec un transceiver CAN (SN65HVD230) relié à ses broches CAN, bus différentiel CANH/CANL terminé par 120 Ω aux deux extrémités.

Objetivo

Intercambiar mensajes entre dos UNO R4 Minimas a través de CAN. El RA4M1 integra el *controlador* CAN, pero el conector solo expone señales a nivel de controlador: debes añadir un transceptor externo (por ejemplo, un módulo SN65HVD230 o MCP2551) para gestionar el bus diferencial.

Cableado

Por nodo: transceptor a los pines CAN de la placa (consulta el manual de usuario para la asignación exacta del conector), CANH del transceptor a CANH y CANL a CANL entre nodos, GND común y terminación de 120 ohmios en cada extremo del bus.

Código (ambas placas, mismo código)

#include <CAN.h>

void setup {
  Serial.begin(115200);
  CAN.begin(500E3);            // 500 kbit/s, both nodes identical
}

void loop {
  int packet = CAN.parsePacket;
  if (packet) {
    Serial.printf("id=0x%lX len=%d\n",
      CAN.packetId, packet);
    while (CAN.available)
      Serial.write(CAN.read);
    Serial.println;
  }
  if (millis % 1000 < 20) {   // crude 1 Hz beacon
    CAN.beginPacket(0x123);
    CAN.write('R'); CAN.write('4');
    CAN.endPacket;
  }
}

Errores comunes

> NO VERIFICADO: la asignación exacta de los pines CAN en el conector de la R4 no se especifica en las páginas consultadas; consulta el manual de usuario de la placa.

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales