Introduction: Arduino OBD2 ELM327 I2C-LCD HC05 Bluetooth
Intro
This is a project of mine that I wanted to share with anyone that is interested in same thing that I was. I just wanted a simple output of the Coolant Temperature data that the ECU already has in its memory. That's easier said than done. Since the car industry has decided to use a different variety of protocols internally. The OBD2 standard is not really a standard you would typically think of. The only thing that is considered standard in my mind is the Connector. But as far as the signals that's all up in the air. That is why you need a middle man. That middle man is the ELM327 chip. The Chip translates all the 10 different protocols to a single protocol. Now a days they come in a cheap package. Ebay $5.00 dollars with Bluetooth or a USB adapter but Bluetooth is cheaper.
Other parts you will need is an Arduino Microcontroller, a Bluetooth adapter and a Display for the output.
Here are the parts needed
- ELM327 Bluetooth OBD2 Adapter $5.00
- Arduino Uno $5.00
- HC05 Bluetooth Module $5.00
- LCD I2C Display $5.00
Arduino Uno
Connections
- Connect HC05 TX RX to Rx TX pins of Arduino
- Connect LCD I2C to SCL SDA Pins of Arduino (Pins A4 A5 are mirrored to SCL SDA Pins)
HC05 Bluetooth Setup
Connections
HC05 will be the Master. ELM327 will be the Slave.
- Connect HC05 to 5v power and ground and to TX/RX pins of Arduino
Programming
- Hold Button before power up to force HC05 into AT command mode.
(Should blink on off every 2 seconds)
- Open Serial Monitor or Hyper terminal to COM Port
My ELM327 Address is 12:3.4:56:78:9c:72 ( You need to find yours)
My HC05 Address is 00:14:03:05:97:07 ( AT+ADDE? = +ADDR: 14:3:59707 ) no zeros ( Not really needed )
AT Commands to set up HC05 to connect permanantly to ELM327
- AT+RESET
- AT+ORGL (Set to original)
- AT+ROLE=1 (Set to Master)
- AT+CMODE=0 (Set connect to a specific address)
- AT+BIND=1234,56,789c72
- AT+INIT (Need to connect)
- AT+PAIR=1234,56,789c72,20 (,20 means 20 second timeout)
- AT+LINK=1234,56,789c72
Note:
When programming Arduino remove HC05 connection from TX RX Pins of Arduino
LCD I2C Display
- Connect LCD I2C to SCL SDA Pins of Arduino (Pins A4 A5 are mirrored to SCL SDA Pins)
- Copy Following libraries to the User's profile Arduino Library
- #include <liquidcrystal_I2C.h>
- #include <Wire.h>
Note: The Wire.h Library is in the Program Files folder but need to be copied to the Library folder of the user's profile. It must be in the same library directory as the LiquidCrystal_I2C.h library
C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src\Wire.h
C:\Users\alien\Documents\Arduino\libraries\Wire\Wire.h
C:\Users\alien\Documents\Arduino\libraries\LiquidCrystal_I2C
Need following code for I2C display. The hardware ID is hardcoded in theI2C chip. In this case it's 0x3F
- LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
- lcd.begin(16, 2);
30 Comments
2 months ago
Very nice instructable. Thanks!
Question 5 years ago
Do you know how to lift the car windows when I press the close door button on my remote
Answer 5 months ago
If the remote works to lock your doors splice the door lock wires to the up windows wire.
Find schematics for your car.
Or respond with type of vehicle...
Though just now seeing that this is 5 years ago. 🤷🤷🤷
Answer 4 years ago
should you solve can codes
can codes diffirent every for ecu
how to test this codes with at commands https://www.sparkfun.com/products/9555
Question 1 year ago on Step 3
Hi. Is it possible to design the alarm feature in case of high water temperature?
3 years ago
i have problem in the configuration of bluetooth HC05, when i am using AT+LINK=001D,A5,68988B it return fail, so how i can get ride of this problem
Reply 1 year ago
Hola amigo, lograste la conexion entre el HC.05 y el ELM27?
podrias compartir tu codigo?
Question 3 years ago
Hello everybody
I would like to know if someone could connect the bluetooth with the ELM327, I tried but I cannot do it, my vehicle is a Toyota hilux, I don't know if this affects the code?
please i need your help
Tip 3 years ago
For a more robust interface between your Arduino and ELM327, you can use ELMduino.h --> https://github.com/PowerBroker2/ELMduino. It's installable through the Arduino IDE's libraries manager and comes with examples.
3 years ago
Hello everyone
i want to get vehicle sensors data through bluetooth HC-05 using OBD-II, the bluetooth HC05 is connected successfully with OBD-II but not getting a single sensor value from ECU in vehicle. For further see the below attachment and help me to solve this problem.
Question 3 years ago
hello i saw that you are from Sofia if you really are from here can i meet with you because i intend to do something like that but quite developed
5 years ago
Something isn't right, doesn't work
Reply 4 years ago
are you explain
5 years ago
Hi,
How can i found my elm327 adapter's mac adress?
Reply 4 years ago
one android phone
4 years ago
what is POSITIVE
Reply 4 years ago
you should new lcd screen library in the arduino library
Question 5 years ago
Parse the received string, retrieve only the hex value for temperature Example: 32 is the 11 and 12th character
// 0105[41 05 32 Correct value reading back 10 degrees. (11,13 or even 11,14 works)
Can you explain that to me?
Answer 4 years ago
0105[ sending response current response 41 05 32 0x32 hex=50 decimal
turn decimal: https://www.binaryhexconverter.com/hex-to-decimal-converter
example
>0105
4 years ago
hello, how do you add some other parameters like rpm or speed? please help me make this project, thank you
can I contact via email?