While repairing my Scenic II dashboard back then, I didn't had a CAN bus emulator at hand, but this is necessary to power up the display when it's on the desk. While searching the forum, I found a post from https://www.digital-kaos.co.uk/forum...14-chipinvader who shared two CAN commands to turn the display on and off. Whereupon I posted a first version, but it could only turn on the Scenic Display. https://www.digital-kaos.co.uk/forum...=1#post3602052
Recently I found a new post (https://www.digital-kaos.co.uk/forum...=1#post3843736 again from Chipinvader - many thanks for that!) where he published a complete test sequence.
That was the base for the project presented here:
A lowcost DIY CAN emulator for the Scenic II dash.
Enhanced Version
inUse.jpginUse2.jpg
What you need:
- an Arduino (Uno) a cheap clone also works ;-)
- a MCP2515 module (e.g. this one https://www.amazon.com/-/de/dp/B08HM...336095&sr=8-11)
- The Arduino IDE https://www.arduino.cc/en/software to compile and upload the sketch to the arduino.
Hardware
hw1-11.jpg click the picture to zoom in and see wiring details.
On the MCP2515 board there is a jumper which is labeled J1. To function properly make sure it is closed so the CAN-Bus termination is enabled.
Wireing
PIN on Arduino PIN on MCP2515 CAN Bus Breakout Board D2 INT D10 CS D11 SI D12 SO D13 SCK 5V VCC GND GND
mcp2515-arduino.jpg
PIN (grey connector on dash)1 +12V 2 GND 29 CAN LOW 30 CAN HI
Software:
The arduino project is attached to this post and can be compiled and uploaded via the Arduino IDE.
The code which runs on the arduino is based on https://github.com/coryjfowler/MCP_CAN_lib
A copy of this library (and the full source code for the emulator) can be found within the provided zip file. Just put the can-library into the library folder of the Arduino IDE.
The Message-Sequence can be extended or modified by patching for the the following within the dash.ino file:
Code:... struct msg messages[] = { {0x354, 8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00}} //0 ,{0x35d, 8, { 0x10, 0x03, 0x20, 0x00, 0x00, 0x00, 0x50, 0x00}} //1 dash on ,{0x374, 3, { 0x28, 0x02, 0x3B}} //2 ,{0x743, 8, { 0x02, 0x10, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00}} //3 ,{0x743, 8, { 0x04, 0x30, 0x03, 0x20, 0x01, 0x00, 0x00, 0x00}} //4 full small vfd ,{0x743, 8, { 0x02, 0x10, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00}} //5 ,{0x743, 8, { 0x04, 0x30, 0x04, 0x20, 0x0a, 0x00, 0x00, 0x00}} //6 ,{0x743, 8, { 0x04, 0x30, 0x04, 0x20, 0x0b, 0x00, 0x00, 0x00}} //7 speed ,{0x743, 8, { 0x04, 0x30, 0x05, 0x20, 0x46, 0x00, 0x00, 0x00}} //8 ,{0x743, 8, { 0x04, 0x30, 0x05, 0x20, 0x44, 0x00, 0x00, 0x00}} //9 tacho full ,{0x743, 8, { 0x04, 0x30, 0x01, 0x20, 0x09, 0x00, 0x00, 0x00}} //10 tl ,{0x743, 8, { 0x04, 0x30, 0x01, 0x20, 0x0c, 0x00, 0x00, 0x00}} //11 tr ,{0x60d, 8, { 0x00, 0x10, 0x00, 0x00, 0x27, 0x73, 0x21, 0x71}} //12 buzzer }; ... for(int i=0; i<=12; i++){ DEBUG_PRINT(i); if (CAN_OK != CAN.sendMsgBuf(messages[i].id, 0, messages[i].dlc, messages[i].data)){ DEBUG_PRINT("error sending message"); } delay(3000); } ...
If you make your own enhancements, or you have additional CAN-Messages please post them here so everyone can benefit.
Cheers, Dirk
Bookmarks