0% found this document useful (0 votes)
9 views

Car To Arduino Communication - CAN Bus Sniffing and Broadcasting With Arduino - 4 Steps - Instructables

Uploaded by

wilson alexander
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
9 views

Car To Arduino Communication - CAN Bus Sniffing and Broadcasting With Arduino - 4 Steps - Instructables

Uploaded by

wilson alexander
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 36

Car to Arduino Communication: CAN Bus Sniffing and

Broadcasting With Arduino


By stvmac11 in CircuitsArduino

458,180

340
Open Menu

97 circuits
Save PDF workshop
Favorite
craft
cooking
Introduction:
living
Car to Arduino Communication: CAN Bus
Sniffing and Broadcasting With Arduino
outside
Log InSignup

Search

By stvmac11 Follow More


Geek at large. More »

From Wikipedia, the Controller Area Network (CAN) bus is a "vehicle bus standard designed
to allow microcontrollers and devices to communicate with each other within a vehicle
without a host computer." These devices can also be referred to as electronic control units
(ECUs). Essentially the CAN bus is a bunch of linked ECUs within the vehicle that communicate
with each based on a broadcast. Every ECU intercepts every broadcast, but individually decide
whether or not to react to it.

Here's an example:

Let's imagine there's one ECU that controls the brake lights, one ECU that controls the car
horn, and one ECU that controls the braking system. Whenever you blow the horn, the horn
ECU sends a broadcast message out on the CAN bus network to every ECU it is connected to,
including the brake light ECU and the braking system ECU. The brake light ECU intercepts that
broadcast message, but chooses to ignore it because it has no relevance. The brake light ECU is
really only waiting on the message from the brake system ECU. Also, the horn ECU doesn't
react to the braking system ECU.

This broadcast system is broken down into different components; the two most important are
message ID and message data.

For now, think of the message ID as an ECU address. The message data is the content. It is
typically larger than the ID at around 8 bytes long.

Here's an example:
message ID: 620
data: 10 80 FF FF 80 20 00 80

The ECUs communicate with each other over a twisted wire pair holding CAN-high (CAN+)
and CAN-low (CAN-). CAN-high and CAN-low are accessible through the OBD-II port under the
steering wheel. This is how we'll get in!

Pro-tip: Use a wire tracer/tone generator to backtrace to other CAN Bus access points within
your car.

Volkswagon has a good guide to how the CAN Bus network works:
http://www.volkspage.net/technik/ssp/ssp/SSP_238.pdf

Step 1: Components and Assembly

Following

Components:

1- Arduino UNO R3

2- Sparkfun (or other) CAN Bus Shield: https://www.sparkfun.com/products/10039

Note: Also available at SK Pang: http://skpang.co.uk/catalog/arduino-canbus-shield-with-usd-


card-holder-p-706.html (SK Pang also supplies the needed CAN Bus library).

Note2: At the time of this writing, there were only 6 in stock at Sparkfun.

Note3: Sparkfun's CAN Bus shield also has a joystick (up, down, left, right, center), a micro SD
slot, and support for GPS and LCD modules.
Note4: If you're feeling up to it, you can order the parts from Digikey and make your own
using Sparkfun's provided EAGLE CAD drawing.

3- Wire pair or Sparkfun's OBD-II to DB9 cable:https://www.sparkfun.com/products/10087

Note: I found some old speaker wire that worked great.

4- breakable header pins - the CAN Bus shield doesn't include them:
https://www.sparkfun.com/products/116

Assembly:

1- Break headers into 2x8 pin, 2x6 pin, and (optional - 1x4 pin sections)

2- Solder the headers to the CAN Bus shield.

Step 2: Familiarizing Yourself With the CAN Bus Library


Once assembled, be sure to download the CAN Bus Library for use with your Arduino IDE.

Library and Example files are located here:

https://github.com/sparkfun/SparkFun_CAN-Bus_Ardui...

Download link for Library and Examples:

https://github.com/sparkfun/SparkFun_CAN-Bus_Ardu...

Library in the src/ folder


Sparkfun (and my) examples are in the examples/ folder

CAN Bus Shield Initialization:

#include <Canbus.h> // don't forget to include these


