hmmmm, now I have another issue: CAN data output from MCP2515 on ESP8266 is different than on Arduino nano
I have hooked up a MCP2515 on my heat pump to monitor the status.
I found that the output is different on an ESP8266 (my preferred solution because of wifi capability) versus an Arduino nano.
On the ESP8266 the adresses above 1000 are missing?!
On the ESP8266 I have this sketch running:
#include <mcp_can.h>
#include <SPI.h>
long unsigned int rxId;
unsigned char len = 0;
unsigned char rxBuf[8];
char msgString[128]; // Array to store serial string
#define CAN0_INT 16 // Set INT to pin 2 (nodemcu = 16, nano = 2)
MCP_CAN CAN0(5); // Set CS to pin 10 (nodemcu = 5, nano = 10)
void setup()
{
Serial.begin(9600);
delay(200);
if (CAN0.begin(MCP_ANY, CAN_20KBPS, MCP_8MHZ) == CAN_OK)
Serial.println("MCP2515 Initialized Successfully!");
else
Serial.println("Error Initializing MCP2515...");
CAN0.setMode(MCP_NORMAL); // Set operation mode to normal so the MCP2515 sends acks to received data.
pinMode(CAN0_INT, INPUT); // Configuring pin for /INT input
Serial.println("MCP2515 Library Receive Example...");
}
void loop()
{
if (!digitalRead(CAN0_INT)) // If CAN0_INT pin is low, read receive buffer
{
CAN0.readMsgBuf(&rxId, &len, rxBuf); // Read data: len = data length, buf = data byte(s)
if ((rxId & 0x80000000) == 0x80000000) // Determine if ID is standard (11 bits) or extended (29 bits)
sprintf(msgString, "Extended ID: 0x%.8lX DLC: %1d Data:", (rxId & 0x1FFFFFFF), len);
else
sprintf(msgString, "Standard ID: 0x%.3lX DLC: %1d Data:", rxId, len);
Serial.print(msgString);
if ((rxId & 0x40000000) == 0x40000000) { // Determine if message is a remote request frame.
sprintf(msgString, " REMOTE REQUEST FRAME");
Serial.print(msgString);
} else {
for (byte i = 0; i < len; i++) {
sprintf(msgString, " 0x%.2X", rxBuf[i]);
Serial.print(msgString);
}
}
Serial.println();
}
}
and this is the output:
Entering Configuration Mode Successful!
Setting Baudrate Successful!
MCP2515 Initialized Successfully!
MCP2515 Library Receive Example...
Standard ID: 0x180 DLC: 7 Data: 0xD0 0x3C 0xFA 0x01 0x23 0x0C 0x00
Standard ID: 0x180 DLC: 7 Data: 0xD0 0x3C 0xFA 0x01 0x24 0x16 0x00
Standard ID: 0x180 DLC: 7 Data: 0xD0 0x3C 0xFA 0x01 0x25 0x0B 0x00
Standard ID: 0x180 DLC: 7 Data: 0xD0 0x3C 0xFA 0x01 0x26 0x33 0x00
Standard ID: 0x180 DLC: 7 Data: 0xD0 0x3C 0xFA 0x01 0x22 0x14 0x00
Standard ID: 0x180 DLC: 7 Data: 0xD0 0x3C 0xFA 0x00 0x01 0x00 0x00
Standard ID: 0x180 DLC: 7 Data: 0xD2 0x1F 0xFA 0x00 0x0C 0x00 0x5D
Standard ID: 0x301 DLC: 7 Data: 0xD2 0x1F 0xFA 0x00 0x11 0x00 0xCE
Standard ID: 0x180 DLC: 7 Data: 0xD2 0x1F 0xFA 0x00 0x0E 0x01 0xF8
Standard ID: 0x180 DLC: 7 Data: 0xD2 0x1E 0xFA 0x00 0x0C 0x00 0x5D
Standard ID: 0x301 DLC: 7 Data: 0xD2 0x1E 0xFA 0x00 0x0F 0x00 0xEB
Standard ID: 0x301 DLC: 7 Data: 0xD2 0x1E 0xFA 0x00 0x11 0x00 0xCE
Standard ID: 0x180 DLC: 7 Data: 0xD0 0x3C 0xFA 0x01 0x26 0x34 0x00
Standard ID: 0x180 DLC: 7 Data: 0xD2 0x1F 0xFA 0x00 0x0C 0x00 0x5D
Standard ID: 0x301 DLC: 7 Data: 0xD2 0x1F 0xFA 0x00 0x11 0x00 0xCE
Standard ID: 0x180 DLC: 7 Data: 0xD2 0x1F 0xFA 0x00 0x0E 0x01 0xF9
Standard ID: 0x180 DLC: 7 Data: 0xD2 0x1E 0xFA 0x00 0x0C 0x00 0x5D
Standard ID: 0x301 DLC: 7 Data: 0xD2 0x1E 0xFA 0x00 0x0F 0x00 0xEB
Standard ID: 0x301 DLC: 7 Data: 0xD2 0x1E 0xFA 0x00 0x11 0x00 0xCE
Standard ID: 0x180 DLC: 7 Data: 0xD2 0x1F 0xFA 0x00 0x0C 0x00 0x5E
Standard ID: 0x301 DLC: 7 Data: 0xD2 0x1F 0xFA 0x00 0x11 0x00 0xCE
Standard ID: 0x180 DLC: 7 Data: 0xD2 0x1F 0xFA 0x00 0x0E 0x01 0xF9
Standard ID: 0x180 DLC: 7 Data: 0xD2 0x1E 0xFA 0x00 0x0C 0x00 0x5E
Standard ID: 0x301 DLC: 7 Data: 0xD2 0x1E 0xFA 0x00 0x0F 0x00 0xEB
Standard ID: 0x301 DLC: 7 Data: 0xD2 0x1E 0xFA 0x00 0x11 0x00 0xCE
Standard ID: 0x180 DLC: 7 Data: 0xD2 0x1F 0xFA 0x00 0x0C 0x00 0x5D
Standard ID: 0x301 DLC: 7 Data: 0xD2 0x1F 0xFA 0x00 0x11 0x00 0xCE
Standard ID: 0x180 DLC: 7 Data: 0xD2 0x1F 0xFA 0x00 0x0E 0x01 0xF9
Standard ID: 0x180 DLC: 7 Data: 0xD0 0x3C 0xFA 0x00 0x01 0x00 0x00
Standard ID: 0x180 DLC: 7 Data: 0xD0 0x3C 0xFA 0x01 0x76 0x04 0x01
Standard ID: 0x180 DLC: 7 Data: 0xD0 0x3C 0xFA 0x01 0x12 0x0B 0x00
Standard ID: 0x180 DLC: 7 Data: 0xD0 0x3C 0xFA 0x01 0x22 0x14 0x00
Standard ID: 0x180 DLC: 7 Data: 0xD0 0x3C 0xFA 0x01 0x26 0x34 0x00
Standard ID: 0x180 DLC: 7 Data: 0xD0 0x3C 0xFA 0x01 0x21 0x01 0x00
Standard ID: 0x180 DLC: 7 Data: 0xD2 0x1F 0xFA 0x00 0x0C 0x00 0x5E
Standard ID: 0x301 DLC: 7 Data: 0xD2 0x1F 0xFA 0x00 0x11 0x00 0xCE
Standard ID: 0x180 DLC: 7 Data: 0xD2 0x1F 0xFA 0x00 0x0E 0x01 0xF9
Standard ID: 0x180 DLC: 7 Data: 0xD2 0x1F 0xFA 0x00 0x0C 0x00 0x5D
Standard ID: 0x301 DLC: 7 Data: 0xD2 0x1F 0xFA 0x00 0x11 0x00 0xCE
Standard ID: 0x180 DLC: 7 Data: 0xD2 0x1F 0xFA 0x00 0x0E 0x01 0xF8
Standard ID: 0x180 DLC: 7 Data: 0xD2 0x1E 0xFA 0x00 0x0C 0x00 0x5E
Standard ID: 0x301 DLC: 7 Data: 0xD2 0x1E 0xFA 0x00 0x0F 0x00 0xEB
Standard ID: 0x301 DLC: 7 Data: 0xD2 0x1E 0xFA 0x00 0x11 0x00 0xCE
Standard ID: 0x180 DLC: 7 Data: 0xD0 0x3C 0xFA 0x01 0x25 0x0B 0x00
Standard ID: 0x180 DLC: 7 Data: 0xD0 0x3C 0xFA 0x01 0x26 0x34 0x00
Standard ID: 0x180 DLC: 7 Data: 0xD0 0x3C 0xFA 0x00 0x01 0x00 0x00
on the Arduino nano I have this sketch running (the only difference are the pin assignments "#define CAN0_INT 2" and "MCP_CAN CAN0(10);"
#include <mcp_can.h>
#include <SPI.h>
long unsigned int rxId;
unsigned char len = 0;
unsigned char rxBuf[8];
char msgString[128]; // Array to store serial string
#define CAN0_INT 2 // Set INT to pin 2 (nodemcu = 16, nano = 2)
MCP_CAN CAN0(10); // Set CS to pin 10 (nodemcu = 5, nano = 10)
void setup()
{
Serial.begin(9600);
delay(200);
if (CAN0.begin(MCP_ANY, CAN_20KBPS, MCP_8MHZ) == CAN_OK)
Serial.println("MCP2515 Initialized Successfully!");
else
Serial.println("Error Initializing MCP2515...");
CAN0.setMode(MCP_NORMAL); // Set operation mode to normal so the MCP2515 sends acks to received data.
pinMode(CAN0_INT, INPUT); // Configuring pin for /INT input
Serial.println("MCP2515 Library Receive Example...");
}
void loop()
{
if (!digitalRead(CAN0_INT)) // If CAN0_INT pin is low, read receive buffer
{
CAN0.readMsgBuf(&rxId, &len, rxBuf); // Read data: len = data length, buf = data byte(s)
if ((rxId & 0x80000000) == 0x80000000) // Determine if ID is standard (11 bits) or extended (29 bits)
sprintf(msgString, "Extended ID: 0x%.8lX DLC: %1d Data:", (rxId & 0x1FFFFFFF), len);
else
sprintf(msgString, "Standard ID: 0x%.3lX DLC: %1d Data:", rxId, len);
Serial.print(msgString);
if ((rxId & 0x40000000) == 0x40000000) { // Determine if message is a remote request frame.
sprintf(msgString, " REMOTE REQUEST FRAME");
Serial.print(msgString);
} else {
for (byte i = 0; i < len; i++) {
sprintf(msgString, " 0x%.2X", rxBuf[i]);
Serial.print(msgString);
}
}
Serial.println();
}
}
here is the output:
Entering Configuration Mode Successful!
Setting Baudrate Successful!
MCP2515 Initialized Successfully!
MCP2515 Library Receive Example...
Standard ID: 0x69E DLC: 7 Data: 0x31 0x00 0xFA 0x00 0x0C 0x00 0xB0
Standard ID: 0x180 DLC: 7 Data: 0xD2 0x1E 0xFA 0x00 0x0C 0x00 0x5D
Standard ID: 0x69E DLC: 7 Data: 0x61 0x01 0xFA 0x00 0x0F 0x00 0xB0
Standard ID: 0x301 DLC: 7 Data: 0xD2 0x1E 0xFA 0x00 0x0F 0x00 0xEE
Standard ID: 0x69E DLC: 7 Data: 0x61 0x01 0xFA 0x00 0x11 0x00 0xB0
Standard ID: 0x301 DLC: 7 Data: 0xD2 0x1E 0xFA 0x00 0x11 0x00 0xCE
Standard ID: 0x180 DLC: 7 Data: 0xD0 0x3C 0xFA 0x01 0x26 0x02 0x00
Standard ID: 0x69F DLC: 7 Data: 0x31 0x00 0xFA 0x00 0x0C 0x00 0xB0
Standard ID: 0x180 DLC: 7 Data: 0xD2 0x1F 0xFA 0x00 0x0C 0x00 0x5D
Standard ID: 0x69F DLC: 7 Data: 0x61 0x01 0xFA 0x00 0x11 0x00 0xB0
Standard ID: 0x301 DLC: 7 Data: 0xD2 0x1F 0xFA 0x00 0x11 0x00 0xCE
Standard ID: 0x69F DLC: 7 Data: 0x31 0x00 0xFA 0x00 0x0E 0x00 0xB0
Standard ID: 0x180 DLC: 7 Data: 0xD2 0x1F 0xFA 0x00 0x0E 0x01 0xF8
Standard ID: 0x69E DLC: 7 Data: 0x31 0x00 0xFA 0x00 0x0C 0x00 0xB0
Standard ID: 0x180 DLC: 7 Data: 0xD2 0x1E 0xFA 0x00 0x0C 0x00 0x5D
Standard ID: 0x69E DLC: 7 Data: 0x61 0x01 0xFA 0x00 0x0F 0x00 0xB0
Standard ID: 0x301 DLC: 7 Data: 0xD2 0x1E 0xFA 0x00 0x0F 0x00 0xEE
Standard ID: 0x69E DLC: 7 Data: 0x61 0x01 0xFA 0x00 0x11 0x00 0xB0
Standard ID: 0x301 DLC: 7 Data: 0xD2 0x1E 0xFA 0x00 0x11 0x00 0xCE
Standard ID: 0x402 DLC: 7 Data: 0x60 0x01 0xFA 0x00 0x11 0x00 0xE0
Standard ID: 0x402 DLC: 7 Data: 0x60 0x01 0xFA 0x00 0x75 0xFD 0xA8
Standard ID: 0x69F DLC: 7 Data: 0x31 0x00 0xFA 0x00 0x0C 0x00 0xB0
Standard ID: 0x180 DLC: 7 Data: 0xD2 0x1F 0xFA 0x00 0x0C 0x00 0x5E
Standard ID: 0x69F DLC: 7 Data: 0x61 0x01 0xFA 0x00 0x11 0x00 0xB0
Standard ID: 0x301 DLC: 7 Data: 0xD2 0x1F 0xFA 0x00 0x11 0x00 0xCE
Standard ID: 0x69F DLC: 7 Data: 0x31 0x00 0xFA 0x00 0x0E 0x00 0xB0
Standard ID: 0x180 DLC: 7 Data: 0xD2 0x1F 0xFA 0x00 0x0E 0x01 0xF8
Standard ID: 0x69E DLC: 7 Data: 0x31 0x00 0xFA 0x00 0x0C 0x00 0xB0
Standard ID: 0x180 DLC: 7 Data: 0xD2 0x1E 0xFA 0x00 0x0C 0x00 0x5D
Standard ID: 0x69E DLC: 7 Data: 0x61 0x01 0xFA 0x00 0x0F 0x00 0xB0
Standard ID: 0x301 DLC: 7 Data: 0xD2 0x1E 0xFA 0x00 0x0F 0x00 0xEE
Standard ID: 0x69E DLC: 7 Data: 0x61 0x01 0xFA 0x00 0x11 0x00 0xB0
Standard ID: 0x301 DLC: 7 Data: 0xD2 0x1E 0xFA 0x00 0x11 0x00 0xCE
Standard ID: 0x69F DLC: 7 Data: 0x31 0x00 0xFA 0x00 0x0C 0x00 0xB0
Standard ID: 0x180 DLC: 7 Data: 0xD2 0x1F 0xFA 0x00 0x0C 0x00 0x5E
Standard ID: 0x69F DLC: 7 Data: 0x61 0x01 0xFA 0x00 0x11 0x00 0xB0
Standard ID: 0x301 DLC: 7 Data: 0xD2 0x1F 0xFA 0x00 0x11 0x00 0xCE
Standard ID: 0x69F DLC: 7 Data: 0x31 0x00 0xFA 0x00 0x0E 0x00 0xB0
Standard ID: 0x180 DLC: 7 Data: 0xD2 0x1F 0xFA 0x00 0x0E 0x01 0xF9
Standard ID: 0x69E DLC: 7 Data: 0x31 0x00 0xFA 0x00 0x0C 0x00 0xB0
Standard ID: 0x180 DLC: 7 Data: 0xD2 0x1E 0xFA 0x00 0x0C 0x00 0x5E
Standard ID: 0x69E DLC: 7 Data: 0x61 0x01 0xFA 0x00 0x0F 0x00 0xB0
Standard ID: 0x301 DLC: 7 Data: 0xD2 0x1E 0xFA 0x00 0x0F 0x00 0xF0
Standard ID: 0x69E DLC: 7 Data: 0x61 0x01 0xFA 0x00 0x11 0x00 0xB0
Standard ID: 0x301 DLC: 7 Data: 0xD2 0x1E 0xFA 0x00 0x11 0x00 0xCE
As you can see on the ESP8266 the Standard IDs 0x402, 0x69E and 0x69F are missing.
Any idea why and how to solve this issue?
Thank you and best regards,
Chris