The HC-06 is a popular Bluetooth module that requires a 3.3 V supply internally and is commonly sold on a small adapter board with a voltage regulator, status LED and level-adaptation components for easier use with 5 V logic platforms such as Arduino.

This guide focuses on the HC-06 adapter-board version. It is a simple and inexpensive way to add Bluetooth serial communication to your own application.

Technical Specifications

Supply voltage3.6 to 6 V on the adapter board
Current draw30 to 40 mA, about 10 mA when paired
CommunicationUART, RX and TX lines
Supported baud rates1200 to 1382400 bps
PowerClass 2, about 4 dBm / 2.5 mW
RangeAbout 10 m
ConfigurationAT commands
Operating modeSLAVE only
Bluetooth specificationv2.0 + EDR

Use Cases

The module is suitable when an Arduino-based or similar device needs to communicate with a mobile phone or PC. It cannot create a wireless bridge between two HC-06 modules because it supports only SLAVE mode. For Bluetooth-to-Bluetooth bridges, use a module that supports MASTER mode, such as HC-05.

Connecting the Module

HC-06 Bluetooth module connected to Arduino Nano
Example connection of the HC-06 module to Arduino Nano.

The module connects to any UART interface using crossed TX/RX lines: Arduino TX goes to module RX and Arduino RX goes to module TX. The resistor divider shown in the diagram is often not required, but it is recommended when using Arduino boards where the UART lines are shared with an onboard USB converter.

Configuration

The HC-06 is configured using AT commands. The usual default baud rate is 9600 bps and the default pairing PIN is 1234. Configuration is done only through the UART interface, so a USB/TTL converter is required.

HC-06 connected through USB TTL converter
HC-06 configuration through a USB/TTL converter.

After connecting the converter to the PC, find the assigned COM port in Device Manager and open it in a serial terminal. For current use, Sakul Serial Terminal (SST) is a suitable tool.

COM port selection in Windows
USB/TTL converter COM port in Windows Device Manager.

Set the baud rate to 9600 bps and send AT. The module should reply with OK. Unlike some other modules, HC-06 commands are sent without CR/LF line ending characters.

Serial terminal with AT commands
Serial terminal with predefined AT commands.

Important AT Commands

AT+BAUD sets the UART speed. Values range from AT+BAUD1 for 1200 bps to AT+BAUDC for 1382400 bps. After changing the speed, update the terminal baud rate as well.

AT+NAME sets the Bluetooth name, for example AT+NAMEsakul-BT.

AT+PIN sets the four-digit pairing PIN, for example AT+PIN1111. The default PIN is 1234.

AT+VERSION prints the firmware version. The sample module used linvorV1.8.

Conclusion

The HC-06 is mainly useful for connecting your application to a PC or mobile phone. The standalone module can be embedded directly into a device, but its supply voltage must not exceed 4 V and UART logic is 3.3 V. For experiments and prototypes, the adapter-board version is usually more convenient.

Standalone HC-06 Bluetooth module
Standalone HC-06 module without adapter board.

Documentation

A documentation package for the HC-06 module is available for download.

Useful Links