SAE J1939 Programming with Arduino - ARD1939 - J1939 Protocol Stack for Arduino
This post is part of a series about SAE J1939 ECU Programming & Vehicle Bus Simulation with Arduino.
The most interesting project in this book is, of course, the fully functional SAE J1939 protocol stack for the Arduino, the ARD1939. ARD1939 supports the full protocol, SAE J1939/21 (Network Management, Address Claim Process) and SAE J1939/81 (Transport Protocol, the transport of messages of up to 1785 bytes, including BAM and RTS/CTS sessions).
Please refer to chapter The Two Elements of the SAE J1939 Protocol Stack for a technical description of SAE J1939/21 and SAE J1939/81.
Note: While a complete documentation of the SAE J1939 Standard is out of the scope of this book, I have addressed the mandatory basics in a previous chapter. For more detailed information, please refer also to A Comprehensible Guide to J1939 as listed in the appendix for recommended literature.
Let me re-iterate, I had contemplated releasing ARD1939 in form of the original source code but ultimately decided against it, mostly out of respect for those small businesses that make a living from selling SAE J1939 devices and software tools. Instead, I provide a pre-compiled code.
I believe that the average Arduino user, through using the pre-compiled ARD1939 code, will be quite able to write effective J1939 applications, regardless of whether or not he/she has access to the original source code. After all, there is no real need to modify a working code. It supports all SAE J1939 protocol features, and the focus should always be on the actual application.
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.