SparkFun will be closing early at 3:30 Friday 5/27 and remain closed Monday for Memorial Day (5/30). Orders placed after 2pm MT on Friday (5/27) will process and ship out on Tuesday (5/31).

Creative Commons images are CC BY-NC-SA 3.0

Description: The CAN-BUS Shield provides your Arduino or Redboard with CAN-BUS capabilities and allows you to hack your vehicle. 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.

It uses the Microchip MCP2515 CAN controller with the MCP2551 CAN transceiver. CAN connection is via a standard 9-way sub-D for use with OBD-II cable. Ideal for automative CAN application. The shield also has a uSD card holder, serial LCD connector and connector for an EM506 GPS module. These features make this shield ideal for data logging application.

Note: A DS9 Cable is not included with this shield. Please be sure to check Recommended Products section below for a recommended cable to use with this board.

Note: This product is a collaboration with SK Pang Electronics. A portion of each sales goes back to them for product support and continued development.


  • CAN v2.0B up to 1 Mb/s
  • High speed SPI Interface (10 MHz)
  • Standard and extended data and remote frames
  • CAN connection via standard 9-way sub-D connector
  • Power can supply to Arduino by sub-D via resettable fuse and reverse polarity protection.
  • Socket for EM506 GPS module
  • Micro SD card holder
  • Connector for serial LCD
  • Reset button
  • Joystick control menu navigation control
  • Two LED indicator


Recommended Products

Customer Comments

  • I have connected this CAN-BUS Shield to OBD-II connector of a 1996 Nissan Maxima. When I power up the board(SparkFun_CAN_Demo) I get “CAN Init ok” followed by the selection menu, but it does not prints anything after entering anyone of the option. It prints the selected option but no data. Am I missing something?

    • Are you using our DB9 to OBD-II cable? If not, you may need to double check your pinout on your cable to ensure it’s connecting pins 6 and 14 from the data link connector on your car to the appropriate pins on the CAN-Bus Shield.

      • Yes I am using SparkFun DB9 to OBD-II connector.

        • Hmm. It sounds like you need a bit more in-depth debugging than we can do via comments. Please contact techsupport@sparkfun dot com with your set up, the code you’re using, and any errors you might be getting. They will be able to assist you more in depth, and if there is an issue with your board, get you a replacement.

          • Ok thanks a lot. I will contact tech support.

            • Hello Toni_K,

              I just tried the same setup in a different car(2010 Hundai Sonata) and it worked perfectly fine. The problem was with my old car.

              Thank you for all the support. I would definately like to buy you a beer to honor the beerware..!!

              • Glad you got it figured out! If you ever make it out to Boulder, I’ll certainly take you up on that. In the mean time, happy hacking!

  • How would I edit the CAN library to work with an AEM EMS-4?

    • AEM EMS-4

      I haven’t seen much on this, but from a quick Google search, it looks like this is an open-source protocol based on CAN. I found a spec sheet here that lists the message formats and protocols.

      To update the library, I’d recommend the following steps:

      No guarantees that will work though - you may need to dig deeper into the library commands to update specs for full functionality, but that should at least get you started.

  • Does this shield support K-Line?

    • K-Line, or pin 7, is broken out to the CAN-H header if you have the jumper configured properly. Please take a look at SJ4 in the schematic to trace this out. However, the example code is written to support CAN-H on that line. If you’d rather use a different protocol, you will need to find or write your own example code supporting this.

  • Guys, I need some serious help. I am using this shield to communication with my Honda 2006’s ECU. But whenever I connect the shield with the car and run the demo code it only gives one response “CAN Bus Demo” and nothing else. Any help please?

    • Please contact tech support. It sounds like there is an issue with your shield or circuit, as the demo code should at least print out “CAN Init Success” or “CAN Init Fail”. If you aren’t getting either of those, your shield and board are likely not communicating.

      • yes, this is the problem. The shield is not working, even the demo code doesn’t work. I’ll definitely contact the support team.

  • Will this work on any CAN-BUS? I need it for an industrial application, not automotive. Thanks

  • I am using the default sketch for the GPS_DEMO (running a 506 gps) and the following hookup Arduino Mega : SPI (50-53) <-> Shield : SPI (10-13) / Arduino Mega : GND, 5V, 3.3V, RESET, IOREF <-> Shield : GND, 5V, 3.3V, RESET, IOREF / Arduino Mega : Digital 4&5 <-> Shield : Digital 4&5 The GPS gets a fix, but it never outputs to the serial. Am I missing something?

    • Probably something to do with the software serial pins on the Arduino Mega if yo uare not bale to view data through the serial monitor. Check your pin definitions and the limitations of the Arduino Mega Pins if you haven’t already => https://www.arduino.cc/en/Reference/SoftwareSerial .

      Also, check to see if you have satellites in view. If you are in a building or in a noisy environment, you won’t receive a signal and not get a solid fix.

  • I am using MEGA R3 with this CAN-BUS Shield. It seems it is not able to initialize CAN.

    I can either “CAN-Bus Demo” or Below reply.

    CAN-Bus Demo Can’t init CAN Please choose a menu option. 1.Speed 2.RPM 3.Throttle 4.Coolant Temperature 5.O2 Voltage 6.MAF Sensor

    I did connect the SPI wires as suggest by Toni.

    • Double check that you’ve updated the pin definitions in the code to match the new wiring, especially the CS pin. If those haven’t been updated, your Arduino is trying to initialize the CAN-Bus using the wrong connections, and you won’t be able to initialize the IC.

  • I’m planning to set up CAN communication with the Arduino Due and need a CAN shield/breakout board. The operaing voltage of the Due is 3,3V. Is it possible to connect the shield to the Due?

    • It’s not recommended. The CAN-Bus shield mostly operates at 5V, but it also handles 12V coming in to the board when plugged in to a CAN port.

  • Is this board fully compatible with Arduino Mega 2560? Which pins it uses?

    • This uses the SPI pins from the Uno footprint by default, so it is not plug-in compatible with the Mega. You will need to run jumper wires from the shield’s pins to the Mega’s SPI pins.

      • Is there an image that shows where to hook up the jumper wires?

        • You can find them on a lot of folks' projects, but these are the basic pins you’ll need to identify on your board to connect.

          MEGA SPI: 50 (MISO), 51 (MOSI), 52 (SCK), 53 (SS). UNO SPI (this will also be the shield footprint): 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK).

  • Does it support J1939?

    • There are some example projects with the libraries updated to work with J1939, though our library is not currently set up that way. Check out one example here.

  • Could this board be used to emulate the vehicle side? Not the scanner?

    • You could send out raw CAN data simulating that coming from the vehicle from the CAN +/-, 5V/GND pins broken out on the board. However, you’d need to do a lot of code modification for that to properly simulate the vehicle functionality.

  • You say this is new. What is the difference versus the previous part DEV-10039? Thanks.

    • It has the Uno R3 compatible footprint, jumpers to configure the DB9 connector for different OBD-II cables, and general production improvements for manufacturing.

