2. Arduino
• Italy 2005
• ATmega328 microcontroller
• 14 digital I/O pins
• 16 MHz clock speed
• 32 KB memory
• About $30 online
Arduino
Hardware
Automotive OBD
ISO Interface
Software
Data
Conclusions
3. Arduino
• Program “sketches” in
Multi-platform Java-
based IDE
• Code in C/C++
• Serial Communication
(currently USB)
4. Hardware
• Goals of this project:
• Communicate with an automotive
engine control unit (ECU) via the
Arduino
• Gather and record instantaneous
data that is reported by the vehicle
Arduino
Hardware
Automotive OBD
ISO Interface
Software
Data
Conclusions
?
5. Hardware
• Vehicles produced in
the U.S. after 1996 are
required to have an
OBD-II (on-board
diagnostic) connector
6. Hardware
• OBD-II Interface
• Very simple connection
for most applications
• Most important pins
• K-Line
• Ground
• +12V
11. Software
• A few functions to perform:
• Initialize ISO connection
• Request data from vehicle’s ECU
• Display the result on the LCD and
record the value to retrieve later
Arduino
Hardware
Automotive OBD
ISO Interface
Software
Data
Conclusions
16. Software
• Steps:
1. Request PID with hex value
2. Continuously read data from ISO until successful
checksum or timeout
3. Convert returned value with formula
4. Display / record value and repeat
17. Software
1. Request PID with hex value
Index Value Description
0 0x68 SAE J1979 standard
1 0x6A OBD-II request
2 0xF1 Off-board tool
3 0x01 Mode 1 PIDs
4 pid Hex value for PID requested
5 Checksum Computed from message
byte
message[6];
for
(int
i
=
0;
i
<
6;
i++)
iso_write_byte(message[i]);
18. Software
2. Continuously read data from ISO until successful
checksum or timeout
Byte(s) Description
0 Message Header 1
1 Message Header 2
2 Source Address
3 – 9 Data (up to 7 bytes)
Final byte Checksum
byte
buf[11];
19. Software
3. Convert returned value with formula
ie.:
PID Bytes Description Formula
0x0C 2 Engine RPM ((A*256)+B)/4
double
rpm;
rpm
=
((double)buf[0]
*
256)
+
(double)buf[1])
/
4.0;
22. Software
• One last note on PIDs…
• This gives you the rate of air in grams / second
PID Bytes Description Formula
0x10 2 Mass Air Flow Rate ((A*256)+B)/100
23. Software
• You can convert into
• And then use vehicle speed to convert to
or MPG
g air
s
gal gasoline
h
miles
gal gasoline
24. Data
• Scanned four PIDs over a
20-minute interval every
1-2 seconds
• Vehicle Speed
• Engine RPM
• Engine Coolant
• Calculated MPG
Arduino
Hardware
Automotive OBD
ISO Interface
Software
Data
Conclusions
29. Conclusions
• Embedded computing is
ubiquitous
• Massive amounts of data
generated by everyday
machines
• Elec. Engineering and CS
can come together to make
some pretty cool things
Arduino
Hardware
Automotive OBD
ISO Interface
Software
Data
Conclusions