HC-05 Bluetooth Module
Classic Bluetooth serial module supporting both master and slave modes — great for wireless UART links.
A classic Bluetooth SPP module that can act as either master or slave, widely used for wireless serial links to phones and PCs. The HC-05 implements the Bluetooth Serial Port Profile (SPP), essentially turning a Bluetooth connection into a transparent wireless replacement for a wired UART cable — pair it with a phone or PC, and any bytes sent to its RX pin appear on the other device's Bluetooth serial terminal and vice versa, making it the long-standing default for wireless Arduino projects, Bluetooth-controlled robots, and simple phone-app-to-microcontroller links.
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 | Configurable as master or slave via AT commands — HC-06 (a related module) is slave-only |
| Range | ~10m typical (Class 2 Bluetooth radio) |
| Profile | Serial Port Profile (SPP) — transparent wireless UART bridge |
| Default baud rate | 9600 baud in data mode (configurable via AT commands in command mode) |
| Interface | UART (TX/RX) to the host microcontroller |
Pinout
| Pin | Name | Description |
|---|---|---|
| 1 | VCC | Power, 3.6-6V DC (breakout boards regulate down to the 3.3V logic level internally) |
| 2 | GND | Ground |
| 3 | TX | UART transmit — connect to microcontroller RX |
| 4 | RX | UART receive — connect to microcontroller TX (3.3V logic, use a voltage divider from 5V boards) |
| 5 | KEY / EN (AT mode) | Pulling HIGH (often before power-up) puts the module into AT command configuration mode instead of normal data mode |
| 6 | STATE | Indicates connection status — HIGH when a Bluetooth link is actively connected |
The HC-05's RX pin is 3.3V logic and not reliably 5V-tolerant on most boards, so a voltage divider or logic-level shifter should be used when connecting to a 5V Arduino's TX pin to avoid long-term damage. To reconfigure settings (name, pairing PIN, baud rate, master/slave role) via AT commands, the KEY/EN pin typically needs to be held HIGH during power-up to enter command mode rather than normal transparent data mode.
Variants
Choose the HC-05 when the project needs to actively initiate a Bluetooth connection (master mode) — for example, connecting to another Bluetooth serial device without a phone in the loop. If the module will only ever be connected to (like a phone pairing to it), the cheaper slave-only HC-06 is sufficient; for iOS compatibility or modern BLE-based mobile apps, look at an HM-10 style BLE module instead since HC-05/06 are Classic Bluetooth only and not supported by iOS apps.
| Variant | Temp range | Hum range | Accuracy | Protocol | Price |
|---|---|---|---|---|---|
| HC-05 (master/slave configurable) | ~$3-6 | ||||
| HC-06 (slave only) | ~$2-4 | ||||
| HM-10 / generic BLE module | ~$3-6 |