Are you fascinated by your car’s inner workings and eager to visualize real-time data? This project is perfect for automotive enthusiasts and Arduino hobbyists alike! We’ll guide you through building a simple yet effective coolant temperature display using an Arduino, an OBD2 adapter, and an LCD screen. This setup allows you to tap into your car’s onboard diagnostic system and monitor crucial engine data, starting with coolant temperature. While modern vehicles are complex networks of communication protocols, accessing basic data like coolant temperature is achievable and incredibly insightful. Forget complex gauges or diagnostic tools – with a few readily available components and some straightforward steps, you can create your own digital dashboard.
Parts You’ll Need:
To embark on this project, gather the following components. These are easily sourced online and are quite budget-friendly:
- ELM327 Bluetooth OBD2 Adapter: This acts as the translator between your car’s diagnostic language and the Arduino. Look for a Bluetooth version for wireless connectivity. These are widely available on platforms like eBay or Amazon for around $5.
- Arduino Uno (or equivalent): The brain of your project. The Arduino will process the data from the OBD2 adapter and display it on the LCD. An Arduino Uno is a great starting point due to its simplicity and ample resources.
- HC-05 Bluetooth Module: This module enables wireless communication between the Arduino and the ELM327 adapter. It’s a common and inexpensive Bluetooth module perfect for this application.
- LCD I2C Display (16×2 recommended): This screen will display the coolant temperature readings. The I2C interface simplifies wiring by using only two data pins. A 16×2 LCD is a good size for displaying the temperature clearly.
Wiring It Up:
Connecting the components is relatively straightforward. Here’s how to wire everything together:
Arduino Uno Connections:
- HC-05 Bluetooth Module: Connect the HC-05’s TX pin to the Arduino’s RX pin and the HC-05’s RX pin to the Arduino’s TX pin. Remember to cross-connect TX and RX for serial communication. Also, connect the HC-05 to 5V and GND on the Arduino for power.
- LCD I2C Display: The I2C LCD display connects to the Arduino’s I2C pins. Connect the LCD’s SDA pin to the Arduino’s A4 pin (SDA) and the LCD’s SCL pin to the Arduino’s A5 pin (SCL). Power the LCD by connecting it to 5V and GND on the Arduino.
Configuring the HC-05 Bluetooth Module:
The HC-05 module needs to be configured as a master to connect with the ELM327 OBD2 adapter, which will act as a slave. This involves using AT commands.
Steps to Configure HC-05:
-
Enter AT Command Mode: Disconnect the HC-05 from the Arduino. Press and hold the small button on the HC-05 module while applying power (5V and GND). Release the button after powering up. The LED on the HC-05 should blink slowly (approximately every 2 seconds), indicating it’s in AT command mode.
-
Connect to Serial Monitor: Connect the HC-05 (still disconnected from Arduino TX/RX for programming) to a USB-to-serial adapter or use another Arduino as a passthrough. Open the Arduino Serial Monitor, select “No line ending” and set the baud rate to 38400 (or try 9600 if 38400 doesn’t work).
-
Issue AT Commands: Type the following AT commands one by one in the Serial Monitor and send them. You should receive “OK” as a response to most commands if successful.
AT+RESET
(Resets the module)AT+ORGL
(Restores to default settings)AT+ROLE=1
(Sets the HC-05 to Master mode)AT+CMODE=0
(Sets connection mode to connect to a specific address)AT+BIND=<ELM327 Bluetooth Address>
(Replace<ELM327 Bluetooth Address>
with your ELM327’s Bluetooth address. You can usually find this address by scanning for Bluetooth devices with your phone or computer when the ELM327 is plugged into your car. It’s often printed on the ELM327 device itself.) For example:AT+BIND=1234,56,789c72
AT+INIT
(Initializes the module for connection)AT+PAIR=<ELM327 Bluetooth Address>,20
(Pairs with the ELM327,,20
sets a 20-second timeout) Example:AT+PAIR=1234,56,789c72,20
AT+LINK=<ELM327 Bluetooth Address>
(Attempts to establish a connection to the ELM327) Example:AT+LINK=1234,56,789c72
Important Note: Disconnect the HC-05 module from the Arduino’s TX and RX pins when uploading new code to the Arduino to prevent communication conflicts during programming.
Setting Up the LCD I2C Display:
The I2C LCD simplifies the display setup significantly.
LCD I2C Connections:
As mentioned earlier, connect the LCD I2C module to the Arduino’s A4 (SDA) and A5 (SCL) pins, and provide 5V and GND.
Required Libraries:
To control the I2C LCD, you’ll need to install the LiquidCrystal_I2C
library in your Arduino IDE.
- Install LiquidCrystal_I2C Library: Open your Arduino IDE, go to “Sketch” -> “Include Library” -> “Manage Libraries…”. Search for “LiquidCrystal_I2C” by Francisco Malpartida and install the latest version.
Basic LCD Code:
You’ll need to include the necessary libraries in your Arduino code. Here’s a basic code snippet to initialize the LCD and display text. You’ll need to adapt this to read and display the coolant temperature data later.
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Set the LCD address to 0x3F for a 16x2 display
LiquidCrystal_I2C lcd(0x3F, 16, 2); // sometimes 0x27 address also works
void setup() {
lcd.init(); // Initialize the LCD
lcd.backlight(); // Turn on backlight
lcd.print("Coolant Temp:"); // Print initial message
}
void loop() {
// In the final code, coolant temperature reading and display logic will go here
delay(1000); // Example delay
}
Note on Wire.h Library: The Wire.h
library is essential for I2C communication and is usually included with the Arduino IDE. You shouldn’t need to manually copy it. The LiquidCrystal_I2C.h
library needs to be installed as described above.
This guide provides the foundational steps to get your Arduino Obd2 Lcd coolant temperature display project started. In the next steps, you will need to write the Arduino code to communicate with the ELM327 adapter via Bluetooth, send OBD2 commands to retrieve coolant temperature data, process this data, and display it on the LCD. Stay tuned for more advanced steps and code examples to complete your project!