Setting up & checking a Bluetooth HC-06 Module

Before building the final dropController it may be a good idea to check and setup the Bluetooth module. Either a HC-05 or HC-06 can be used but the HC-06 is slightly easier to use. The HC-06 is a slave only device and the HC-05 is master or slave.

I am using a HC-06 on a zs-040 breakout board with a Waven/HC Bluetooth module (these are the official HC modules and have version hc01.comV2.0 firmware.
Official HC HC-06s have the HC logo just under the antenna and the newer boards have a blue LED at the top left.

There are a few similar modules that look the same but can have different firmwares. For the most part all are the same when used with the dropController.



First build a basic circuit connecting the HC-06 to the Arduino. The two main connections are:
– Arduino RX/D18 to HC-06 TX
– Arduino TX/D19 to HC-06 RX via a voltage divider

The HC-06 RX pin is 3.3v. The Arduino TX pin is 5V. The voltage divider brings the Arduinos 5V down to 3.3V.
The Arduino sees 3.3V as HIGH so we can connect the HC-06 TX pin directly to the Arduino RX pin.



You can setup the Bluetooth module using a finished dropController. Just upload the serial pass through sketch and follow the below.

The first thing to do is to power on the Bluetooth module and see if you can connect to it. For this you need an Android device.

With the Bluetooth module powered and the LED(s) blinking, on the Android device go to Settings => Connections => Bluetooth and scan for Bluetooth devices.
Here the phone has found the HC-06. You may have a different name including ? or ???? if you bought your module from China.

Tap the HC-06 label, you should be asked for the PIN, this is Normally 1234 so enter 1234 and click OK.

Pairing with the HC-06 confirms it is working and that we can communicate with it.


Serial pass through sketch

Next we can try to talk to the module, for this we use a serial pass through sketch. The following assumes the module has a default baud rate of 9600. This is the speed almost all HC-06 have when you first purchase them.

char c;
#include <SoftwareSerial.h> 
SoftwareSerial BTserial(18, 19); // RX, TX
//D18 is A4
//D19 is A5
void setup() 
     Serial.println("Serial started at 9600");
     Serial.println("BTserial started at 9600");
void loop() 
    if (Serial.available() > 0) 
       c =;
    if (BTserial.available() > 0) 
       c =;

This is a fairly simple sketch. It opens the hardware serial and a software serial at 9600 bps. It then waits for serial data. When it fit gets input from the Hardware serial (via the serial monitor) it sends the data to the Bluetooth module and when it gets data from the Bluetooth module it sends it to the serial monitor.

Upload the sketch and open the serial monitor. Set the baud rate to 9600 and line endings to “No line ending”. You should see the welcome message.

The HC-06 should be on and the LED(s) blinking.

In the serial monitor enter “AT” and click send. You should get an “OK” in reply.
If you do not get the OK, check the connections. If this does not work try adding line endings. If this does not work have a look at I have various guides on different Bluetooth modules there.

If you did get the OK the next step is to rename the module. This is done with the the “AT+NAMEname” command.
In the serial monitor enter AT+NAMEdropController and click send.
You should get a “OKsetname” rep[ly. This means the re=name was successful.

Wait a few seconds and cycle the power on the HC-06. Back on the Android device search for Bluetooth devices and you should see a new entry called dropController. Depending on your actual Android device and the version of Android running you may need to repair with the Bluetooth module.

Done. You have confirmed the Bluetooth module is working and renamed it to dropController.