DIY OBD2 LCD Coolant Temperature Display with Arduino

For car enthusiasts and DIYers, accessing real-time vehicle data can unlock a deeper understanding of your car’s performance. One crucial parameter to monitor is the coolant temperature, vital for engine health. While modern cars display this information on the dashboard, creating a dedicated, more visually accessible display can be a rewarding project. This guide outlines how to build a simple Obd2 Lcd coolant temperature display using readily available and budget-friendly components like an Arduino, an ELM327 OBD2 adapter, and an LCD screen.

Parts You’ll Need

To embark on this project, gather the following components, all easily sourced online at affordable prices:

  • ELM327 Bluetooth OBD2 Adapter: Acts as the interface between your car’s OBD2 port and the Arduino. These adapters are widely available for around $5.00.
  • Arduino Uno (or similar): The microcontroller brain of the project, processing data from the ELM327 and displaying it on the LCD. An Arduino Uno can also be found for approximately $5.00.
  • HC05 Bluetooth Module: Enables wireless communication between the ELM327 adapter and the Arduino. Expect to pay around $5.00 for this module.
  • LCD I2C Display: Provides a clear visual output for the coolant temperature readings. An I2C LCD simplifies wiring and is typically priced around $5.00.

Arduino Setup

The Arduino acts as the central hub, receiving data via Bluetooth and displaying it on the LCD. Here’s how to connect the components to your Arduino Uno:

Connections

  • HC05 Bluetooth Module: Connect the HC05 TX pin to the Arduino RX pin, and the HC05 RX pin to the Arduino TX pin. Also, connect the HC05 to 5V power and ground on the Arduino.
  • LCD I2C Display: Connect the LCD I2C module’s SCL pin to the Arduino’s SCL pin (A5 on Uno) and the SDA pin to the Arduino’s SDA pin (A4 on Uno). Power the LCD I2C module with 5V and ground from the Arduino.

HC05 Bluetooth Setup

To establish wireless communication, the HC05 Bluetooth module needs to be configured to connect with the ELM327 adapter. The HC05 will act as the master, initiating the connection to the ELM327 slave device.

Connections

Refer to the Arduino setup section for the HC05 connection details.

Programming

To configure the HC05, you’ll need to enter AT command mode.

  1. Enter AT Command Mode: Disconnect the HC05 TX/RX from Arduino. Power the HC05 while holding down the button on the module. The LED on the HC05 should blink slowly (approximately every 2 seconds), indicating AT command mode.
  2. Connect via Serial: Open the Arduino Serial Monitor or a similar serial communication program, and connect to the COM port associated with your Arduino. Set the baud rate to 38400 and select “No line ending”.
  3. Issue AT Commands: Type the following AT commands, pressing “Send” after each command. Replace 1234,56,789c72 with the Bluetooth address of your ELM327 adapter. You can usually find this address on the ELM327 device itself or through a Bluetooth scanning app.
AT+RESET
AT+ORGL
AT+ROLE=1
AT+CMODE=0
AT+BIND=1234,56,789c72
AT+INIT
AT+PAIR=1234,56,789c72,20
AT+LINK=1234,56,789c72

Note: When uploading code to the Arduino, disconnect the HC05 TX and RX pins from the Arduino to avoid communication conflicts.

LCD I2C Display

The LCD I2C display simplifies the display wiring and control.

Connections

See the Arduino Setup section for LCD I2C connection details.

Libraries

To control the LCD I2C display, you’ll need to include the necessary libraries in your Arduino code. Ensure you have installed the LiquidCrystal_I2C library in your Arduino IDE. You may also need to copy the Wire.h library to your Arduino libraries folder if it’s not already present.

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

The Wire.h library is often found within the Arduino program files directory, but for proper library management, it should reside in the user’s Arduino libraries folder.

Code for LCD Initialization

Initialize the LCD I2C object in your Arduino code, specifying the I2C address of your display (often 0x27 or 0x3F). The example below uses 0x3F.

LiquidCrystal_I2C lcd(0x3F, 16, 2);

void setup() {
  lcd.init();
  lcd.backlight();
  lcd.print("Coolant Temp:");
}

void loop() {
  // Code to read coolant temperature from OBD2 and display on LCD will go here
}

This setup provides the foundation for your OBD2 LCD coolant temperature display. The next step involves writing the Arduino code to communicate with the ELM327, request coolant temperature data, and display it on the LCD. This project offers a hands-on way to interact with your car’s diagnostics and create a custom gauge using affordable and accessible technology.

Comments

No comments yet. Why don’t you start the discussion?

Leave a Reply

Your email address will not be published. Required fields are marked *