Site Information

 Loading... Please wait...

SAE J1939 Programming with Arduino - ARD1939 Implementation

Posted by Wilfried Voss on

This post is part of a series about SAE J1939 ECU Programming & Vehicle Bus Simulation with Arduino.

SAE J1939 ECU Programming & Vehicle Bus Simulation with Arduino

I provide the ARD1939 (SAE J1939 Protocol Stack for Arduino) “as is,” i.e. I provide the entire project (Arduino Sketch). 

In order to copy and customize the project, use the “Save As” function in the Arduino’s IDE.

I had contemplated creating an Arduino library, but I deem the assembly process (connection your project to the library, integrating the MCP2515 functionality and CAN interface functions, etc.) as too cumbersome. 

The complete project I provide will not only save you time, but it is also a proven solution and will thus not result in endless error corrections.

Note: As a reminder, the Uno’s restricted memory resources allow only a maximum J1939 data length of 256, while the Mega version supports the full 1785 bytes per message frame. Otherwise, both versions are identical in their functionality.

A Comprehensible Guide to J1939

SAE J1939 has become the accepted industry standard and the vehicle network technology of choice for off-highway machines in applications such as construction, material handling, and forestry machines. J1939 is a higher-layer protocol based on Controller Area Network (CAN). It provides serial data communications between microprocessor systems (also called Electronic Control Units - ECU) in any kind of heavy duty vehicles. The messages exchanged between these units can be data such as vehicle road speed, torque control message from the transmission to the engine, oil temperature, and many more.

A Comprehensible Guide to J1939 is the first work on J1939 besides the SAE J1939 standards collection. It provides profound information on the J1939 message format and network management combined with a high level of readability.