Site Information

 Loading... Please wait...

Blog

Developing SAE J1939 Applications with ARD1939 and Copperhill Technologies Hardware

Posted by Wilfried Voss on

ARD1939- A Portable SAE J1939 Protocol Stack for Arduino, ESP32, and Embedded SystemsOne of the challenges of developing SAE J1939 applications is finding a protocol stack that is both affordable and flexible enough for prototyping, education, and custom embedded projects.

To address this need, we developed ARD1939, a portable C++ SAE J1939 protocol stack that serves as the software foundation for many of our development projects and examples.

Originally created for the Arduino Uno, ARD1939 has evolved into a portable implementation that supports Arduino, ESP32, and other embedded platforms. The software provides the core functionality required for building real-world SAE J1939 applications, including Network Management, Address Claiming, Transport Protocol (BAM and RTS/CTS), Request Messages, and PGN transmission and reception.

Unlike many protocol implementations that focus solely on demonstrating a few messages, ARD1939 was designed as a complete software framework for embedded development.

The protocol stack is currently available as a precompiled library, allowing developers to begin building and testing applications immediately. With the release of the upcoming book, “J1939 Development for Embedded Systems,” the complete C++ source code will also be released under an open-source license.

At Copperhill Technologies, we use ARD1939 together with many of our CAN Bus and SAE J1939 development products, including Arduino, ESP32, and Teensy-based hardware platforms. This combination allows engineers to move quickly from evaluating the protocol to developing fully functional embedded applications.

For complete information about the ARD1939 protocol stack, including its architecture, programming interface, supported hardware, and ongoing documentation, visit:

https://ard1939.com

If you’re interested in learning the implementation details behind SAE J1939, be sure to read the complete article:

https://jcom1939.com/ard1939-a-portable-sae-j1939-protocol-stack-for-arduino-esp32-and-embedded-systems/

Questions, suggestions, or feedback? Join the growing J1939 engineering community at:

https://jcom1939.com/forum/

Whether you’re developing a prototype, building an ECU, or simply learning the SAE J1939 protocol, ARD1939 and the accompanying educational resources provide a practical starting point for your next embedded systems project.

Analog to NMEA 2000 Converter: Upgrade Legacy Boat Sensors to Digital NMEA 2000 Monitoring

Many boats still rely on traditional analog gauges and sensors for monitoring engine performance and tank levels. While these systems are reliable, they cannot share information with modern multifunction displays (MFDs), digital dashboards, chartplotters, or onboard monitoring systems. An Analog to NMEA 2000 Converter bridges that gap by translating analog sensor signals into standardized NMEA [...]

Read More »


Raspberry Pi CAN FD and 10BASE-T1L: Building Industrial IoT and Embedded Networking Solutions

The Raspberry Pi has become one of the world’s most popular embedded computing platforms. It is inexpensive, powerful, runs a full Linux operating system, and supports countless programming languages and development tools. Yet many engineers quickly discover a limitation when they move from software development into real-world industrial applications. The Raspberry Pi provides Ethernet, USB, Wi-Fi, Bluetooth, [...]

Read More »


Raspberry Pi CAN Bus and LIN Bus Interface: CAN FD Development Made Easy

The Raspberry Pi has evolved far beyond its educational roots. With modern multi-core processors, generous memory, Linux support, and an enormous software ecosystem, it has become one of the most capable embedded computing platforms available today. When combined with a CAN and LIN interface, the Raspberry Pi transforms into an excellent development platform for automotive, industrial [...]

Read More »


ESP32-S3 MicroPython Programming for CAN Bus and NMEA 2000

The embedded systems world has traditionally been dominated by C and C++, but over the past several years another language has been gaining remarkable momentum: Python. More specifically, MicroPython has become one of the most attractive development environments for engineers who want to prototype and deploy embedded applications quickly without sacrificing access to the underlying [...]

Read More »


MicroPython Meets CAN Bus: The Fastest Way to Build Industrial IoT and Embedded CAN Applications

If you’ve ever programmed a CAN Bus application in C or C++, you already know the learning curve. Before sending the first CAN message, you typically need to configure a compiler, install SDKs, understand build systems, and write dozens of lines of initialization code. But what if you could start communicating over a CAN network with [...]

Read More »


CANPico V2 with Raspberry Pi Pico WH: Build Connected CAN Bus Applications with MicroPython and Wi-Fi

Have you ever wanted to build a smart system that sends data to the cloud, responds to remote commands, or monitors equipment in real time? With the CANPico V2 featuring a pre-installed Raspberry Pi Pico WH, those ideas can become working prototypes in hours instead of weeks. Combining industrial-grade CAN Bus hardware, integrated Wi-Fi, and the [...]

Read More »


Teensy 4.1 Triple CAN Bus Board with Ethernet and LCD – The Ultimate Platform for High-Performance CAN Network Development

When developing modern embedded systems, one challenge appears repeatedly: How do you connect multiple CAN networks, process large amounts of real-time data, provide a local user interface, and communicate with Ethernet or cloud services—all without running out of processor performance? The answer is the Teensy 4.1 Triple CAN Bus Board with 240×240 IPS LCD and Ethernet [...]

Read More »


Building a Classical CAN to CAN FD Gateway with ESP32-S3: A Powerful Migration Platform for Next-Generation Networks

As CAN FD (Flexible Data-Rate) continues to gain adoption across automotive, industrial, agricultural, and heavy-duty vehicle applications, many developers face a common challenge: How do you connect legacy Classical CAN networks with newer CAN FD systems? One practical solution is a protocol gateway that can receive messages on one network, process or translate them, and transmit [...]

Read More »


Why Would You Need Two CAN Ports on a Raspberry Pi?

When developers first start working with CAN bus networks, a single CAN interface is usually sufficient. It allows them to monitor traffic, transmit messages, and develop applications for automotive, industrial, marine, or agricultural systems. However, as projects become more sophisticated, the limitations of a single CAN port quickly become apparent. This is where dual-channel CAN interfaces [...]

Read More »