All Projects → Alfaa123 → Volvo-CAN-Gauge

Alfaa123 / Volvo-CAN-Gauge

Licence: other
Reverse engineering the Volvo VIDA protocol and CAN network to gather diagnostic information not available via OBD2 on Volvo cars.

Programming Languages

Roff
2310 projects
TeX
3793 projects
C++
36643 projects - #6 most used programming language

Projects that are alternatives of or similar to Volvo-CAN-Gauge

asysbus
Arduino System Bus
Stars: ✭ 23 (+53.33%)
Mutual labels:  can-bus
PSAVanCanBridge
VAN - CAN protocol bridge (V2C) for cars made by PSA Group (Peugeot, Citroen)
Stars: ✭ 67 (+346.67%)
Mutual labels:  can-bus
carhacking
car hacking tools
Stars: ✭ 40 (+166.67%)
Mutual labels:  can-bus
Volvo-melbus
Volvo MELBUS Bluetooth audio input and remote control with Arduino Nano
Stars: ✭ 51 (+240%)
Mutual labels:  volvo
Candb
Generate CAN dbc file with OEM defined CAN matrix (*.xls).
Stars: ✭ 36 (+140%)
Mutual labels:  can-bus
pyuavcan
Python implementation of the Cyphal protocol stack.
Stars: ✭ 91 (+506.67%)
Mutual labels:  can-bus
scd30
arduino esp8266 ESP8266 SCD30 SCD-30 ESP32
Stars: ✭ 38 (+153.33%)
Mutual labels:  due
bxcan
bxCAN peripheral driver for STM32 chips
Stars: ✭ 22 (+46.67%)
Mutual labels:  can-bus
public regulated data types
Regulated DSDL definitions for Cyphal (standard and third-party)
Stars: ✭ 62 (+313.33%)
Mutual labels:  can-bus
can2mqtt
Bidirectional CAN-Bus to MQTT-Bridge
Stars: ✭ 39 (+160%)
Mutual labels:  can-bus
J1939-Framework
Framework to work with J1939 Frames used in CAN bus in bus, car and trucks industries
Stars: ✭ 123 (+720%)
Mutual labels:  can-bus
specification
The Cyphal specification documents are maintained here.
Stars: ✭ 38 (+153.33%)
Mutual labels:  can-bus
cantools
CAN bus tools.
Stars: ✭ 1,266 (+8340%)
Mutual labels:  can-bus
strados
Transform OBD2 data from your car into human readable data
Stars: ✭ 27 (+80%)
Mutual labels:  can-bus
netcore-can-example
SocketCan example on dotnet-core
Stars: ✭ 21 (+40%)
Mutual labels:  can-bus
CanFestival
No description or website provided.
Stars: ✭ 42 (+180%)
Mutual labels:  can-bus
vscp
VSCP (Very Simple Control Protocol) IoT/m2m framework
Stars: ✭ 47 (+213.33%)
Mutual labels:  can-bus
CANcool
Open Source CAN bus Analyser and Simulation Software
Stars: ✭ 39 (+160%)
Mutual labels:  can-bus
MazdaCANbus
database of known Mazda CAN messages
Stars: ✭ 32 (+113.33%)
Mutual labels:  can-bus
usb-can
USB-CAN Analyzer Linux Support
Stars: ✭ 32 (+113.33%)
Mutual labels:  can-bus

Volvo-CAN-Gauge

Reverse engineering the Volvo VIDA protocol to gather diagnostic information not available via OBD2 on Volvo cars.

Old video of the project with the OLED screen before the Due port is here: https://www.youtube.com/watch?v=hdAKEG6ggRk

Hardware:

Libraries:

  • geneArduino: Used to send data to the 4D Systems display.
  • due_can: Used to easily access the built in CAN interfaces on the Arduino Due (https://github.com/collin80/due_can)

Basic Functional Description:

The Volvo VIDA protocol is a basic message/response protocol not very different from ISO 15765-4. However, unlike ISO 15765-4, VIDA can also write controller firmware, activate actuators and run diagnostic tests.

In this project, we are only concerned with recieving data that would be otherwise unavailable with ISO 15765-4. Boost pressure, for example, is not available via ISO 15765-4 on Volvo cars. (a partial list of discovered codes from the VIDA database files is in Codes.txt)

We also use data from some broadcasted CAN frames that are used elsewhere in the car (for dashboard brightness, ignition status and headlights). Ideally, we would capture ALL of our information from broadcast frames as that involves a lot less overhead and traffic on the bus. However, some of the information that we need never gets broadcast, so we sometimes have no choice.

The code uses a psudo multi-tasking approach where the message recieve loop is always running if one of the other loops isn't currently running. This allows us to update/check broadcast frames in the background for brightness changes, ignition status changes and button presses and update the global variables accordingly.

In the display loop, we can show boost pressure, coolant temperature and intake temperature.

We also react to the dashboard brightness broadcast frame so the display updates it's brightness along with the rest of the dashboard. If the headlights are on, display brightness is multiplied by 0.8.

For right now, the only button we track is the cruise control cancel button. Holding the button for more than 2 seconds changes the currently displayed page. Perhaps in the future, a menu system could be implemented.

In order for the gauge to feel more "analog" the needle and value of the gauge will not change between distant values instantaneously. There is a built in loop that will require the needle to go through all intermediate values if the variable changes by more than 1.

When the gauge switches pages, the needle will smoothly sweep to the next position instead of moving instantaneously. Again, this is for the "analog" feel.

Notes:

  • Compatibility with other vehicles is unknown at this point. Most likely, any other cars using the Volvo Bosch ME9 implementation will work with no modifications (although I have heard some reports that the broadcast IDs change from vehicle to vehicle, so that may need to be tweaked)
  • Volvo uses extended IDs for their CAN frames. I am not 100% sure why they do this yet.
  • Volvos of this vintage have 2 CAN networks, a High Speed bus at 500kbps and a Low Speed bus at 125kbps. The high speed bus is connected to the ECU, steering modules, braking and other modules. The low speed bus is connected to the radio, door modules, instrument cluster and other associated accessories. The CEM (Central Electronics Module) acts as a gateway between the high and low speed busses. This project connects to both the high and low speed busses.
  • Older vehicles have a diagnostic relay that needs to be activated via K-line in order to access the CAN buses via the OBD2 port. Because mine does not require this, I don't have much information about it.

Other Resources:

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].