For car enthusiasts and DIY electronics hobbyists, accessing vehicle data can unlock a world of interesting projects. This guide will walk you through creating a simple yet effective coolant temperature display using an Arduino, a Bluetooth OBDII adapter, and a few readily available components. This project allows you to wirelessly monitor your car’s coolant temperature, providing a real-time digital readout.
Parts You’ll Need
To get started, gather these components. They are all easily sourced online and are quite affordable, making this a budget-friendly project.
- ELM327 Bluetooth OBD2 Adapter: This is the interface to your car’s OBDII port. It translates the various vehicle communication protocols into a standard protocol that the Arduino can understand. Look for a Bluetooth version for wireless connectivity.
- Arduino Uno (or similar): The microcontroller brain of the project. The Arduino Uno is a popular and versatile choice, but other Arduino boards will also work.
- HC05 Bluetooth Module: This module enables Bluetooth communication between the Arduino and the ELM327 adapter. It will act as the master, connecting to the ELM327’s slave Bluetooth.
- LCD I2C Display: Provides a clear digital readout of the coolant temperature. The I2C interface simplifies wiring by only requiring two data wires (SDA and SCL).
Wiring the Components
Connecting the hardware is straightforward. Here’s how to wire up your Arduino:
HC05 Bluetooth Module:
- Connect the HC05 module’s VCC pin to the 5V pin on the Arduino.
- Connect the GND pin to the Arduino’s GND.
- Connect the HC05 TX pin to the Arduino’s RX pin.
- Connect the HC05 RX pin to the Arduino’s TX pin.
LCD I2C Display:
- Connect the LCD I2C module’s VCC pin to the 5V pin on the Arduino.
- Connect the GND pin to the Arduino’s GND.
- Connect the SDA pin to the Arduino’s SDA pin (A4 on Arduino Uno).
- Connect the SCL pin to the Arduino’s SCL pin (A5 on Arduino Uno).
Configuring the HC05 Bluetooth Module
The HC05 module needs to be configured to automatically connect to the ELM327 Bluetooth adapter. This involves using AT commands.
Entering AT Command Mode:
- Disconnect power to the HC05.
- Press and hold the small button on the HC05 module.
- While holding the button, reconnect power to the HC05.
- Release the button. The LED on the HC05 should blink slowly (approximately every 2 seconds), indicating it’s in AT command mode.
Sending AT Commands:
Use the Arduino Serial Monitor (or a terminal program) to send AT commands to the HC05. Ensure the baud rate in the Serial Monitor is set to 38400.
Here are the AT commands to configure the HC05 to connect to your ELM327 adapter. Replace 1234,56,789c72
with the Bluetooth address of your ELM327 adapter. You can usually find this address by scanning for Bluetooth devices with your phone or computer when the ELM327 is plugged into your car.
AT+RESET
(Resets the module)AT+ORGL
(Restores to default settings – optional but recommended for a clean start)AT+ROLE=1
(Sets the HC05 to Master mode, so it initiates the connection)AT+CMODE=0
(Sets connection mode to connect to a specific address)AT+BIND=1234,56,789c72
(Binds the HC05 to the ELM327’s Bluetooth address)AT+INIT
(Initializes Bluetooth)AT+PAIR=1234,56,789c72,20
(Pairs with the ELM327, 20 is timeout in seconds)AT+LINK=1234,56,789c72
(Attempts to establish the Bluetooth link)
Important Note: Disconnect the HC05 module from the Arduino’s TX and RX pins when uploading new code to the Arduino to avoid communication conflicts.
Setting up the LCD I2C Display
To use the LCD I2C display, you’ll need to include the necessary libraries in your Arduino IDE.
Required Libraries:
Wire.h
: This library is essential for I2C communication. It might already be included with your Arduino IDE, but ensure it’s present.LiquidCrystal_I2C.h
: This library simplifies controlling I2C LCD displays. You may need to download and install this library through the Arduino Library Manager (Sketch > Include Library > Manage Libraries…).
Library Installation Note: While Wire.h
is often found in the Arduino program files, sometimes you might need to ensure it’s correctly placed in your user’s Arduino library directory for the Arduino IDE to recognize it without issues.
Code Snippet for LCD Initialization:
Include these lines in your Arduino code to initialize the LCD:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F, 16, 2); // Set the LCD I2C address (0x3F is common, but check your module)
void setup() {
lcd.init(); // Initialize the LCD
lcd.backlight(); // Turn on backlight (optional)
lcd.print("Coolant Temp:");
}
void loop() {
// Code to read coolant temperature and display it will go here
}
Note: The I2C address 0x3F
is common for these displays, but it can vary. If your display doesn’t work, you might need to use an I2C scanner sketch to find the correct address for your specific LCD module.
With these steps completed, you have the foundation to build your Arduino Bluetooth Obdii coolant temperature display. The next step is to write the Arduino code to communicate with the ELM327, request coolant temperature data, and display it on the LCD. This project showcases how accessible and rewarding DIY car diagnostics can be using Arduino and Bluetooth technology.