Customer Reviews

3.7 out of 5

Based on 3 ratings:

5 star
4 star
3 star
2 star
1 star

4 of 4 found this helpful:

Creat Shield for the price

Ordered one to build a display to show MPH, RPM, Engine temperature and Throttle. I made some modifications to Canbus Library to show imperial measurements instead metric ones. Added a 4 line I2C LCD display and it worked great. Board also supplies 12 V to the un regulated input of the UNO. Don’t forget to order the ODB to DB9 cable.

2 of 3 found this helpful:

Nice features, missing some basics

I like how many things are packed into it. Price is very fair. Really like the option to cut the board and make the DB9 connector use pins 2 and 7 like any professional CAN equipment uses. This option is why I bought the board. I really didn’t like that the Seeed CAN shield didn’t have this option.

Cons: Chip select pin can not be changed. The library doesn’t look like it has a simple option for this either. Switched to the coryjfowler library. I really wish you would have at least done what the Seeed CAN shield did and give me one other pin as a choice. Had to add 120ohms to make it work on a bench. The Seeeeeed shield gave me screw terminals to do this, but not this board. Also, wish that I didn’t have to modify the board to make it work with industry standard pins 2+7 on the DB9. Lastly, the ad doesn’t mention that the shield is completely bare. Please at least update the listing notes to suggest that you buy headers for it.

This board is probably better for the person that wants all the extra features, but if you just want a CAN shield and use CAN regularly, I wouldn’t buy it if you already have a Seeed shield. You’re better off hacking up the Seeed board to support pins 2 + 7 if you already own one.

Great learning project for CAN interface

I used it for interfacing with a 125k vehicle CAN bus. Soldering the headers were fairly easy, but I struggled with the 9-way OBD-II to CAN conversion. I’ll agree with another review when it come to making pins 2 and 7 the standard Lo and Hi. Let the few who need OBD-II struggle with the conversion.

Related Tutorials

CAN-Bus Shield Hookup Guide

October 8, 2015

A basic introduction to working with the CAN-Bus shield.

Getting Started with OBD-II

October 8, 2015

A general guide to the OBD-II protocols used for communication in automotive and industrial applications.