Arduino and Bluetooth

China’s Bluetooth Serail modules are very cheap: 3-5$ per module. You can find them on eBay or AliExpress: Bluetooth RS232, Bluetooth Serial, HC-03, HC-04, HC-05, HC-06.

arduino4-1

Most modules use a chip BC417 and Flash memory. Specification:
CSR chip: Bluetooth v2.0
Wave band: 2.4GHz-2.8GHz, ISM Band
Protocol: Bluetooth V2.0
Voltage: 3.3 (2.7V-4.2V)
Current: Paring – 35mA, Connected – 8mA

The command set of HC-03 and HC-05 are more flexible than HC-04 and HC-06 modules.

We’ll be working with the module HC-06. Circuit diagram:

arduino4-2

HC-04/HC-06 pins:
UART_TX (pin 1), UART_RX (pin 2), UART_CTS (pin 3), UART_RTS (pin 4) – UART.
3,3V (pin 12) – Power 3.3V.
GND (pin 13) – GND.
PIO1 (pin 24) – LED working mode indicator

HC-03/HC-05 pins:
UART_TX (pin 1), UART_RX (pin 2), UART_CTS (pin 3), UART_RTS (pin 4) – UART.
PIO8 (pin 31) – LED1 working mode indicator.
PIO9 (pin 32) – LED2. Before paired, it output low level. Once the pair is finished, it output high level.
PIO11 (pin 34) – KEY. Mode switch input. If it is input low level, the module is at paired or communication mode. If
it’s input high level, the module will enter to AT mode.

See PDF documentation: HC Serial Bluetooth Products 201104

arduino4-3

We will connect the Bluetooth module HC-06 to the Arduino Nano V3:
3.3V Arduino pin – to 12 pin HC-06 Bluetooth module
GND Arduino pin – to 13 pin HC-06 Bluetooth module
TX Arduino pin – to 2 pin HC-06 Bluetooth module (RX)
RX Arduino pin – to 1 pin HC-06 Bluetooth module (TX)

http://cxem.net

Transfer data from the Arduino via Bluetooth

Program to send data from the Bluetooth module to the computer

int cnt = 0;    // Counter

 void setup() {
   Serial.begin(9600);   // Initialization
 }

 void loop() {
   cnt++;
   Serial.print("Hello BB from Arduino! Counter:");  // print message
   Serial.println(cnt);    // print counter
   delay(1000);   // wait 1 sec
 }

arduino4-5

On PC, I use cheapest Bluetooth USB Adapter. After power on, you will be prompted to enter your Bluetooth devices pairing code/password. The default for most Bluetooth devices is 1234. If the pairing is successful, you will see a message.

Now the Bluetooth device and PC are connected.

arduino4-8

To view the received data we need a Terminal on PC. I use the Tera Term. After starting the program, select the virtual COM-port of the PC Bluetooth device.

You will see counter from Arduino:

arduino4-6

Bi-directional communication between PC and Arduino via Bluetooth

To the diagram, I added the LED connecting it to the 12 pin Arduino, via current-limiting resistor. But you can use build-in LED (13 pin). Our program is very simple:

char incomingByte;  // incoming data
int  LED = 12;      // LED pin

void setup() {
  Serial.begin(9600); // initialization
  pinMode(LED, OUTPUT);
  Serial.println("Press 1 to LED ON or 0 to LED OFF...");
}

void loop() {
  if (Serial.available() > 0) {  // if the data came
    incomingByte = Serial.read(); // read byte
    if(incomingByte == '0') {
       digitalWrite(LED, LOW);  // if 1, switch LED Off
       Serial.println("LED OFF. Press 1 to LED ON!");  // print message
    }
    if(incomingByte == '1') {
       digitalWrite(LED, HIGH); // if 0, switch LED on
       Serial.println("LED ON. Press 0 to LED OFF!");
    }
  }
}

See screenshot:

arduino4-7

Video:

Android

To work with the Android you will need program: Bluetooth Terminal. Click in menu “Connect a device – Secure” and select our device “BOLUTEK”. See video:

Download source code for Arduino

18 thoughts on “Arduino and Bluetooth”

  1. I was having an issue with getting data from HC-05 TX to Arduino RX and I added a 2.2K resistor from the HC-05 TX pin to GND to fix it.

  2. I want to connect HC06 to a PC with FTDI cable (usb=>serial). The FTDI power is 3.3v but TX/RX is 5v. Anything needed on TX or RX so communications would work?

  3. Hi, I can’t get my HC-05 to respond in AT mode. I pull pin 11 high, wait 1 sec, send Serial.println(‘AT+STATE?’);
    My SerialEvent doesn’t fire off.
    I’ve tested the HC-05 with sending and receiving data and it works fine, just the AT commands in software don’t seem to get response.
    Any ideas?

  4. Hi,
    I am using the same module.I am able to detect the chip using bluetooth present in a laptop and also able to pair it.but when I try to configure the chip to change the name etc using AT commands at the hyperterminal.It doesnt give any response.Pls help

  5. Hi,
    We are using HC-05 low cost bluetooth module for our project but finding difficult in configuring the module at the hyperterminal. its not giving any response for the AT commands to change name ,password etc.we tried using the TTL to RS232 convertor also but it dint work out.the module is getting detected and paired by its default password and name.Please help

  6. I try both examples (“Transfer data from the Arduino via Bluetooth” & “Bi-directional communication between PC and Arduino via Bluetooth”) and I must use first IVT BlueSoleil for connect my “linvor” with PC then TERA TEMP VT for control… thanks for the info

  7. Hi all,

    I am having trouble with the code. Similar to some other viewers, arduino does not react to the BT signal sent from PC. Details as follow:

    1) Configurated arduino as discribed, but didn’t work.
    2) Initial thought a problem with BT module, so modified code as follow
    (if (Serial.available() > 0) { // if the data came
    incomingByte = Serial.read(); // read byte
    Serial.println(“incomingByte”);
    When ANY BUTTON (not just 1 or 0), Tera Term VT screen show messages like “225” (max) or “221” or “190”…

    Can anyone please advise? had been struggling on it for some time. Many thanks.

  8. oh je…
    on Mega work HC-06 ferfect
    RX1 and RX2 and RX3 and
    TX1 and TX2 and TX3 and TX
    on Nano work HC-06 only TX (TXD0) vor read.
    RX is connected to the ATMega and used for USB program and communicating with it.

  9. Hello
    I have implemented your project using Arduino UNO and RN41 bluetooth module. My Pc is able to see the device and to add it, but on Tera Term appears nothing. I tryed to change the baud rate, but the result is the same. I’m able only to read “Hello BB from Arduino! Counter: 1” using the terminal monitor on the serial port of Arduino. Can you help me? Thanks!

  10. Hello, thanks for the tutorial.

    I’m looking for a code, where to approach the object as a drawer with electronic lock, unlock it, and get away it locks, closes. To the distance of one meter. (Could be a drawer with documents or money) one touch alarm when someone tries to open it, he would have accelerometer. a circuit with a bluetooth and accelerometer and alarm on my cell phone I would receive the warning via bluetooth that someone moved in my drawer and with that android phone, I approached me her, she unlocks and I away from me more than a meter, she hangs closes.

    Could you help me with the code? I pay? please!

Leave a Reply

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