This guide provides a step-by-step tutorial on how to build a custom coolant temperature display using an Arduino, an HC-05 Bluetooth module, and an ELM327 OBD2 adapter. This project allows you to easily monitor your vehicle’s coolant temperature data directly from the ECU, bypassing the need for a traditional gauge.
This project leverages the accessibility of the ELM327 chip, a readily available and inexpensive OBD2 interpreter that translates various vehicle communication protocols into a single, understandable format. By pairing this with the versatility of an Arduino, we can create a personalized display solution.
Parts List for Arduino OBD2 Project
To embark on this project, you will need the following components:
- ELM327 Bluetooth OBD2 Adapter: This device acts as the bridge between your vehicle’s OBD2 port and the microcontroller. (~$5.00)
- Arduino Uno: This microcontroller will process the data received from the ELM327 and display it on the LCD screen. (~$5.00)
- HC-05 Bluetooth Module: This module enables wireless communication between the ELM327 and the Arduino. (~$5.00)
- I2C LCD Display: This display will showcase the coolant temperature readings. (~$5.00)
Hardware Setup and Connections
Arduino Uno Connections:
- Connect the HC-05 TX pin to the Arduino RX pin.
- Connect the HC-05 RX pin to the Arduino TX pin.
- Connect the LCD I2C SDA pin to the Arduino SDA pin (A4).
- Connect the LCD I2C SCL pin to the Arduino SCL pin (A5).
HC-05 Bluetooth Configuration:
The HC-05 module needs to be configured as the master device, initiating the connection with the ELM327 (slave).
-
Powering the HC-05: Connect the HC-05 to 5V power and ground.
-
AT Command Mode: Before powering on the HC-05, press and hold the button on the module. This will force it into AT command mode, indicated by a slow blinking LED (approximately every 2 seconds).
-
Connecting to Serial Monitor: Use a serial monitor or terminal program on your computer to communicate with the HC-05 via its COM port.
-
Obtaining Bluetooth Addresses: You’ll need the Bluetooth addresses of both the ELM327 and the HC-05. You can typically find the ELM327 address in its documentation or through a Bluetooth scanning app. Use the AT command
AT+ADDE?
to retrieve the HC-05 address. -
Pairing the Devices: Use the following AT commands to permanently pair the HC-05 with the ELM327. Replace the placeholder addresses with your actual device addresses. Remember to remove the leading zeros from the HC-05 address when using it in AT commands. For example, an address of
00:14:03:05:97:07
becomes14:3:59707
.AT+RESET AT+ORGL AT+ROLE=1 // Set HC-05 as Master AT+CMODE=0 // Connect to specific address AT+BIND=1234,56,789c72 // Replace with ELM327 address AT+INIT AT+PAIR=1234,56,789c72,20 // Replace with ELM327 address, 20-second timeout AT+LINK=1234,56,789c72 // Replace with ELM327 address
Important Note: Disconnect the HC-05 TX/RX from the Arduino while uploading the Arduino sketch.
I2C LCD Display Setup
- Ensure the I2C LCD is connected as described above.
- Include the necessary libraries in your Arduino code:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
-
Wire.h Library: This library may need to be copied from the Arduino installation directory to your user’s Arduino libraries folder. Ensure both
Wire.h
andLiquidCrystal_I2C.h
reside in the same directory. -
Initializing the LCD: Instantiate the LCD object with the correct I2C address. Commonly, the address is
0x27
or0x3F
. You may need to use a I2C scanner to determine the address of your display.
LiquidCrystal_I2C lcd(0x3F, 16, 2); // Replace 0x3F with your LCD's I2C address if needed
lcd.init();
lcd.backlight();
Arduino Code and Implementation
After setting up the hardware, you’ll need to program the Arduino to read data from the ELM327, process it, and display it on the LCD. You can find Arduino code examples online that demonstrate how to communicate with an ELM327 using specific OBD2 commands (PIDs) to retrieve coolant temperature data. Remember to adapt the code to your specific hardware configuration and desired display format.
Conclusion
This guide has outlined the hardware and software requirements for building an Arduino-based OBD2 coolant temperature display using an HC-05 Bluetooth module. This project demonstrates a practical application of microcontrollers in automotive diagnostics and customization. By understanding the fundamental principles and following the instructions provided, you can successfully create your own personalized solution for monitoring your vehicle’s coolant temperature.