It is a NTSC standard video signal
BTW there are tests menus in Diagbox ("Tests Actionneurs") where you can force displaying the camera on the NAC
Thank you for this quick reply!The C code is not extremely difficult, share your conversion table, I will see what I can do
} else if (id == 0x128 && len == 8) {
canMsgSnd.data[0] = canMsgRcv.data[0];
canMsgSnd.data[1] = canMsgRcv.data[6];
canMsgSnd.data[2] = canMsgRcv.data[7];
tmpVal = (canMsgRcv.data[0] & 0xFF);
if (tmpVal == 96) { // Handbrake
canMsgSnd.data[3] = 0x02;
} else {
canMsgSnd.data[3] = 0x00;
}
canMsgSnd.data[4] = canMsgRcv.data[4];
canMsgSnd.data[5] = canMsgRcv.data[5];
canMsgSnd.data[6] = canMsgRcv.data[6];
canMsgSnd.data[7] = canMsgRcv.data[7];
canMsgSnd.can_id = 0x128;
canMsgSnd.can_dlc = 8;
CAN1.sendMessage( & canMsgSnd);
if (Send_CAN2010_ForgedMessages) { // Will generate some light issues on the instrument panel
CAN0.sendMessage( & canMsgSnd);
}
} else if (id == 0x3A7 && len == 8) {
} else if (id == 0x128 && len == 8) {
if (canMsgRcv.data[0] == 0x63 && canMsgRcv.data[1] == 0x01 && canMsgRcv.data[2] == 0x00 && canMsgRcv.data[3] == 00 && canMsgRcv.data[4] == 0x80 && canMsgRcv.data[5] == 0xD4 && canMsgRcv.data[6] == 0x00 && canMsgRcv.data[7] == 0x00) { // 1st position from table
canMsgSnd.data[0] = 0x01; canMsgSnd.data[1] = 0x00; canMsgSnd.data[2] = 0x00; canMsgSnd.data[3] = 0x02; canMsgSnd.data[4] = 0x40; canMsgSnd.data[5] = 0x51; canMsgSnd.data[6] = 0x54; canMsgSnd.data[7] = 0x00;
} else if (canMsgRcv.data[0] == 0x63 && canMsgRcv.data[1] == 0x11 && canMsgRcv.data[2] == 0x00 && canMsgRcv.data[3] == 00 && canMsgRcv.data[4] == 0xC0 && canMsgRcv.data[5] == 0xD4 && canMsgRcv.data[6] == 0x00 && canMsgRcv.data[7] == 0x00) { // 2nd position from table
canMsgSnd.data[0] = 0x01; canMsgSnd.data[1] = 0x00; canMsgSnd.data[2] = 0x00; canMsgSnd.data[3] = 0x02; canMsgSnd.data[4] = 0x40; canMsgSnd.data[5] = 0x51; canMsgSnd.data[6] = 0x54; canMsgSnd.data[7] = 0x00;
} else if (canMsgRcv.data[0] == 0x63 && canMsgRcv.data[1] == 0x11 && canMsgRcv.data[2] == 0x00 && canMsgRcv.data[3] == 00 && canMsgRcv.data[4] == 0x00 && canMsgRcv.data[5] == 0xD4 && canMsgRcv.data[6] == 0x00 && canMsgRcv.data[7] == 0x00) { // 3rd position from table
canMsgSnd.data[0] = 0x21; canMsgSnd.data[1] = 0x00; canMsgSnd.data[2] = 0x00; canMsgSnd.data[3] = 0x02; canMsgSnd.data[4] = 0x40; canMsgSnd.data[5] = 0x51; canMsgSnd.data[6] = 0x54; canMsgSnd.data[7] = 0x00;
} else if (canMsgRcv.data[0] == 0x63 && canMsgRcv.data[1] == 0x11 && canMsgRcv.data[2] == 0x00 && canMsgRcv.data[3] == 00 && canMsgRcv.data[4] == 0xC4 && canMsgRcv.data[5] == 0xD4 && canMsgRcv.data[6] == 0x00 && canMsgRcv.data[7] == 0x00) { // 4th position from table
canMsgSnd.data[0] = 0xC0; canMsgSnd.data[1] = 0x00; canMsgSnd.data[2] = 0x00; canMsgSnd.data[3] = 0x02; canMsgSnd.data[4] = 0x40; canMsgSnd.data[5] = 0x51; canMsgSnd.data[6] = 0x54; canMsgSnd.data[7] = 0x00;
} else if (canMsgRcv.data[0] == 0x63 && canMsgRcv.data[1] == 0x11 && canMsgRcv.data[2] == 0x00 && canMsgRcv.data[3] == 00 && canMsgRcv.data[4] == 0xC2 && canMsgRcv.data[5] == 0xD4 && canMsgRcv.data[6] == 0x00 && canMsgRcv.data[7] == 0x00) { // 5th position from table
canMsgSnd.data[0] = 0xC2; canMsgSnd.data[1] = 0x00; canMsgSnd.data[2] = 0x00; canMsgSnd.data[3] = 0x02; canMsgSnd.data[4] = 0x40; canMsgSnd.data[5] = 0x51; canMsgSnd.data[6] = 0x54; canMsgSnd.data[7] = 0x00;
} else if (canMsgRcv.data[0] == 0x63 && canMsgRcv.data[1] == 0x11 && canMsgRcv.data[2] == 0x00 && canMsgRcv.data[3] == 00 && canMsgRcv.data[4] == 0xE0 && canMsgRcv.data[5] == 0xD4 && canMsgRcv.data[6] == 0x00 && canMsgRcv.data[7] == 0x00) { // 6th position from table
canMsgSnd.data[0] = 0xC4; canMsgSnd.data[1] = 0x00; canMsgSnd.data[2] = 0x00; canMsgSnd.data[3] = 0x02; canMsgSnd.data[4] = 0x40; canMsgSnd.data[5] = 0x51; canMsgSnd.data[6] = 0x54; canMsgSnd.data[7] = 0x00;
} else if (canMsgRcv.data[0] == 0x63 && canMsgRcv.data[1] == 0x11 && canMsgRcv.data[2] == 0x00 && canMsgRcv.data[3] == 00 && canMsgRcv.data[4] == 0xD0 && canMsgRcv.data[5] == 0xD4 && canMsgRcv.data[6] == 0x00 && canMsgRcv.data[7] == 0x00) {// 7th position from table
canMsgSnd.data[0] = 0xD0; canMsgSnd.data[1] = 0x00; canMsgSnd.data[2] = 0x00; canMsgSnd.data[3] = 0x02; canMsgSnd.data[4] = 0x40; canMsgSnd.data[5] = 0x51; canMsgSnd.data[6] = 0x54; canMsgSnd.data[7] = 0x00;
} else if (canMsgRcv.data[0] == 0x63 && canMsgRcv.data[1] == 0x11 && canMsgRcv.data[2] == 0x00 && canMsgRcv.data[3] == 00 && canMsgRcv.data[4] == 0xD8 && canMsgRcv.data[5] == 0xD4 && canMsgRcv.data[6] == 0x00 && canMsgRcv.data[7] == 0x00) { // 8th position from table
canMsgSnd.data[0] = 0xD8; canMsgSnd.data[1] = 0x00; canMsgSnd.data[2] = 0x00; canMsgSnd.data[3] = 0x02; canMsgSnd.data[4] = 0x40; canMsgSnd.data[5] = 0x51; canMsgSnd.data[6] = 0x54; canMsgSnd.data[7] = 0x00;
} else {
canMsgSnd.data[0] = canMsgRcv.data[0];
canMsgSnd.data[1] = canMsgRcv.data[6];
canMsgSnd.data[2] = canMsgRcv.data[7];
tmpVal = (canMsgRcv.data[0] & 0xFF);
if (tmpVal == 96) { // Handbrake
canMsgSnd.data[3] = 0x02;
} else {
canMsgSnd.data[3] = 0x00;
}
canMsgSnd.data[4] = canMsgRcv.data[4];
canMsgSnd.data[5] = canMsgRcv.data[5];
canMsgSnd.data[6] = canMsgRcv.data[6];
canMsgSnd.data[7] = canMsgRcv.data[7];
}
canMsgSnd.can_id = 0x128;
canMsgSnd.can_dlc = 8;
CAN1.sendMessage( & canMsgSnd);
if (Send_CAN2010_ForgedMessages) { // Will generate some light issues on the instrument panel
CAN0.sendMessage( & canMsgSnd);
}
} else if (id == 0x3A7 && len == 8) {
} else if (id == 0x128 && len == 8) {
if (canMsgRcv.data[0] == 0x63 && canMsgRcv.data[1] == 0x01 && canMsgRcv.data[2] == 0x00 && canMsgRcv.data[3] == 00 && canMsgRcv.data[4] == 0x80 && canMsgRcv.data[5] == 0xD4 && canMsgRcv.data[6] == 0x00 && canMsgRcv.data[7] == 0x00) { // 1st position from table
} else if (id == 0x128 && len == 8) {
Serial.print("CAN0 0x128 INPUT DATA: ");
char tmp[3];
for (int i = 0; i < 8; i++) {
Serial.print(" ");
snprintf(tmp, 3, "%02X", canMsgRcv.data[i]);
Serial.print(tmp);
}
Serial.println();
if (canMsgRcv.data[0] == 0x63 && canMsgRcv.data[1] == 0x01 && canMsgRcv.data[2] == 0x00 && canMsgRcv.data[3] == 00 && canMsgRcv.data[4] == 0x80 && canMsgRcv.data[5] == 0xD4 && canMsgRcv.data[6] == 0x00 && canMsgRcv.data[7] == 0x00) { // 1st position from table
canMsgSnd.can_id = 0x128;
canMsgSnd.can_dlc = 8;
CAN1.sendMessage( & canMsgSnd);
if (Send_CAN2010_ForgedMessages) { // Will generate some light issues on the instrument panel
CAN0.sendMessage( & canMsgSnd);
}
} else if (id == 0x3A7 && len == 8) {
canMsgSnd.can_id = 0x128;
canMsgSnd.can_dlc = 8;
Serial.print("CAN1 0x128 OUTPUT DATA: ");
char tmp[3];
for (int i = 0; i < 8; i++) {
Serial.print(" ");
snprintf(tmp, 3, "%02X", canMsgSnd.data[i]);
Serial.print(tmp);
}
Serial.println();
CAN1.sendMessage( & canMsgSnd);
if (Send_CAN2010_ForgedMessages) { // Will generate some light issues on the instrument panel
CAN0.sendMessage( & canMsgSnd);
}
} else if (id == 0x3A7 && len == 8) {
bool SerialEnabled = false;
bool SerialEnabled = true;
CAN0.reset();
CAN0.setBitrate(CAN_SPEED, MCP_8MHZ);
while (CAN0.setNormalMode() != MCP2515::ERROR_OK) {
delay(100);
}
if (SerialEnabled) {
// CAN-BUS to CAN2010 device(s)
Serial.println("Initialization CAN1");
}
CAN1.reset();
CAN1.setBitrate(CAN_SPEED, MCP_8MHZ);
while (CAN1.setNormalMode() != MCP2515::ERROR_OK) {
delay(100);
}
Initialization CAN0
Initialization CAN1
Unable to sync with the RTC
Current Time: 14/10/2019 0:0
Initialization CAN0
Initialization CAN1
Unable to sync with the RTC
Current Time: 14/10/2019 0:0
FRAME:ID=246:LEN=8:8E:7F:00:00:DD:DD:82:20
FRAME:ID=296:LEN=8:63:11:00:00:C0:D4:00:00
FRAME:ID=54:LEN=8:0E:00:03:2F:31:00:89:AC
FRAME:ID=471:LEN=1:00
FRAME:ID=535:LEN=8:F2:40:00:00:02:FF:1B:01
FRAME:ID=246:LEN=8:8E:7F:00:00:DD:DD:82:20
FRAME:ID=296:LEN=8:63:11:00:00:C0:D4:00:00
FRAME:ID=54:LEN=8:0E:00:03:2F:31:00:89:AC
FRAME:ID=471:LEN=1:00
FRAME:ID=535:LEN=8:F2:40:00:00:02:FF:1B:01
FRAME:ID=796:LEN=5:00:00:00:00:FF
FRAME:ID=246:LEN=8:8E:7F:00:00:DD:DD:82:20
FRAME:ID=296:LEN=8:63:11:00:00:C0:D4:00:00
FRAME:ID=54:LEN=8:0E:00:03:2F:31:00:89:AC
FRAME:ID=471:LEN=1:00
FRAME:ID=535:LEN=8:F2:40:00:00:02:FF:1B:01
FRAME:ID=727:LEN=3:63:08:10
FRAME:ID=246:LEN=8:8E:7F:00:00:DD:DD:82:20
FRAME:ID=296:LEN=8:63:11:00:00:C0:D4:00:00
FRAME:ID=54:LEN=8:0E:00:03:2F:31:00:89:AC
FRAME:ID=471:LEN=1:00
FRAME:ID=535:LEN=8:F2:40:00:00:02:FF:1B:01
FRAME:ID=796:LEN=5:00:00:00:00:FF
FRAME:ID=246:LEN=8:8E:7F:00:00:DD:DD:82:20
FRAME:ID=296:LEN=8:63:11:00:00:C0:D4:00:00
FRAME:ID=54:LEN=8:0E:00:03:2F:31:00:89:AC
FRAME:ID=471:LEN=1:00
FRAME:ID=535:LEN=8:F2:40:00:00:02:FF:1B:01
FRAME:ID=246:LEN=8:8E:7F:00:00:DD:DD:82:20
FRAME:ID=296:LEN=8:63:11:00:00:C0:D4:00:00
FRAME:ID=54:LEN=8:0E:00:03:2F:31:00:89:AC
AND IT KEEPS REPEATING................................
bool debugCAN0 = false; // Read data sent by ECUs from the car to Entertainment CAN bus using https://github.com/alexandreblin/python-can-monitor
bool debugCAN1 = false; // Read data sent by the NAC / SMEG to Entertainment CAN bus using https://github.com/alexandreblin/python-can-monitor
if (debugCAN0) {
...
...
} else if (!debugCAN1) {
...here is part of the code corresponding to send messages (e.g. to 0x128)
...but it happens only, if debugCAN0 and debugCAN1 is false
Today I was once more by my Dealership and he coded my NAC with Peugeot 208 GTI VIN number. Still no luck
The coding was successful, but there's no camera view on the display. The camera view doesn't work at all also by NAC test - only black screen with yellow arrow as I remember.
My question is do I missing something? The camera in this way:
17: Signal Video +
16: Signal Vidéo -
I proofed camera with TV and it shows correctly.
UPDATE:
I proofed connections once more and camera was not correctly connected with NAC.
Now camera shows signal on the display, but only trough test with DiagBox.
Still no luck with reverse gear...
6542 WY (6542WY) x 2 - Clips (0.95€ TTC l'unité) - Référence TE: 144969-1
Here is the Matrix PINOUT.
3: CAN-BUS Comfort High
2: CAN-BUS Comfort Low
1: +12V from F14
5 & 4: Buttons on the console
6: GND
You just have to dissemble the connector and unplug CAN-BUS wires and send them as source to the Arduino first card (or isolate them if you took the input from the telematic unit)
Put the new ones connected from the matrix to the second card of the Arduino (where CAN-BUS messages are modified to appear as CAN2010), PIN reference:
Thanks for sharing this solution!
need help.
how to change L/100 to KM/L?
I'm installing MATT Colour.
thanks for replay!
i buy Phonocar 4/790 as for step 6 , what it will help me ?
[Arduino] <> [CAN-BUS Shield] <> [CAN-BUS Shield]
^ ^ ^
12V or 5V Two wires from Two wires to
doesn't matter car CAN-BUS (input) matrix CAN-BUS (converted messages)
Where i can found pictures or diagram of all connection of that special project i search on net but nothing.... there are CAN-BUS Shield as Master and Slave that connect between their Terminal - CAN_H and CAN_L - IS IT LIKE THIS?Code:[Arduino] <> [CAN-BUS Shield] <> [CAN-BUS Shield] ^ ^ ^ 12V or 5V Two wires from Two wires to doesn't matter car CAN-BUS (input) matrix CAN-BUS (converted messages)
You can't mix CAN-BUS wires, High and Low are going to a single ECU.