![Toyota obd1 serial interface for arduino Toyota obd1 serial interface for arduino](http://dlnmh9ip6v2uc.cloudfront.net/images/products/10039-01.jpg)
![Toyota obd1 serial interface for arduino Toyota obd1 serial interface for arduino](https://i2.cdscdn.com/pdt2/4/9/8/4/300x300/auc0612592752498/rw/maxllto-r-1-pcs-toyota-22pin-a-16pin-obd1-a-obd2.jpg)
The data logger shield sits on top of the Arduino unit, and uses pins not used by the LCD or serial communication.
![Toyota obd1 serial interface for arduino Toyota obd1 serial interface for arduino](http://obduino.ca/MCP_Interface_front.jpg)
In addition to adding more PIDs to poll, I will mainly be focusing on implementing a data logger shield to hold data captured by the Arduino and display in spreadsheet form on a computer. Currently, the system only polls for these four PIDs, but will be expanded to poll for several more. The ECU then responds with a byte-encoded value that the Arduino can decode and extract information from to display on screen. Polling for PIDs involves sending a byte-encoded message to the ECU requesting a value for a PID defined in the SAE J1979 standard. Mass airflow (MAF) sensor, which can be used to calculate instantaneous MPG.Clockwise from the top-left corner, these include: Initialization usually takes a few seconds to complete, and the connection must be re-initialized if the ECU is not polled for data within 5 seconds.ĭisplayed on the LCD screen above are instantaneous readings from the four PIDs currently polled by the Arduino. The Arduino sends back the inverse of the second keyword and, upon a response of 0xCC (the inverse of 0x33) from the ECU, the Arduino displays “Init. The Arduino then switches into normal serial communication at 10.4kbps and waits for a return address of 0x55 from the ECU followed by two keywords. Once started, it sends address 0x33 to the ECU at 5-baud to “bit-bang” the ECU and establish a serial connection. The initialization sequence was adapted from ISO standard 9141-2:1994, available at the Engineering library. Interface with my automobile’s ISO-9141 bus, andīefore the Arduino can begin polling data from the automobile’s ECU, it must first establish a serial connection.
Toyota obd1 serial interface for arduino software#
Since my last progress update, I have written software for the Arduino to: Third, I added an Arduino data-logging shield to allow the capturing of long-term data from a vehicle in a spreadsheet-ready format.ĭownload the presentation I gave on this project.ĭownload the source code used for this project. Second, I wrote software for the Arduino to poll information from the vehicle’s engine control unit (ECU), such as instantaneous information like RPM and vehicle speed, and also diagnostic feedback, and display it in real time on an attached LCD screen.
Toyota obd1 serial interface for arduino how to#
An open-source project called OBDuino describes how to assemble such an interface, available here. For my CS 497 Spring 2011 course, I worked on an independent study project creating an Arduino-based OBD-II (vehicle onboard diagnostic) interface written in C.įirst, I assembled an interface between an Arduino Uno and the ISO9141 bus that most vehicles prior to 2008 use.