Bluetooth
Interfacing HC 06 Bluetooth with Arduino Uno
What is the HC 06?
HC 06 practical reference
A slave-only Bluetooth serial module — simpler and cheaper than the HC-05 for projects that only need to be connected to, not initiate connections. Like the HC-05, the HC-06 implements the Bluetooth Serial Port Profile (SPP), transparently forwarding UART bytes over a Bluetooth link, but it's factory-locked to slave mode only, meaning it can be discovered and connected to by a phone or PC but can't initiate a connection to another Bluetooth device itself — a perfectly good tradeoff for the very common case of a phone app talking to an Arduino project.
Key specifications
- Bluetooth version: Bluetooth 2.0 + EDR (Classic Bluetooth, not BLE)
- Operating voltage: 3.3V DC logic (module often includes an onboard regulator accepting 3.6V-6V supply)
- Operating current: ~30-40 mA typical during active connection
- Role support: Slave mode only — cannot initiate connections to other Bluetooth devices, only accepts incoming pairing requests
- Range: ~10m typical (Class 2 Bluetooth radio)
- Profile: Serial Port Profile (SPP) — transparent wireless UART bridge
- Default baud rate: 9600 baud (some AT-command configuration available, more limited than the HC-05's command set)
- Interface: UART (TX/RX) to the host microcontroller
Pinout and connection notes
The HC-06's RX pin is 3.3V logic, so use a voltage divider or level shifter when wiring to a 5V Arduino's TX pin. Because it lacks a KEY/EN pin for entering a distinct command mode like the HC-05, its AT command set for renaming or changing the pairing PIN is typically issued directly over the same UART connection while unpaired — check your specific module's documentation for the exact procedure.
- VCC: Power, 3.6-6V DC (breakout boards regulate down to the 3.3V logic level internally)
- GND: Ground
- TX: UART transmit — connect to microcontroller RX
- RX: UART receive — connect to microcontroller TX (3.3V logic, use a voltage divider from 5V boards)
- STATE: Indicates connection status on some breakout variants — HIGH when a Bluetooth link is actively connected
Integration checklist
- Confirm the exact part number and breakout-board revision.
- Verify supply voltage, current demand, logic levels, and signal direction against the datasheet.
- Check controller pin assignments and bus address or interface mode against the example code.
- Power up with external loads disconnected, then test signals before full integration.
- If readings or communication fail, check power and ground first, then pin mapping, interface settings, and library initialization.
Troubleshooting and reproducibility
Record the board used, wiring, library/version, supply arrangement, and measured behavior. Use the selected board-specific wiring example as the source of truth. Never assume visually similar modules share identical voltage tolerance or pin order.
Setting Up HC 06 with Arduino Uno
Library
SoftwareSerial by Arduino core
Built into the Arduino core — no install needed, just #include <SoftwareSerial.h>.
Wiring
| Component pin | Arduino Uno pin | Note |
|---|---|---|
| VCC | 5V | |
| GND | GND | |
| TXD | D2 (RX) | Module TX → Arduino RX, direct connection is fine. |
| RXD | D3 (TX) via divider | HC-06 RXD is 3.3V logic — use a voltage divider (e.g. 1kΩ/2kΩ) from the Arduino's 5V TX line. |
Swipe sideways to see every column →
- Unlike the HC-05, the HC-06 is slave-only — it can be connected to from a phone/PC, but it cannot initiate a connection to another Bluetooth device itself.
- The RXD pin is 3.3V logic and not reliably 5V-tolerant on every clone board — a simple resistor divider on the Arduino TX → module RXD line protects it; skipping this sometimes works on tolerant clones but is not something to rely on.
- Default baud is usually 9600, but some pre-paired/relabelled modules ship reconfigured to a different rate — if you see garbage characters, that is the first thing to check.
Related Components
CC2530
Mesh-networking Zigbee radio module for home-automation sensors.
ESP 01
Minimal ESP8266 breakout for adding Wi-Fi to any microcontroller.
ESP8266 Module
General-purpose ESP8266 breakout with more accessible GPIO.
HC-05 Bluetooth Module
Add Bluetooth Classic serial communication to Arduino projects with a UART connection, safe logic levels, and a practical pairing workflow.
Related Guides & Projects
Arduino Uno R4 Minima Pinout: Every GPIO, ADC, DAC, and Op-Amp Pin Explained
A complete Arduino Uno R4 Minima pinout reference — digital I/O, ADC, DAC, op-amp, CAN, dual UART, and exactly what it leaves out compared to the WiFi variant.
Mastering PWM on Arduino: Dimming LEDs and Controlling Motors
Understand what PWM actually is on Arduino, dim an LED smoothly, and safely control a DC motor's speed with a driver chip -- plus the mistakes (like wiring a motor straight to a pin) that damage boards.
4-Digit 7-Segment Counter with TM1637 & Arduino
Drive a TM1637-based 4-digit 7-segment display with Arduino Uno to show a real-time up/down counter, elapsed timer, and scrolling text. Covers library setup, brightness control, and custom segment mapping.
Arduino Uno R4 Minima vs WiFi: Which One Should You Choose?
Same processor, same memory, different price. Here's what the WiFi variant's extra hardware actually gets you, and when the Minima is the smarter buy.