In this illustration we will going to wire the MCP2515 CAN BUS Breakout Module, MCP2515 is a standalone controller area network or CAN manufactured by Microchip semiconductor, that implements the CAN specification version 2.0B it is capable of transmitting and receiving both standard and extended data remote frames. These chip has two acceptance mask and six acceptance filter that are used to filter out unwanted messages, and reducing the host Microcontroller overhead, The MCP2515 chip has interface with microcontroller via an industry standard SPI (Serial Peripheral Interface). Please see the datasheet of MCP2515 below for your reference.


Introduction to CAN (Controller Area Network) Bus

A CAN BUS (Controller Area Network BUS is a standard design to allow the MCU (Microcontroller and device to talk each other in application without a host computer. It is actually a message based protocol designed for multiplex electrical wiring within, machinery, automobile and health facilities.

The MCP2515 Chip is a controller develop simplify applications that requires interfacing with a Can Bus. See the system implementation diagram using the device.

Required Components

  • Arduino UNO, MEGA
  • MCP2515 CAN BUS Module Board
  • Jumper Wires / DuPont Wires


  • OBD / OBD II Connector
  • ECU (Engine Control Unit)

Wiring Diagram


Wiring to OBD Connector

Arduino Sketch


Download CAN BUS Code Library | Zip
Download MCP2515 CAN BUS Datasheet | Pdf
Download MCP2515 Circuit Schematics | Pdf



Wiring the MCP2515 Controller Area Network CAN BUS Diagnostics
Tagged on:

4 thoughts on “Wiring the MCP2515 Controller Area Network CAN BUS Diagnostics

  • at

    I have been setup this circuit to communicate automobile with arduino. But, I haven’t find writing place that send OBD command such as: ATZ,ATE.

    How can i use sendmsgbuf command to send ATZ or 010C command.
    CAN0.sendMsgBuf(0x00, 0, 8, stmp);

    Thank You

  • at

    you are offering a library that is not compatible with the crystal 8 MHZ! It is a 16 Mhz Version only and on the layout there is an 8 Mhz crystal…

  • at

    Arduni uno v3 error. cant compiling …
    Arduino: 1.8.2 (Windows 7), Board: “Arduino/Genuino Uno”

    C:\Users\iTF\AppData\Local\Temp\ccB7Aamk.ltrans0.ltrans.o: In function MCP_CAN::mcp2515_readRegisterS(unsigned char, unsigned char*, unsigned char) [clone .constprop.33]':

    C:\Users\iTF\Documents\Arduino\libraries\MCP_CAN_lib-master/mcp_can.cpp:64: undefined reference to CAN’

    C:\Users\iTF\Documents\Arduino\libraries\MCP_CAN_lib-master/mcp_can.cpp:72: undefined reference to CAN'

    C:\Users\iTF\AppData\Local\Temp\ccB7Aamk.ltrans0.ltrans.o: In function MCP_CAN::mcp2515_readRegister(unsigned char) [clone .constprop.32]’:

    C:\Users\iTF\Documents\Arduino\libraries\MCP_CAN_lib-master/mcp_can.cpp:48: undefined reference to CAN'

    C:\Users\iTF\Documents\Arduino\libraries\MCP_CAN_lib-master/mcp_can.cpp:48: undefined reference to CAN’

    C:\Users\iTF\AppData\Local\Temp\ccB7Aamk.ltrans0.ltrans.o: In function mcp2515_read_id':

    C:\Users\iTF\Documents\Arduino\libraries\MCP_CAN_lib-master/mcp_can.cpp:426: undefined reference to CAN’

    C:\Users\iTF\AppData\Local\Temp\ccB7Aamk.ltrans0.ltrans.o:C:\Users\iTF\Documents\Arduino\libraries\MCP_CAN_lib-master/mcp_can.cpp:427: more undefined references to `CAN’ follow

    collect2.exe: error: ld returned 1 exit status

    Multiple libraries were found for “mcp_can.h”
    Used: C:\Users\iTF\Documents\Arduino\libraries\MCP_CAN_lib-master
    Not used: C:\Users\iTF\Documents\Arduino\libraries\arduino-canbus-monitor-master
    Not used: C:\Users\iTF\Documents\Arduino\libraries\CAN_BUS_Shield-master
    exit status 1
    Error compiling for board Arduino/Genuino Uno.

    This report would have more information with
    “Show verbose output during compilation”
    option enabled in File -> Preferences.

  • at

    At a glance it looks like the Wiring diagram on this page uses CS for pin 9,and in the linked sketch, CS is 10 by default. Be advised.


Leave a Reply

Your email address will not be published. Required fields are marked *