Estoy realizando un proyecto que consiste en obtener la velocidad del vehículo desde el puerto OBD de un automóvil y almacenarlo en mi base de datos mediante nodemcu.
Estoy programando nodemcu utilizando el IDE de Arduino y utilizando esta biblioteca para trabajar con CAN.
Aquí hay un programa de ejemplo simple que estoy tratando de probar, pero obtengo salida de basura en el monitor serie:
#include <SPI.h>
#include "mcp_can.h"
INT32U canId = 0x000;
unsigned char buf[8];
char str[20];
MCP_CAN CAN0(10);
void setup()
{
Serial.begin(38400);
START_INIT:
if(CAN_OK == CAN0.begin(MCP_ANY, CAN_125KBPS, MCP_80MHZ))
{
Serial.println("Initialized successfully");
}
else
{
Serial.println("Initializing is failed");
Serial.println("Reloading...");
delay(100);
goto START_INIT;
}
}
void loop()
{
INT8U len=8;
if(CAN_MSGAVAIL == CAN0.checkReceive())
{
CAN0.readMsgBuf(&canId,&len, buf);
Serial.print("<");Serial.print(canId);Serial.print(",");
for(int i = 0; i<len; i++)
{
Serial.print(buf[i]);Serial.print(",");
}
Serial.print(">");
Serial.println();
}
}
Mis especulaciones:
- Una identificación CAN puede diferir de un auto a otro. Si es así, ¿cómo puedo saber la identificación de mi auto? (Es Maruti Suzuki Ertiga)
- La velocidad en baudios que estoy usando quizás esté mal
- La frecuencia o los kbps que estoy usando en la llamada de función CAN0.begin (MCP_ANY, CAN_125KBPS, MCP_80MHZ) pueden estar equivocados.
Si alguno de los puntos mencionados anteriormente es incorrecto, ¿cómo sé / cuáles son los valores correctos?