How is Simple Soft connected to the car? Multimedia CANBUS?
I am attaching a dirty schematic for my adaptor - I wasn't expecting to share it - it was just to design the PCB and it will be delivered in a few days. I used two ESP32 (big ones, as I had two spare just getting dust, it fine to use ESP32 mini). One ESP32 is for multimedia CAN for SWC, one ESP32 is for engine/body CAN, SWC is passing UART messages to main ESP32, and from this one it goes to the HU (that is to connect two UART lines to one UART input in the HU). There is also a header for a 1.8 inch TFT as my car is a diesel and I have a DPF so I'd like to know when it's regenerating, so I keep driving.
12V to power it comes from ACC line. ILLUMI input was meant to be for switching display to night mode, but at the end of the day I used CANBUS message for lights for this, so it can be used and programmed for any 12V trigger.
https://drive.google.com/file/d/1jZfsXzPao81jlkQmT2NBGCT_h3H_-lT7/view?usp=sharing
Once the board(s) arrive, I will test it and refine the code for ESP32 CAN and SWC and publish it.
Renault OBD pinout is here: https://pinoutguide.com/CarElectronics/renault_obd2_diag_pinout.shtml with multimedia canbus also indicated on pins 12/13.
You would need the following from Renault canbus:
0x60D - Status, Doors & Temperature
This is a multi-purpose message containing information about vehicle status, lights, doors, and ambient temperature. It expects a data length of at least 5 bytes.
Bytes 0-2: A 24-bit field holding various status flags.
Bit 11: High beams are on.
Bit 13: Left indicator is active.
Bit 14: Right indicator is active.
Bit 17: Headlights are on.
Bit 18: Parking lights are on.
Bit 19: Passenger door is open.
Bit 20: Driver's door is open.
Bit 21: Rear right door is open
Bit 22: Rear left door is open
Bit 23: Boot is open.
Byte 4: Contains the outside temperature. The value is calculated by subtracting 40 from the byte's value (
data[4] - 40.0f).
0x5FD - Odometer
This message provides the vehicle's total distance traveled. It expects a data length of at least 3 bytes.
Bytes 0-2: A 24-bit integer representing the odometer reading. The final value in kilometers is obtained by combining the bytes and dividing by 16 (
((data[0] << 16) | (data[1] << 8) | data[2]) / 16).
0x181 - Engine RPM
This message contains the current engine speed. It expects a data length of at least 2 bytes.
Bytes 0-1: A 16-bit integer representing the engine revolutions per minute. The value is formed by concatenating the two bytes (
(data[0] << 8) | data[1]).
0x0C2 - Steering Wheel Angle
This message relays the raw angle of the steering wheel. It expects at least 1 byte of data.
Byte 0: A raw, single-byte value for the steering wheel's position. This value is then mapped from its raw range to a final angle in degrees.
0x5C5 - Parking Brake Status
This message indicates whether the parking brake is engaged. It uses at least 1 byte of data.
Byte 0: A status byte where bit 2 indicates the brake status. The parking brake is considered
ON when this bit is 0.
0x354 - Speed & Brake Pedal
This message provides the vehicle's current speed, a trip distance, and the brake pedal status. It requires a data length of at least 5 bytes.
Bytes 0-1: A 16-bit value for vehicle speed. The final value is calculated by multiplying the raw integer by 0.01 (
((data[0] << 8) | data[1]) * 0.01f).
Bytes 2-3: A 16-bit value for a trip counter. The final distance is calculated by multiplying the raw integer by 0.1 (
((data[3] << 8) | data[2]) * 0.1f).
Byte 4: A status byte where bit 4 indicates if the brake pedal is being pressed ((data[4] & (1 << 4)) != 0).