moin,
wer nen bisschen verrückt ist wie ich, wird früher oder später an eine sogenannte Tischstation nicht vorbei kommen...
Problem ist jedoch, einige Steuergeräte benötigen auf dem CAN-Bus, eine Botschaft das Kl. 15 aktiv ist...
Entweder baut man sich nun noch das ganze BCM samt Start/Stop schalter auf oder man nimmt ein Arduino.
Vielleicht tummelt hier der ein oder andere rum der "C" kann oder evtl. noch sagen kann wie man ggf. den Code etwas verkürzen könnte
man benötigt:
Arduino Uno
MCP2515_CAN
und paar kleine Verbinungskabel
ergänzend seit gesagt, dasder MCP2525 noch terminiert werden muss, also Jumper Brücke muss geschlossen werden.
Verkabelt wird der Arduino wie folgt: Arduino + MCP2515
Die Can High und Low Ausgänge vom MCP2515 kommen auf den Komfort Can High & Low am Gateway...
/*
* Terminal status CAN bus message generator
*
* Generates Klemmen_Status_01 messages for MQB platform
*
* Coded by Ronaldo Cordeiro - cordeiroronaldo@hotmail.com
*
* Uses MCP_CAN_lib-master - By Cory J. Fowler
* https://github.com/coryjfowler/MCP_CAN_lib
*/
#include <mcp_can.h>
#include <SPI.h>
#define KLEMMEN_STATUS_01_ID 0x3C0
unsigned char kStatusBuf[4] = {0x00,0x00,0x03,0x00};
unsigned char checkSum[16] = {0x74,0xC1,0x31,0x84,0xFE,0x4B,0xBB,0x0E,0x4F,0xFA,0x0A,0xBF,0xC5,0x70,0x80,0x35};
int i=0;
MCP_CAN CAN(10);
void setup()
{
Serial.begin(115200);
CAN.begin(MCP_ANY,CAN_500KBPS,MCP_8MHZ);
CAN.setMode(MCP_NORMAL);
}
void loop()
{
kStatusBuf[0]=checkSum[i];
kStatusBuf[1]=i;
CAN.sendMsgBuf(KLEMMEN_STATUS_01_ID, 0 , 4, kStatusBuf);
i++;
if (i>15) i=0;
delay(100);
}
/*********************************************************************************************************
END FILE
*********************************************************************************************************/
Alles anzeigen
Das ganze kann mit modifikationen so aussehen: Tacho Tisch station
wenn man nun auf dem Komfort Can eine Geschwindigkeit senden möchte:
/*
* Terminal status CAN bus message generator
*
* Generates Klemmen_Status_01 messages for MQB platform
*
* Coded by Ronaldo Cordeiro - cordeiroronaldo@hotmail.com
*
* Uses MCP_CAN_lib-master - By Cory J. Fowler
* https://github.com/coryjfowler/MCP_CAN_lib
*/
#include <mcp_can.h>
#include <SPI.h>
#define KLEMMEN_STATUS_01_ID 0x3C0
unsigned char kStatusBuf[4] = {0x00,0x00,0x03,0x00};
unsigned char checkSum[16] = {0x74,0xC1,0x31,0x84,0xFE,0x4B,0xBB,0x0E,0x4F,0xFA,0x0A,0xBF,0xC5,0x70,0x80,0x35};
int i=0;
#define ESP_21_ID 0xFD
unsigned char P_L_CC_CRC_LUT_APV[256] = { 0, 47, 94, 113, 188, 147, 226, 205, 87, 120, 9, 38, 235, 196, 181, 154, 174, 129, 240, 223, 18, 61, 76, 99, 249, 214, 167, 136, 69, 106,
27, 52, 115, 92, 45, 2, 207, 224, 145, 190, 36, 11, 122, 85, 152, 183, 198, 233, 221, 242, 131, 172, 97, 78, 63, 16, 138, 165, 212, 251, 54, 25, 104, 71, 230, 201, 184, 151, 90, 117,
4, 43, 177, 158, 239, 192, 13, 34, 83, 124, 72, 103, 22, 57, 244, 219, 170, 133, 31, 48, 65, 110, 163, 140, 253, 210, 149, 186, 203, 228, 41, 6, 119, 88, 194, 237, 156, 179, 126, 81,
32, 15, 59, 20, 101, 74, 135, 168, 217, 246, 108, 67, 50, 29, 208, 255, 142, 161, 227, 204, 189, 146, 95, 112, 1, 46, 180, 155, 234, 197, 8, 39, 86, 121, 77, 98, 19, 60, 241, 222,
175, 128, 26, 53, 68, 107, 166, 137, 248, 215, 144, 191, 206, 225, 44, 3, 114, 93, 199, 232, 153, 182, 123, 84, 37, 10, 62, 17, 96, 79, 130, 173, 220, 243, 105, 70, 55, 24, 213, 250,
139, 164, 5, 42, 91, 116, 185, 150, 231, 200, 82, 125, 12, 35, 238, 193, 176, 159, 171, 132, 245, 218, 23, 56, 73, 102, 252, 211, 162, 141, 64, 111, 30, 49, 118, 89, 40, 7, 202, 229,
148, 187, 33, 14, 127, 80, 157, 178, 195, 236, 216, 247, 134, 169, 100, 75, 58, 21, 143, 160, 209, 254, 51, 28, 109, 66 };
unsigned char esp21Buf[8] = {0x00,0xD0,0x1F,0x80,0xd8,0x0d,0x00,0x00};
unsigned char P_L_CC_KENNUNG_APV_ESP21[16] = {0xb4,0xef,0xf8,0x49,0x1e,0xe5,0xc2,0xc0,0x97,0x19,0x3c,0xc9,0xf1,0x98,0xd6,0x61};
unsigned char l=0, seq=0, crc;
unsigned long vSpeed;
MCP_CAN CAN(10);
void setup()
{
Serial.begin(115200);
CAN.begin(MCP_ANY,CAN_500KBPS,MCP_8MHZ);
CAN.setMode(MCP_NORMAL);
}
void loop()
{
esp21Buf[4]=vSpeed%256; esp21Buf[5]=vSpeed/256;
crc = (0xD0 | seq) ^ 0xFF;
for (l=2; l<=7; l++) {
crc = P_L_CC_CRC_LUT_APV[crc];
crc = esp21Buf[i]^crc;
crc = P_L_CC_CRC_LUT_APV[crc] ^ P_L_CC_KENNUNG_APV_ESP21[seq];
crc = P_L_CC_CRC_LUT_APV[crc];
crc = (~crc);
esp21Buf[0]=crc;
esp21Buf[1]=0xD0 | seq;
CAN.sendMsgBuf(ESP_21_ID, 0, 8, esp21Buf);
kStatusBuf[0]=checkSum[ i ];
kStatusBuf[1]=i;
CAN.sendMsgBuf(KLEMMEN_STATUS_01_ID, 0 , 4, kStatusBuf);
i++;
if (i>15) i=0;
delay(100);
seq++;
if (seq>15) seq=0;
}
/*********************************************************************************************************
END FILE
*********************************************************************************************************/
Alles anzeigen
Besten dank an Ronaldo.