Even though Bluetooth Low Energy Modules available at a reasonable cost, most of these modules are not compatible with existing devices that support the classic Bluetooth. The HC-05 is an expensive module that is compatible with wide range of devices including smartphone, laptops and tablets. Adding a Bluetooth to Arduino can take your project to the next level. It opens up lots of possibilities for user interface (UI) and communication. The phone/tablet etc can act as an UI element or data logger and interpreter for your next project.

So let's get started , in the first part we will simply look at how easy it use the module with Arduino and transfer data to a Smart Phone. Later we will look at various configurations the HC-05 module like the device name, pass-code, modes of operations and all of that with the help of AT commands.Later we will also look at pairing to Bluetooth modules, configuring one as Master and other as Slave. You need not configure the module, if you simple want to use it.

HC-05 Basics

The Module:

dsc09412.jpg

The Pinout:

The module available at the EE Store has 6 pins as shown below: dsc09415.jpg

Pin Funtions

Pin Description
State can be connected to the Arduino Input in order to know the state of the connection. Paired or disconnected.
Rx Receive Pin of the module. It is recommended to use a voltage divider as shown in the hookup.
Tx Can be connected directly to the Arduino Rx Pin
GND connected to GND pin of Arduino
5v This breakout board has a internal 3.3v regulator on board.
EN Enables or Disables the module. Rarely Used.

Simple Data Transfer Example

We will start with a very simple example of establishing a serial connection between the HC-05 and the Smart Phone and send/receive message. You can take the example forward to control devices or log any data that you wish.

Hookup

We will use pins 10 and 11 of the Arduino to connect the HC-05 and use the SoftwareSerial library to communicate with the module. The Hardware serial port on arduino is used to send/receive messages from the computer to the Arduino.

The voltage divider on the Rx line of the module is recommended to ensure that module does not receive signals above 3.3v.

In a real application you might want to use the HW serial port itself to connect the Bluetooth module, if you need hardware interrupts.

Bluetooth HC-05 with Arduino bb.png

Code

This is probably the simplest code to test all the device that support the serial port communication. It simply connects the computer terminal and the HC-05 in a loop. The codes sends the messages from the terminal to the Bluetooth Module and messages from the Bluetooth module to the terminal.

#include <SoftwareSerial.h>
SoftwareSerial EEBlue(10, 11); // RX | TX
void setup()
{
 
  Serial.begin(9600);
  EEBlue.begin(9600);  //Default Baud for comm, it may be different for your Module. 
  Serial.println("The bluetooth gates are open.\n Connect to HC-05 from any other bluetooth device with 1234 as pairing key!.");
 
}
 
void loop()
{
 
  // Feed any data from bluetooth to Terminal.
  if (EEBlue.available())
    Serial.write(EEBlue.read());
 
  // Feed all data from termial to bluetooth
  if (Serial.available())
    EEBlue.write(Serial.read());
}

Demo

There are numerous Android apps to connect your phone the blue-tooth Module. I used the Bluetooth Terminal to connect it to the HC-05.

Bt 1.png

The output as seen on the Arduino Terminal. This way we have established a blue-tooth link to send messages form the phone to the Arduino with HC-05.


HC 05 output.JPG

Configuring with AT Commands

AT command Mode

Setting up Device Name and Pass key

Other Important Commands

Pairing Bluetooth Modules

Resources

References and Credits