Bluetooth Communication with Arduino

Difficulty Level: Intermediate

In this project, we will set up Bluetooth communication between an Arduino and a smartphone (or another Bluetooth-enabled device) using the HC-05 Bluetooth module. The setup can be expanded to control devices, send data, or monitor sensor readings wirelessly.

Components Required

Wiring the Circuit

Connect the HC-05 Bluetooth module to the Arduino as follows:

Optionally, you can connect an LED to pin 13 of the Arduino with a 220Ω resistor to test communication.

Installing Libraries

For Bluetooth communication, we will use the SoftwareSerial library to enable serial communication on digital pins of the Arduino.

Arduino Code

The Arduino sketch below sets up a basic Bluetooth communication system where messages sent from the Bluetooth terminal app will control an LED:


#include 

// Create a SoftwareSerial object for HC-05
SoftwareSerial BTSerial(10, 11); // RX, TX

char data; // Variable to store received data

void setup() {
  // Start serial communication with Arduino and HC-05
  Serial.begin(9600);
  BTSerial.begin(9600);
  
  // Set pin 13 as output (for controlling LED)
  pinMode(13, OUTPUT);
  
  Serial.println("Waiting for Bluetooth input...");
}

void loop() {
  // Check if data is received from the Bluetooth module
  if (BTSerial.available()) {
    data = BTSerial.read(); // Read the incoming data
    Serial.print("Received: ");
    Serial.println(data);
    
    // Control LED based on received data
    if (data == '1') {
      digitalWrite(13, HIGH); // Turn on LED
      Serial.println("LED ON");
      BTSerial.println("LED ON");
    } else if (data == '0') {
      digitalWrite(13, LOW); // Turn off LED
      Serial.println("LED OFF");
      BTSerial.println("LED OFF");
    }
  }
}
        

How the Code Works

Bluetooth Terminal App

To communicate with the Arduino over Bluetooth, install a Bluetooth terminal app on your smartphone (e.g., "Bluetooth Terminal" on Android or "Bluetooth Serial" on iOS).

  1. Open the app and pair it with the HC-05 module (default PIN is usually 1234 or 0000).
  2. Once paired, open the terminal screen and send '1' to turn the LED on, and '0' to turn it off.

Testing the Setup

Once the wiring is complete and the code is uploaded, follow these steps:

Expanding the Project

This basic setup can be expanded to control more complex systems such as motors, home appliances, or other devices. You can also modify the code to send sensor data from the Arduino to the smartphone for wireless monitoring.

Conclusion

In this project, we have established basic communication between an Arduino and a smartphone using Bluetooth. The HC-05 Bluetooth module makes it easy to add wireless functionality to your projects, enabling you to control devices or receive data remotely.