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 DB9 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.
As a shield, this will not work directly on an Arduino Mega2560, Arduino Due, etc, because the SPI pins are moved on those boards. However, if you absolutely need the Mega, You would need to redefine the pins, and run a jumper from the shield to one of the supported pins, which you can find here https://www.arduino.cc/en/Reference/SoftwareSerial. After redefining the pins, you can always bend the pins if you soldered to the shield and reroute them similar to this tutorial => http://mcukits.com/2009/04/06/arduino-ethernet-shield-mega-hack/
Also, because our library references pins by their port name rather than by pin number or pin function, you will need to modify the library as well as re-routing pins.
CAN was mandatory after 2008 on all cars sold in the US and had been widely adopted in most places after 2006. You can verify this on the Data Link Connector, by verifying that pins 6 and 14 have connections. We have a basic tutorial on that here.
If you want to try using the CAN-BUS Shield for applications not related to your car, there's a guide here that may get you going in the right direction.
As a sanity check, this Instructable has some code that dumps whatever is on the CAN bus to a serial terminal. It's useful to see if the CAN Bus Shield is working.
This skill defines how difficult the soldering is on a particular product. It might be a couple simple solder joints, or require special reflow tools.
Skill Level: Rookie - The number of pins increases, and you will have to determine polarity of components and some of the components might be a bit trickier or close together. You might need solder wick or flux.
See all skill levels
If a board needs code or communicates somehow, you're going to need to know how to program or interface with it. The programming skill is all about communication and code.
Skill Level: Rookie - You will need a better fundamental understand of what code is, and how it works. You will be using beginner-level software and development tools like Arduino. You will be dealing directly with code, but numerous examples and libraries are available. Sensors or shields will communicate with serial or TTL.
See all skill levels
If it requires power, you need to know how much, what all the pins do, and how to hook it up. You may need to reference datasheets, schematics, and know the ins and outs of electronics.
Skill Level: Rookie - You may be required to know a bit more about the component, such as orientation, or how to hook it up, in addition to power requirements. You will need to understand polarized components.
See all skill levels
Based on 19 ratings:
2 of 2 found this helpful:
Documentation for this device seems to be lacking. I ended up purchasing a pican shield for the pi2.
2 of 2 found this helpful:
With the OBD2 accessory cable an an Uno, I was able to eavesdrop on my car's CAN-BUS.
2 of 2 found this helpful:
After fighting with the libraries for almost a week i finally got it right to retrieve some usable data from the car. I switched to another library to confirm the speed at which my car was sending data. i still couldn't see "human" readable data until i found a fork of the sparkfun library, after some modifications to the sketch i was able to use it. As for the shield itself, i would have preferred if it was shipped with headers. i only realized this after my delivery and needed to place a second order only for the headers.
4 of 4 found this helpful:
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.
7 of 7 found this helpful:
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.
1 of 1 found this helpful:
Solid board and works great so far. I didn't need the joystick, LCD and GPS so here's the pins in case anyone needs more pins to use (you can find these out in the ECU sample):
3, 6: LCD
4, 5: GPS
And pin 7 and 8 are two onboard (D7 and D8) LEDs which are handy.
6 of 7 found this helpful:
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.
I've had one of these for several months now, and I love using it to gather data from my car's OBD-II port. Learning which signals to look for and how to scale them appropriately took a little time, but that was part of the fun. The main concern I have regarding this board is the amount of heat that the Arduino's on-board 5V regulator has to dissipate because the incoming power is from the car's batter (generally >12V), even for low current draw applications, such as the Blink.ino program. It would be great if future versions of this board included a separate 9V linear voltage regulator to share some of the power dissipation.
I bought this to build a unit of an open-source Battery Management System diagnostic interface for a Smart car electric-drive unit. The DB9/OBDII connector cable (CAB-10087) that Sparkfun sells correctly plugs this shield into the CAN signal pins on the car's diagnostic connector, also allowing the 12V power from the car to power the shield and Arduino.
You can use the OBD2 cable to interface with the car ECU (brain of the car). Works nicely when an engine light is on...then you can fetch diagnostics.
I used the shield for an extended CAN (J1939) application. It worked well. I would say with any of these types of products the customers would benefit from more practical examples and watered down instructions. There is a large community of people out there who only dabble occasionally with these products or don't because of poor documentation and examples.
I have not yet test it, but I think the product is crazy ;) excellent.
I will test it next month or at the beginning next year.
Best regards Hakan orcan (Germany)
It seems standard libraries for the MCP2515 CAN transceiver work best with a 16MHz clock. Many CAN-BUS interfaces have an 8MHz crystal, which I have found difficult. This Sparkfun shield has the 16MHz crystal, as well as working libraries and examples. Paired with the Redboard this is the simplest set up I have found for reading non-OBD-II CAN-BUS systems.
Packs a lot of great stuff into a small design. While it's great to have all the features, I think most of it is overkill, like the GPS, Memory card, joystick and reset button and all the supporting components for these items. This board could probably be 1/8 of its current size and stack only the couple of pins it needs, leaving the arduino board free to be used for other purposes. While it is great that it can be stacked on top of the arduino or red board, it would also be nice if there was an enclosure for it. Other than that it is a great board with a lot of nice features.
Is there one of these commercially available? I can build one but am having trouble finding a pigtail for the automobile side. Thanks in advance for any help. mcb
BREAKING NEWS: Found them, they weren't in the recommended products list
With the interface chip in between the CAN bus adapter and the arduino, I'm not completely convinced that I'm not losing CAN packets at the .5 Mbit rate. The micro SD card slot doesn't latch most of the time and I end up having to make a dozen or more attempts to insert a card before it finally latches. The spring-loaded slot is not good and a compression slot would be much better.
Simple interface, got my project up and running in no time. At first I didn't think I would use the joystick, but I have implemented it to send test codes out, very convenient. I have not used the sd card slot yet. Future plans include getting the lcd attached if I can find the 3 pin quick connect plug.
My dream comes true with this shield. I've a project on my car, and this is the best solution to realize this dream, cheapy. I used uSD card on it, works perfectly. I have an Arduino Uno to do some tricks.
I only used the CAN interface to debug another project..