#include <defaults.h>
#include <global.h>
#include <mcp2515.h>
Projects
#include <mcp2515_defs.h>
back
void setup()
All Projects
{
Circuits
Serial.begin(9600);
back CAN controller at the specified speed
//Initialise MCP2515
if(Canbus.init(CANSPEED_500))
All
Serial.println("CAN Init ok");
else
Apple
Arduino
Serial.println("Can't Init CAN");
Art
delay(1000); Assistive Tech
}
Audio
Cameras
Shield initialization will be required for all tasks. Here, we define our CAN bitrate and import
Clocks
our library. Every vehicle might use different bitrate speeds. For our example, we use 500
kbps. Computers
Electronics
Available options Gadgets
are:
Lasers
CANSPEED_125 //CANLEDsspeed at 125 kbps
CANSPEED_250 //CANLinuxspeed at 250 kbps
Microcontrollers
CANSPEED_500 //CAN speed at 500 kbps
Microsoft
If you're unsureMobile
of your vehicle's CAN bitrate, do some Googling...
Raspberry Pi
Remote Control
Reuse
Robots
Read CAN Bus Messages:
Sensors
We are reading Software
every message here. It can be a bit overwhelming as you see the traffic flow
through. Soldering
Speakers
ALL MessagesTools
USB
void loop()
{ Wearables
Workshop
tCAN message; Websites
back
Wireless
All
if (mcp2515_check_message())
{ 3D Design
3D Printing
if (mcp2515_get_message(&message))
{ Cars
Serial.print("ID: ");
CNC
Serial.print(message.id,HEX);
Electric Vehicles ");
Serial.print(",
Energy
Serial.print("Data: ");
for(int
Furniturei=0;i<message.header.length;i++)
{
Home Improvement
Serial.print(message.data[i],HEX);
Home Theater
Serial.print(" ");
Hydroponics
}
Serial.println("");
Knives
}}
} Laser Cutting
Lighting
Filtering will cutMetalworking
out a huge chunk of noise. (You'll see what I mean when you begin to sniff
unfiltered.) Molds & Casting
Motorcycles
Filter Messages
Organizing
Pallets
void loop()
{
Repair
tCAN message; Science
Shelves
if (mcp2515_check_message())
Solar
{
Tools
if (mcp2515_get_message(&message))
{ Woodworking
Workbenches
if(message.id == 0x631) //filtering based on CAN bus message ID.
{
Serial.print("ID: ");
Craft Serial.print(message.id,HEX);
Serial.print(", ");
back
Serial.print("Data: ");
All
for(int i=0;i<message.header.length;i++)
{
Art
Serial.print(message.data[i],HEX);
Serial.print("
Books & Journals ");
}
Cardboard
Serial.println("");
Cards
}}}
Clay
} Costumes & Cosplay
Digital Graphics
message.header.length
Duct Tapeis the size of the CAN message.
Embroidery
The above was filtered by message ID. We can also filter based on message data.
Fashion
Felt and message.data[3]==0x04 and message.data[4]==0x0F)
if(message.id==0x631
Fiber Arts
Notes: Gift Wrapping
Jewelry
1- Messages canKnitting
be longer& than 3 digits.
Crochet
Leather
2- We are formatting
Masonincoming
Jars message IDs and message data as HEX.
No-Sew
Paper
Write CAN BusParties & Weddings
Messages:
Photography
Printmaking
In order to write a CAN Bus message, we need to first assemble the message components:
Reuse
message ID, message size, and message data. The message is broken down by message.id,
Sewing
message.header.rtr, message.header.length, and message.data[].
Soapmaking
void loop() Wallets
{ Cooking
tCAN message;
back
All = 0x631; //formatted in HEX
message.id
Bacon
message.header.rtr = 0;
message.header.length
BBQ & Grilling = 8; //formatted in DEC
message.data[0] = 0x40;
Beverages
message.data[1] = 0x05;
Bread
message.data[2] = 0x30;
Breakfast= 0xFF; //formatted in HEX
message.data[3]
message.data[4]
Cake = 0x00;
message.data[5] = 0x40;
Candy = 0x00;
message.data[6]
Canning &= Preserving
message.data[7] 0x00;
Cocktails & Mocktails
mcp2515_bit_modify(CANCTRL,
Coffee (1<<REQOP2)|(1<<REQOP1)|(1<<REQOP0), 0);
mcp2515_send_message(&message);
Cookies
delay(1000); Cupcakes
} Dessert
Homebrew
The message IDMain
and data are written in HEX (0xFF, for example), which is the same format we
Course
read with. Pasta
Pie
mcp2515_send_message(&message); sends the message.
Pizza
Salad
Step 3: Connect Sandwiches and Read / Write
Snacks & Appetizers
Soups & Stews
Vegetarian & Vegan
Living
back
All
Beauty
Christmas
Cleaning
Decorating
Education
Gardening
The attached file, CAN_read_sample, is for simply reading all messages. I commented out
Halloween
filtering, so you Health
should be able to modify it easily to include filtering of message ID and data.
Hiding Places
I also attached aHolidays
file, CAN_write_sample, for writing a message.
Homesteading
You have two options
Kids for connecting the Arduino to vehicle's CAN-high and CAN-low lines:
Kitchen
1- Hack up some speaker wire (or any wire pair) and connect the CAN-H and CAN-L
LEGO & K'NEX
through-holes on the shield to the OBD-II port.
Life Hacks
Music CAN-high (OBD-II)
CAN-H (shield) <----->
Office CAN-low
CAN-L (shield) <-----> Supply Hacks
(OBD-II)
Organizing
2- Buy Sparkfun's PestOBD-II
Controlto DB9 Cable:https://www.sparkfun.com/products/10087. This also
Pets
powers the Arduino through the car's 12v line. I haven't used it, but let me know how it works
out... YMMV Pranks, Tricks, & Humor
Relationships
Connect the Arduino
Toys & toGames
your car and computer, load the code, open the serial monitor, and
watch the magic. Travel
Video Games
Attachments
Outside
back
All
CAN_read_sample.ino
Download Backyard
Beach
Bikes
CAN_write_sample.ino
Birding
Download Boats
Camping
Climbing
Step 4: What Fire
Next?
Fishing
As you begin to read CAN bus messages, start manipulating your car.
Hunting
Unlock andKites
lock the vehicle
Knots
Pop the trunk
Roll up andLaunchers
down windows
Paracord
Sounding the alarm
Blow your Rockets
horn
Siege Engines
Turn on and
Skateboarding
off your flashers
Turn on and
Snow
off your signal lights
Turn of and
Sports
off your lights and high beams
Etc. Survival
Water
Remember that filtering is your friend!

See if you can find messages related to the above. Once you do, write the same messages back
out through your Arduino using Step 2. See if you can unlock or lock your vehicle, pop the
trunk, or blow your horn!
Teachers
I hope to share my findings in the future!
back
All
Thanks for reading!
ELA
Math
Micro:bit
2 People Made This Project!
Science
Social Studies
Engineering
MakeyMakey
Coding
Electronics
Robotics
Arduino
CNC
Laser Cutting
3D Printing
3D Design
FermentedOrder
Art
made it! Music renatoaloi made it!
Theatre
Wood Shop
Metal Shop
Resources Did you make this project? Share it with us!
Grades K-2
Grades 3-5
Grades 6-8 I Made It
Grades 9-12
University+

Recommendations

MechaMaven: the Educational Robot Explorer by earldanielph

AI Lamp - How to Use AI in Arduino! by mondal3011

AI-Designed Night Lamp by Aarav G

This Solar-Powered Bottle Cleans Water! by Aarav G


Puzzles and Games Contest

Pets and Animals Contest

Paper and Cardboard Contest

Comment I Made It

We have a be nice policy. Please be positive and constructive.

97 Comments

PavlosF1 3 years ago

It is CRITICAL to add a CAN termination resistor of 120 Ohm that connects the CAN H, CAN
L at the edge.

Contests
Teachers
Reply

2 replies

lyndav001 3 years ago

Hi, I hope you are all well.


Has anyone managed to work out how to write data to the CAN bus? I have the Sparkfun
shield connected to an Uno and have connected to the OBD2 port on my car via the DB9
cable, and I can read messages but writing messages doesn't work. Any assistance would
be greatly appreciated.

Reply

1 reply

ashvin642000 3 years ago

How can I read and send extended can frames. I have been trying to send message id -
18FEDF00, which gets converted to 700 when it is read. Can someone help me with respect
to what changes should be made to the code above.

Reply

1 reply

kurban.58 3 years ago

Hello friends . Has anyone read the Renault Scenic 2? Can he send me life messages?

Reply

ClaudeR13 5 years ago

I am trying to use can bus shield to read data from obd2 and then modify some of the data
and then output the modified data to an external device. The external device is normally
connected directly to the can bus plug so the data it receives is from the high and low
cables. My question is once I modify the message via the processing the data in arduino
and using my custom sketch how do I output it back out into the high and low cables from
arduino output so that the external device receives the modified data in the hi / low
format that the external device it’s expecting when it’s connected directly to the ond2
port.

Reply

nonfatelonda 5 years ago

Hi. I am experimenting on a Suzuki Every minivan in order to decipher the message


required for locking/unlocking the doors, using your (above, first instance) code for
unfiltered reading. While I am able to initialize at 250, then passing to the void loop I
simply cannot get past the first if condition: if (mcp2515_check_message()) as I keep on
getting routed to the else condition I have added for simple tracking purposes. Any
suggestions on what I need to modify on the code or in the libraries, in order to make it
work? Thank you in advance.

Reply

ssstofff 5 years ago

I'm working on an opensource project to read board computer data from busses (coaches).
Those non-consumer vehicles have often a modified ODBII port. So we need to hook-up on
the can-bus before that port. As cutting cables is not an option there are those 'Crocodile'
adaptors (this device: ) to snif and read from the Can-H and Can-L cables
Have anyone of you here already experience here and if yes what hardware are you using
to 'copy' the Can-H and Can-L cable data and then hook onto the Arduino?

I added 2 images. Both have the same function to snap over the 2 can cables to copy the
data. 1 is the can-crocodile and the other is the clicq-system of Squarell. The later comes
with a closed "non open-source" hardware system where you depend on the supplier.

Reply
badillivanov 5 years ago

We uploaded the code to the Arduino with the SparkfunShiels, the connection to the car is
directly from Can-H, Can-L, GND to OBDII. We get initialization ok, but no data. We tried
can-speed 500, 250, and 125. We are working on different cars and have tried the same
procedure in different models. Our main goal is though to communicate with BMW E46
(we got information, that because of the K-line, the E46 needs to be connected to CAN via
14 and 8, in stead of 14 and 6 as the other models).
What to do to get the CAN-data?
Thanks in advance.

Reply

1 reply

EricN137 5 years ago

Hey everyone,
So, I've been trying to do a bit of can-bus hacking and sadly have been running into some
problems.

First of all, when I connect the Sparkfun shield via OBD-|| cable I get no data, I figured
this is due to the gateway not sending any data unless requested. Does anyone know how
to request all data on all the busses?

Secondly, I have had trouble sending messages that give an expected outcome. e.g. I
filtered out all the messages running on the dashboard bus, found the message for
blinking my lights, but when I send the message back on the bus my lights don't turn on.
How could I do this?

Any ideas are super welcome!


Thanks in advance
Reply

VyomS5 5 years ago

Hey can anyone help with my problem? I cant seem to get data. Tried debugging and got
no where. I will attach pictures of the serial monitor and the hardware I have created.

IMG_1182.HEIC

Reply

AntonioC276 5 years ago

Does anyone know if this code works with CAN BUS SHIELD V2.0 + Arduino MEGA 2560?

Reply

Samira990 6 years ago

HI guys. I am starting to write a program about converting CAN data to USB. is there
anyone who did that before? i would be wounder if you comment URL of some document
about it.
All best

Reply

2 replies
Hari2m 6 years ago

Cant we just use the arduino uno or nodemcu directly to read the can messages. Instead of
using the canbus shield?

Reply

KTMpro 6 years ago

Hello evrybody,
I'm trying to hack a CANbus of KTM motorcycle and I don't knew if I can use the tutorial
that you provided above.
Thankyou for any advices.

Reply

TH3M45T3RR 6 years ago

Hi, I tried this on my 2003 VW Golf mk4. I had to hookup my shield directly on the bus
wires, located behind the dashboard to be able to read messages. Took me quite a while to
find the right wires. You have to look for a pair of orange twisted cables connected to the
green plug behind the dashboard. There are three orange pairs. Two of which are
Orange/black and orange/brown. You have to use the light coloured pair. Orange/black is
Can H and orange/brown is Can L (at 500kbps). Currently im collecting data and try to
understand it. My goal is to implement cruise control and an active rev matching system,
controlled by a windows 10 pc in the trunk, which is connected to a touchscreen in the
front, replacing the radio and navigation system.

Reply
ChristianS319 6 years ago

Hi! I'm working on a project for my 1996 Saab 900 turbo. I wonder what message.id does.
Is it an identifier that is sent to the ECU and the ECU then responds back with the same
identifier so it's easier to know what it is responding to? Also I would like to know what
message.header.rtr does. The last queston I have (for now) is if I need to do anything else
to make it run at 615 kbps than to edit the Canbus.h file and change CANSPEED in the
sketch?

Regards,

Christian

Reply

SaraswathiV 6 years ago

I need to transmit and receive specific CAN messages for a project. I have to use a laptop
with Busmaster on one end and the Arduino with the CAN shield on the other. When I
send messages from the Busmaster to the Arduino I get an error. A CAN message isn't
transmitted by busmaster. Is there anything else I need to add to the code?

The setup is a laptop with busmaster sending CAN signals to the shield-arduino through a
USB-DB9 connector. The Arduino is connected via USB to another laptop on whose serial
monitor I wish to read the messages being transmitted by the first laptop. Also do I need to
worry about adding 120 ohm resistors anywhere in this setup? Please help.

Reply

1 reply

MohibK2 7 years ago


Hi. Great guide.

I need an Analog 0-5V to CAN converter at work and the cheapest one I can find is about
£400. So I am thinking of going the Arduino route and developing our own.

I have a joystick that outputs in CAN but I cannot use it for reasons, and it is connected in a
forklift truck (which uses CAN to communicate of course)

I have a joystick that outputs in 0-5V which I can use, but of course, I need to translate the
0-5V to CAN exactly as the OEM.

I am kind of struggling to figure out how to do this. Any help would be appreciated.

Reply

1 reply

Meghadootc 7 years ago

hello,

Basically, I wanted to establish can communication between two arduino boards.


For that, I have two sparkfun can-shields.
I wanted to know,
1.Can I connect them directly by using CAN_H and CAN_L pins provided on shield?(I tried
direct connection, but I'm not able to receive can frame at the receiving arduino board)

2. whether do i need to connect terminating resistors of 10 ohm at both ends?


3.is there any API, where can we configure baudrate and can fram id etc?

Thanks in advance.
My mail id is: [email protected]

Reply

2 replies
DieterW8 6 years ago

Hello,

i bought the "SparkFun CAN-BUS Shield" and


hooked up on a Arduino Uno. After that, I uploaded the sketch
"CAN_Read_Demo". I connected it to my car, but there was no data
displayed on the serial monitor. Then I uploaded the sketch "SparkFun_CAN_Demo"
to test the board.

The serial monitor shows:

CAN-Bus Demo

CAN Init ok

Please choose a menu option

1.Speed

2.RPM

3.Throttle

4.Coolant Temperature

5.O2 Voltage

6.MAF Sensor

But when I enter a option (e.g. 1 for Speed) it shows


following error:

Vehicle Speed:

Not a valid input.

Please enter a valid option.

Is the shield broken or did I something wrong?

Reply

hagaip2010 6 years ago


Hey, I did everything as it says, I hooked up the Arduino Ono on the bus shield, and I
plugged obd2 - db9 cable between the car and the shield and all the time I get only one
message "cant init can" I also tried to connect without the cable, And can - low and gnd
and it shows me the same message, what am i doing wrong, please help me out

Reply

1 reply

azizm14 6 years ago

Can you help me why I can't detect the message?thankyou

Reply

Chouby 6 years ago

For all Volkswagen family, VW, Audi, Skoda


YOU NEED TO REQUEST DATA FROM THE PORT UNLESS YOU'RE DIRECTLY ON THE
CANBUS WIRE
EX: Canbus.ecu_req(ENGINE_RPM, buffer);

Reply

SaverioV 6 years ago


Hello!
I have also arrived at this point, but now I would like to decode the hexadecimal strings to
get the real values ​but I do not know where to start! :(
for example I read from wikipedia which id correspond to the RPM and I filtered, but now
I do not know how to convert the string in INT could you help me? thank you so much :)

Reply

carlozousa 7 years ago

Hello,

I have read your instructable with great interest and have a doubt about the 4 pin headers
needed to connect to the sparkfun can-shield. When are they used in the code? Or the
hi/low information from the obd2 connector passes the information through the db9
connector on the shield? Browsing the code, I get the idea that it is only necessary to
connect the sparkfun can-shield to the arduino and the rest is code.

Can you clarify?

Thanks alot for this awesome instructable.

Reply

StefanS158 7 years ago

Thank you for your helpful guide. unfortunately i have some major problems with getting
no messages, i soldered on the board an using no db9 connector cable, i am using canH
canL and GND you can find an in detail post right here:
http://forum.arduino.cc/index.php?topic=494722.msg...

thank you!
Reply

klauson 7 years ago

Hi,

does anyone had a succesful connection with a VW? I connected it over Line 6 and 14 for
CAN high and low. I tried both Sparkfun example CAN_Demo and ECU_Demo but nothing
works. The Serial Monitor shows me only CAN init ok. I also tried different CAN Bus Speed
125, 250 and 500. I tried also the PID Request but that doesn't work too.

Reply

1 reply

mcnumgun0059 7 years ago

Hello,

If I want to write a message to multiple ECUs, what should I do?

Reply

David129 7 years ago

Hi,

I tried the SparkFun_CAN_Demo example but the buffer didn't work properly, I received
about 700 rpm in idle, but when accelerating the car I also received the same amount, it
was not until I maintained the rpm high and waited some seconds that when i asked for
the rpm it replied me with about 2000.
I don’t know what am I doing wrong, if someone had the same issue and managed to solve
it please respond to this comment.

Reply

SaraP47 7 years ago

Hey,

I'm facing issues in reading the data from the ECU using that CAN_READ_DEMO example
given in the library. I get data when no filter is applied, as i apply the filter mentioned in
step 2 I get no data at all! i tried applying other filters as mentioned in other comments,
but none of them worked. Please if you can help me with it, im stuck :( .I'm testing the
code on Honda Civic .Here is what i get when applying no filter.

CAN Read - Testing receival of CAN Bus message

CAN Init ok

ID: 305, Data: 780 10 0 0 0 0 7

ID: 18E, Data: 38 0 9

ID: 13C, Data: 80 93 1 4E 0 0 4 32

ID: 158, Data: 80 0 2 BF 0 0 0 3B

ID: 1A4, Data: 80 0 0 0 0 0 0 18

ID: 295, Data: 40 0 0 17

ID: 18E, Data: 38 0 27

ID: 1A4, Data: 80 0 0 0 0 0 0 27

ID: 18E, Data: 38 0 9

ID: 1B0, Data: 70 0 0 0 0 0 1B

ID: 18E, Data: 38 0 27

ID: 1A4, Data: 80 0 0 0 0 0 0 9

ID: 18E, Data: 38 0 9

ID: 13C, Data: 80 92 1 4D 0 0 4 25


ID: 18E, Data: 38 0 27

ID: 18E, Data: 38 0 27

ID: 18E, Data: 38 0 9

ID: 1A4, Data: 80 0 0 0 0 0 0 18

ID: 158, Data: 80 0 2 BF 0 0 0 E

ID: 1A4, Data: 80 0 0 0 0 0 0 9

ID: 1A4, Data: 80 0 0 0 0 0 0 27

ID: 18E, Data: 38 0 9

ID: 18E, Data: 38 0 9

ID: 13C, Data: 80 92 1 49 0 0 4 1A

ID: 1A4, Data: 80 0 0 0 0 0 0 9

ID: 428, Data: 70 0 0 0 0 0 28

ID: 18E, Data: 38 0 9

ID: 18E, Data: 38 0 9

ID: 18E, Data: 38 0 27

ID: 1A4, Data: 80 0 0 0 0 0 0 9

ID: 1D0, Data: 80 0 0 0 0 0 0 A

ID: 1A4, Data: 80 0 0 0 0 0 0 36

ID: 13C, Data: 80 93 1 48 0 0 4 1A

ID: 18E, Data: 38 0 27

ID: 18E, Data: 38 0 27

ID: 1ED, Data: 31 FF 3A

ID: 1A4, Data: 80 0 0 0 0 0 0 36

ID: 18E, Data: 38 0 27

ID: 17C, Data: 80 0 2 C7 0 0 0 F

ID: 18E, Data: 38 0 9

ID: 18E, Data: 38 0 9

ID: 18E, Data: 38 0 27


ID: 1A4, Data: 80 0 0 0 0 0 0 9

ID: 1A4, Data: 80 0 0 0 0 0 0 18

ID: 1A4, Data: 80 0 0 0 0 0 0 36

ID: 1ED, Data: 31 FF 1C

ID: 18E, Data: 38 0 27

ID: 1A4, Data: 80 0 0 0 0 0 0 9

ID: 158, Data: 80 0 2 B2 0 0 0 29

ID: 1A4, Data: 80 0 0 0 0 0 0 36

ID: 1A4, Data: 80 0 0 0 0 0 0 18

ID: 13C, Data: 80 93 1 4A 0 0 4 18

ID: 18E, Data: 38 0 27

ID: 18E, Data: 38 0 27

ID: 188, Data: 60 0 0 1 0 24

ID: 1A4, Data: 80 0 0 0 0 0 0 18

ID: 18E, Data: 38 0 27

ID: 18E, Data: 38 0 27

ID: 1A6, Data: 84 0 40 17 A9 0 0 4

ID: 1A4, Data: 80 0 0 0 0 0 0 36

ID: 1A4, Data: 80 0 0 0 0 0 0 18

ID: 295, Data: 40 0 0 17

ID: 18E, Data: 38 0 27

ID: 18E, Data: 38 0 18

ID: 18E, Data: 38 0 9

ID: 18E, Data: 38 0 27

ID: 1A4, Data: 80 0 0 0 0 0 0 27

ID: 13C, Data: 80 94 1 4B 0 0 4 25

ID: 1A4, Data: 80 0 0 0 0 0 0 18

ID: 1A4, Data: 80 0 0 0 0 0 0 36


ID: 1A6, Data: 84 0 40 17 AA 0 0 30

ID: 18E, Data: 38 0 27

ID: 18E, Data: 38 0 27

ID: 1A4, Data: 80 0 0 0 0 0 0 27

ID: 18E, Data: 38 0 36

ID: 1A4, Data: 80 0 0 0 0 0 0 18

ID: 328, Data: 80 0 0 0 0 C0 0 1E

ID: 1A4, Data: 80 0 0 0 0 0 0 9

ID: 1A4, Data: 80 0 0 0 0 0 0 27

ID: 1A6, Data: 84 0 40 17 AA 0 0 21

ID: 18E, Data: 38 0 9

ID: 18E, Data: 38 0 9

ID: 1A6, Data: 84 0 40 17 AA 0 0 30

ID: 1A4, Data: 80 0 0 0 0 0 0 27

ID: 1A4, Data: 80 0 0 0 0 0 0 9

ID: 1A4, Data: 80 0 0 0 0 0 0 27

ID: 18E, Data: 38 0 9

ID: 18E, Data: 38 0 9

ID: 13C, Data: 80 94 1 4D 0 0 4 14

ID: 18E, Data: 38 0 18

ID: 18E, Data: 38 0 18

ID: 1A4, Data: 80 0 0 0 0 0 0 36

ID: 18E, Data: 38 0 27

ID: 18E, Data: 38 0 27

ID: 18E, Data: 38 0 9

ID: 18E, Data: 38 0 36

ID: 18E, Data: 38 0 18

ID: 18E, Data: 38 0 9


ID: 1A6, Data: 84 0 40 17 AA 0 0 30

ID: 18E, Data: 38 0 18

ID: 18E, Data: 38 0 18

ID: 255, Data: 80 0 0 0 55 55 9C BA

ID: 18E, Data: 38 0 27

ID: 18E, Data: 38 0 27

ID: 39, Data: 30 0 C

ID: 18E, Data: 38 0 36

ID: 18E, Data: 38 0 27

ID: 18E, Data: 38 0 9

ID: 18E, Data: 38 0 36

ID: 17C, Data: 80 0 2 C8 0 0 0 E

ID: 18E, Data: 38 0 9

ID: 18E, Data: 38 0 9

ID: 18E, Data: 38 0 27

ID: 39, Data: 30 0 2A

ID: 18E, Data: 38 0 36

ID: 18E, Data: 38 0 27

ID: 13C, Data: 80 92 1 4B 0 0 4 36

ID: 18E, Data: 38 0 36

ID: 18E, Data: 38 0 36

ID: 158, Data: 80 0 2 BC 0 0 0 1

ID: 18E, Data: 38 0 9

ID: 18E, Data: 38 0 9

ID: 18E, Data: 38 0 27

ID: 372, Data: 220 28

ID: 18E, Data: 38 0 36

ID: 18E, Data: 38 0 27


ID: 13C, Data: 80 92 1 49 0 0 4 38

ID: 18E, Data: 38 0 36

ID: 18E, Data: 38 0 36

ID: 17C, Data: 80 0 2 C4 0 0 0 2

ID: 18E, Data: 38 0 9

ID: 18E, Data: 38 0 9

ID: 18E, Data: 38 0 27

ID: 39, Data: 30 0 C

ID: 18E, Data: 38 0 36

ID: 18E, Data: 38 0 27

ID: 18E, Data: 38 0 9

ID: 18E, Data: 38 0 36

ID: 13C, Data: 80 92 1 4A 0 0 4 A

ID: 18E, Data: 38 0 9

ID: 18E, Data: 38 0 9

ID: 18E, Data: 38 0 27

ID: 18E, Data: 38 0 18

ID: 18E, Data: 38 0 36

ID: 18E, Data: 38 0 27

ID: 1A6, Data: 84 0 40 17 AA 0 0 3

ID: 18E, Data: 38 0 36

ID: 18E, Data: 38 0 36

ID: 18E, Data: 38 0 27

ID: 18E, Data: 38 0 9

ID: 18E, Data: 38 0 36

ID: 18E, Data: 38 0 18

ID: 18E, Data: 38 0 9

ID: 1A6, Data: 84 0 40 17 AA 0 0 30


ID: 18E, Data: 38 0 18

ID: 18E, Data: 38 0 18

ID: 1D0, Data: 80 0 0 0 0 0 0 A

ID: 18E, Data: 38 0 27

ID: 18E, Data: 38 0 27

ID: 18E, Data: 38 0 9

ID: 18E, Data: 38 0 36

ID: 158, Data: 80 0 2 BC 0 0 0 1

ID: 18E, Data: 38 0 9

ID: 328, Data: 80 0 0 0 0 C0 0 2D

ID: 18E, Data: 38 0 27

ID: 18E, Data: 38 0 27

ID: 1A6, Data: 84 0 40 17 A9 0 0 22

ID: 18E, Data: 38 0 36

ID: 18E, Data: 38 0 36

ID: 18E, Data: 38 0 27

ID: 18E, Data: 38 0 9

ID: 18E, Data: 38 0 36

ID: 13C, Data: 80 93 1 4A 0 0 4 9

ID: 18E, Data: 38 0 9

ID: 18E, Data: 38 0 9

ID: 18E, Data: 38 0 27

ID: 39, Data: 30 0 2A

ID: 18E, Data: 38 0 36

ID: 18E, Data: 38 0 27

ID: 17C, Data: 80 0 2 C9 0 0 0 3A

ID: 18E, Data: 38 0 36

ID: 295, Data: 40 0 0 8


ID: 13C, Data: 80 93 1 47 0 0 4 C

ID: 18E, Data: 38 0 9

ID: 18E, Data: 38 0 9

ID: 18E, Data: 38 0 27

ID: 18E, Data: 38 0 18

ID: 17C, Data: 80 0 2 C7 0 0 0 2D

ID: 18E, Data: 38 0 27

ID: 18E, Data: 38 0 27

ID: 13C, Data: 80 93 1 49 0 0 4 37

ID: 18E, Data: 38 0 36

ID: 18E, Data: 38 0 36

ID: 17C, Data: 80 0 2 C7 0 0 0 F

ID: 18E, Data: 38 0 9

ID: 18E, Data: 38 0 9

ID: 18E, Data: 38 0 27

ID: 1A6, Data: 84 0 40 17 A9 0 0 22

ID: 18E, Data: 38 0 36

ID: 18E, Data: 38 0 36

ID: 18E, Data: 38 0 27

ID: 188, Data: 60 0 0 1 0 24

ID: 18E, Data: 38 0 36

ID: 18E, Data: 38 0 27

ID: 18E, Data: 38 0 18

ID: 1DC, Data: 42 2 C3 38

ID: 18E, Data: 38 0 27

ID: 18E, Data: 38 0 18

ID: 18E, Data: 38 0 9

ID: 18E, Data: 38 0 27


ID: 1A6, Data: 84 0 40 17 A9 0 0 4

ID: 18E, Data: 38 0 36

ID: 18E, Data: 38 0 36

ID: 18E, Data: 38 0 27

ID: 18E, Data: 38 0 9

ID: 18E, Data: 38 0 36

ID: 188, Data: 60 0 0 1 0 33

ID: 18E, Data: 38 0 9

ID: 13C, Data: 80 92 1 4A 0 0 4 28

ID: 13C, Data: 80 92 1 4A 0 0 4 19

ID: 13C, Data: 80 92 1 4B 0 0 4 18

ID: 1DC, Data: 42 2 C8 24

ID: 13C, Data: 80 92 1 4D 0 0 4 7

ID: 13C, Data: 80 92 1 4D 0 0 4 34

ID: 13C, Data: 80 92 1 4D 0 0 4 34

ID: 13C, Data: 80 92 1 4C 0 0 4 35

ID: 13C, Data: 80 92 1 4B 0 0 4 36

ID: 255, Data: 80 0 0 0 55 55 F6 60

ID: 17C, Data: 80 0 2 CB 0 0 0 29

ID: 13C, Data: 80 92 1 49 0 0 4 29

ID: 13C, Data: 80 92 1 49 0 0 4 29

ID: 13C, Data: 80 92 1 49 0 0 4 29

ID: 13C, Data: 80 93 1 49 0 0 4 28

ID: 1A6, Data: 84 0 40 17 A9 0 0 31

ID: 1A6, Data: 84 0 40 17 A9 0 0 13

ID: 1A6, Data: 84 0 40 17 A9 0 0 31

ID: 188, Data: 60 0 0 1 0 6

ID: 158, Data: 80 0 2 BC 0 0 0 10


ID: 320, Data: 50 0 0 0 21

ID: 13C, Data: 80 93 1 4C 0 0 4 7

ID: 13C, Data: 80 93 1 4A 0 0 4 36

ID: 13C, Data: 80 93 1 49 0 0 4 37

ID: 13C, Data: 80 93 1 4A 0 0 4 36

ID: 13C, Data: 80 93 1 4B 0 0 4 35

ID: 13C, Data: 80 93 1 4C 0 0 4 34

ID: 18E, Data: 38 0 36

ID: 13C, Data: 80 93 1 4D 0 0 4 24

ID: 13C, Data: 80 93 1 4D 0 0 4 15

ID: 13C, Data: 80 93 1 4B 0 0 4 17

ID: 328, Data: 80 0 0 0 0 C0 0 1E

ID: 18E, Data: 38 0 18

ID: 13C, Data: 80 93 1 49 0 0 4 A

ID: 13C, Data: 80 93 1 49 0 0 4 37

ID: 1D0, Data: 80 0 0 0 0 0 0 A

ID: 17C, Data: 80 0 2 CA 0 0 0 2A

ID: 13C, Data: 80 93 1 49 0 0 4 28

ID: 1A6, Data: 84 0 40 17 A9 0 0 13

ID: 1A6, Data: 84 0 40 17 AA 0 0 30

ID: 1A6, Data: 84 0 40 17 AA 0 0 12

ID: 1ED, Data: 31 FF 1C

ID: 17C, Data: 80 0 2 C4 0 0 0 11

ID: 13C, Data: 80 93 1 49 0 0 4 A

ID: 13C, Data: 80 93 1 49 0 0 4 A

ID: 39, Data: 30 0 1B

ID: 13C, Data: 80 93 1 49 0 0 4 37

ID: 13C, Data: 80 93 1 4B 0 0 4 26


ID: 1A6, Data: 84 0 40 17 A9 0 0 31

ID: 1A6, Data: 84 0 40 17 A9 0 0 13

ID: 1A6, Data: 84 0 40 17 A9 0 0 31

ID: 1A6, Data: 84 0 40 17 AA 0 0 12

ID: 188, Data: 60 0 0 1 0 6

ID: 158, Data: 80 0 2 BB 0 0 0 11

ID: 1A4, Data: 80 0 0 0 0 0 0 9

ID: 13C, Data: 80 92 1 4C 0 0 4 8

ID: 13C, Data: 80 92 1 4C 0 0 4 8

ID: 39, Data: 30 0 C

ID: 13C, Data: 80 92 1 49 0 0 4 38

ID: 1A6, Data: 84 0 40 17 AA 0 0 30

ID: 1A6, Data: 84 0 40 17 A9 0 0 13

ID: 1A6, Data: 84 0 40 17 A9 0 0 31

ID: 1ED, Data: 31 FF 1C

ID: 17C, Data: 80 0 2 C7 0 0 0 1E

ID: 13C, Data: 80 92 1 4A 0 0 4 A

ID: 13C, Data: 80 92 1 49 0 0 4 B

ID: 39, Data: 30 0 C

ID: 13C, Data: 80 92 1 49 0 0 4 38

ID: 1A6, Data: 84 0 40 17 AA 0 0 30

ID: 1A6, Data: 84 0 40 17 A9 0 0 13

ID: 1A6, Data: 84 0 40 17 A9 0 0 31

ID: 1A6, Data: 84 0 40 17 A9 0 0 13

ID: 1A6, Data: 84 0 40 17 AA 0 0 30

ID: 188, Data: 60 0 0 1 0 6

ID: 158, Data: 80 0 2 B7 0 0 0 15

ID: 324, Data: 883 66 C 44 0 0 0 22


ID: 13C, Data: 80 93 1 49 0 0 4 A

ID: 13C, Data: 80 93 1 48 0 0 4 B

ID: 13C, Data: 80 93 1 48 0 0 4 B

ID: 39, Data: 30 0 C

ID: 1ED, Data: 31 FF 3A

ID: 221, Data: 322 0 87

ID: 1A4, Data: 80 0 0 0 0 0 0 27

ID: 18E, Data: 38 0 9

ID: 13C, Data: 80 93 1 4C 0 0 4 34

ID: 17C, Data: 80 0 2 C4 0 0 0 11

ID: 13C, Data: 80 93 1 4B 0 0 4 17

ID: 13C, Data: 80 93 1 4A 0 0 4 18

ID: 13C, Data: 80 93 1 4A 0 0 4 18

ID: 13C, Data: 80 93 1 49 0 0 4 19

ID: 1A4, Data: 80 0 0 0 0 0 0 9

ID: 188, Data: 60 0 0 1 0 33

ID: 386, Data: 8FF E0 0 0 0 0 0 29

ID: 13C, Data: 80 93 1 47 0 0 4 39

ID: 13C, Data: 80 93 1 48 0 0 4 38

ID: 13C, Data: 80 93 1 48 0 0 4 38

ID: 13C, Data: 80 93 1 49 0 0 4 37

ID: 1A4, Data: 80 0 0 0 0 0 0 18

ID: 1DC, Data: 42 2 C7 34

ID: 13C, Data: 80 93 1 4D 0 0 4 24

ID: 13C, Data: 80 93 1 4D 0 0 4 15

ID: 13C, Data: 80 93 1 4D 0 0 4 15

ID: 13C, Data: 80 93 1 4D 0 0 4 15

ID: 1A4, Data: 80 0 0 0 0 0 0 9


ID: 188, Data: 60 0 0 1 0 33

ID: 13C, Data: 80 93 1 4C 0 0 4 7

ID: 13C, Data: 80 93 1 4D 0 0 4 33

ID: 13C, Data: 80 93 1 4C 0 0 4 34

ID: 13C, Data: 80 93 1 4C 0 0 4 34

ID: 1B0, Data: 70 0 0 0 0 0 39

ID: 1A4, Data: 80 0 0 0 0 0 0 18

ID: 309, Data: 80 0 0 0 0 0 0 1B

ID: 1A6, Data: 84 0 40 17 A9 0 0 31

ID: 13C, Data: 80 93 1 4B 0 0 4 17

ID: 18E, Data: 38 0 27

ID: 13C, Data: 80 93 1 4D 0 0 4 15

ID: 39, Data: 30 0 1B

ID: 39, Data: 30 0 2A

ID: 13C, Data: 80 93 1 4A 0 0 4 27

ID: 1ED, Data: 31 FF D

ID: 13C, Data: 80 93 1 4A 0 0 4 9

ID: 13C, Data: 80 93 1 4A 0 0 4 36

ID: 1D0, Data: 80 0 0 0 0 0 0 A

ID: 328, Data: 80 0 0 0 0 C0 0 2D

ID: 13C, Data: 80 94 1 48 0 0 4 28

ID: 1A6, Data: 84 0 40 17 AA 0 0 12

ID: 1A6, Data: 84 0 40 17 AA 0 0 30

ID: 1A6, Data: 84 0 40 17 AA 0 0 12

ID: 1A6, Data: 84 0 40 17 A9 0 0 31

ID: 1A6, Data: 84 0 40 17 A9 0 0 13

ID: 1A6, Data: 84 0 40 17 AA 0 0 30

ID: 1ED, Data: 31 FF 1C


ID: 17C, Data: 80 0 2 C8 0 0 0 1D

ID: 13C, Data: 80 93 1 48 0 0 4 B

ID: 1A6, Data: 84 0 40 17 A9 0 0 22

ID: 39, Data: 30 0 2A

ID: 39, Data: 30 0 39

ID: 13C, Data: 80 93 1 4C 0 0 4 25

ID: 1A4, Data: 80 0 0 0 0 0 0 27

ID: 188, Data: 60 0 0 1 0 33

ID: 18E, Data: 38 0 18

ID: 13C, Data: 80 92 1 49 0 0 4 38

ID: 21E, Data: 70 0 3D 4F 20 66 24

ID: 1A6, Data: 84 0 40 17 A9 0 0 13

ID: 1A6, Data: 84 0 40 17 A9 0 0 31

ID: 1A6, Data: 84 0 40 17 A9 0 0 13

ID: 1A6, Data: 84 0 40 17 A9 0 0 31

ID: 1ED, Data: 31 FF 1C

ID: 188, Data: 60 0 0 1 0 6

ID: 13C, Data: 80 92 1 49 0 0 4 B

ID: 13C, Data: 80 92 1 4A 0 0 4 37

ID: 13C, Data: 80 92 1 4A 0 0 4 37

ID: 13C, Data: 80 92 1 4A 0 0 4 37

ID: 1B0, Data: 70 0 0 0 0 0 1B

ID: 1A4, Data: 80 0 0 0 0 0 0 36

ID: 294, Data: 80 16 1 0 F2 9 0 25

ID: 1A6, Data: 84 0 40 17 A9 0 0 13

ID: 1A6, Data: 84 0 40 17 A9 0 0 31

ID: 18E, Data: 38 0 27

ID: 17C, Data: 80 0 2 C4 0 0 0 11


ID: 13C, Data: 80 93 1 4B 0 0 4 8

ID: 39, Data: 30 0 1B

ID: 39, Data: 30 0 2A

ID: 295, Data: 40 0 0 17

Reply

gpalat 7 years ago

Great guide stvmac11 !

I'm facing a little problem though.. when I use your "all messages" code, I'm getting the
"can init OK" but nothing after that... if I will put the code below inside the loop (including
the "buffer" declaration at the begining) , I'm getting the engine's rpm correctly...

Canbus.ecu_req(ENGINE_RPM, buffer);
Serial.print("Engine RPM: ");
Serial.println(buffer);

Can you tell what it is going wrong?..

Reply

1 reply

JaroslavZ3 7 years ago

I can confirm what @MoniCris has said: Use the GROUND/GND Luke! Also consider cutting
P1 (right above the CAN-H screw)

I had to do both to finally get my first message from the damned shield in my Ford
Mondeo.
Reply

MoniCris 9 years ago

Hi. It is a great instructable. I try the same, but I have a problem.

1. In my Skoda Octavia II (2013), the OBD plug have pins 1,4,5,6,14,16. Rest of the pins have
no connection inside. I connect my Can Shield to 6(can H), 14(can L) and GND. I check the
voltage and I have +2,5V on H and +2,5V on L to GND. I use your library and can not
connect to CAN. I change the can speed to get the can error, but nothing. With and without
engine started

2. Between the drivers door and the car, I reach the Convenience can bus lines. I connect
my can shield and works at 100 kbps. I search for another library because the library you
used is not reaching this low speed. I get thousands of frames just locking doors. I found
the frame witch blocking the doors, and sending it back, is doing the job. Making an error
on can speed from 100 to 125 or 500, I get the Christmas tree lights on my car's dash panel
... normal.

But I wish to use the OBD's can lines. Have you any idea what can be wrong? Next days I
will try on an Skoda Fabia (2003).

Thanks

P.S.: To all others, when you connect can bus, you need to connect 3 wires: CAN HIGH, CAN
LOW, and GROUND!!

Cheers

Reply

3 replies

More Comments Post a comment

AboutContact

Sitemap | TOS | Privacy Statement | Privacy settings | Legal


© 2024
I Made It Favorite View Comments Share More Options
Facebook Twitter Pinterest Google Classroom
Flag

Wrong Category
Inappropriate
Incomplete
Spam

Are you sure you want to flag this instructable as ?

Cancel Confirm

Edit

You might also like