CAN Protocol Implementation using Arduino

Published on . Written by

CAN Protocol implementation using Arduino
CAN (Controller Area Network) Bus allows for control and data acquisition depending on the application they can be installed in vehicles, farm equipment’s and even in industrial environments. They are used to form a network in which are data is linked to each other.

Read more..
Arduino readily has some CAN Modules which can be used for designing of the CAN bus network but before that, some information regarding CAN bus is necessary. CAN is a very flexible means of communication and has been adapted to meet many standards. The communication speed ranges generally from 50kbps to 1Mbps. Controller area network (CAN) provide high reliability and good real-time performance with very low cost. Due to this, CAN is widely used in a wide range of applications, such as in-vehicle communication, automated manufacturing and distributed process control environments. CAN bus is a serial data communication protocol invented by German BOSCH Corporation in 1983. CAN use a large amount of overhead, which combined with a 15-bit CRC makes CAN very secure and reliable. CAN is a LAN (Local Area Network) controller CAN bus can transfer the serial data one by one. All participants in the CAN bus subsystems are accessible via the control unit on the CAN bus interface for sending and receiving data. CAN bus is a multi-channel transmission system. When a unit fails, it does not affect others.


Skyfi Labs Projects
CAN is an International Standardization Organization(ISO) defined serial communications bus originally developed for the automotive industry to replace the complex wiring harness with a two-wire bus. The specification calls for high immunity to electrical interference and the ability to self-diagnose and repair data errors. These features have led to CAN’s popularity in a variety of industries including building automation, medical, and manufacturing.

Project Requirements:

    Before starting with the project, we should have a thorough knowledge of the concepts of CAN Design and CAN bus Protocols. The CAN Bus has two wires that is CAN high and CAN low. In application They are designed robust, the wires are normally shielded. The CAN respond and send messages is quite easy. The message generally contains a identifier and data. The identifier is known as CAN ID or PGN. The length of the identifier is either 11 or 29 bits to length. The data can be from 0 to 8bytes in length. Following are the components for the project:

  1. Arduino UNO R3:Used for processing all the data in the system to give the necessary output.
  2. Sparkfun CAN Bus Shield:This shield allows you to poll the ECU for information including coolant temperature, throttle position, vehicle speed, and engine rpms. You can also store this data or output it to a screen to make an in-dash project.
  3. Wire pair for OBD-II to DB9: the cable allows to access the pin on OBD-II on a vehicle connected to it.

Project Implementation:

  1. Connect the Arduino UNO R3 Board to CAN Bus Shield.
  2. Once assembled download the CAN BUS library in Arduino IDE.
  3. Initialize the CAN Bus Shield.
  4. Once initialized read CAN bus Messages.
  5. Filter the messages to get the important data.
  6. And display the data on screen using Write command.
  7. Once done connect to your car OBD-II and check that data based on the actions performed in vehicle.

Software requirements:

  1. Arduino IDE:software used for dumping firmware that was created for the Arduino Board to control the CAN Bus data.
Kit required to develop CAN Protocol Implementation using Arduino:
Technologies you will learn by working on CAN Protocol Implementation using Arduino:


Any Questions?


Subscribe for more project ideas