Guide
HC-05 Bluetooth Module Pinout
The complete pin reference for the HC-05: a UART-to-Bluetooth bridge available as a bare 34-pin module or a simple 6-pin breakout board.
- Bluetooth v2.0+EDR
- UART, 3.3V TTL
- Master + Slave modes
- Up to 138,240 bps
Overview
The HC-05 is a serial Bluetooth module built for transparent wireless serial communication, it acts as a cable replacement, letting a microcontroller send and receive data over Bluetooth using plain UART. It comes in two formats: the bare module, exposing all 34 pins for custom PCB designs, and the breakout board, which simplifies things down to 6 pins for prototyping.
Getting started
Check your specific breakout board’s VCC rating before powering it, some accept 5V thanks to an onboard regulator, others need 3.3V directly onto the bare module.
Hello World: talk to it over serial
The HC-05 equivalent of “Hello World”: send AT commands over a software serial port and read the module’s replies. Hold EN/KEY high while powering on to enter AT command mode first.
#include <SoftwareSerial.h>
SoftwareSerial bt(2, 3); // RX, TX
void setup() {
Serial.begin(9600);
bt.begin(38400); // AT command mode baud rate bt.println("AT");
}
void loop() {
if (bt.available()) Serial.write(bt.read());
if (Serial.available()) bt.write(Serial.read());
}
Open the Serial Monitor at 9600 baud, you should see “OK” back from the module. AT command mode uses 38400 baud by default, normal communication mode uses whatever baud rate you last configured (9600 out of the box).
Breakout board pins
The 6 pins exposed on almost every HC-05 breakout board, this is what most people actually wire up.
| Pin | Name | Description |
|---|---|---|
| 1 | EN / KEY | Enter AT command mode, pull HIGH during power-up |
| 2 | VCC | 5V or 3.3V input depending on board design, check carefully |
| 3 | GND | Ground connection |
| 4 | TXD | Data output to Arduino/ESP32 (connect to RX) |
| 5 | RXD | Data input from Arduino/ESP32 (connect to TX) |
| 6 | STATE | High when connected to a Bluetooth device, low when disconnected |
Bare module pinout diagram
For anyone designing their own PCB around the bare 34-pin module rather than using a breakout board.
Dimensions
The bare module (13 by 27 mm, 28 castellated pads at 1.27 mm pitch) alongside the common breakout board it usually ships on (15 by 37 mm, 6-pin header at 2.54 mm pitch, with the onboard pairing button).
34-pin reference
Most projects only ever need the 6 breakout pins above, this table is for the bare module.
| Pin | Name | Function |
|---|---|---|
| 1 | TXD | UART data output, connects to RX of microcontroller |
| 2 | RXD | UART data input, connects to TX of microcontroller |
| 3 | CTS | UART clear to send, optional |
| 4 | RTS | UART request to send, optional |
| 5–8 | PCM_CLK / OUT / IN / SYNC | PCM audio interface, advanced use |
| 9–10 | AIO0 / AIO1 | Analog input/output, user-defined |
| 11 | RESET | Reset input, active low |
| 12 | VCC | Power supply, 3.3V only |
| 13 | GND | Ground |
| 14 | 1V8 | Internal 1.8V regulator output, not for powering external devices |
| 15, 20 | USB D−, USB D+ | Advanced use |
| 16–19 | SPI_CSB / MOSI / MISO / CLK | Factory programming interface |
| 21–22 | GND | Additional grounds |
| 23–34 | PIO0–PIO11 | Programmable I/O, includes KEY input on PIO11 |
Safety notes
Before you wire anything up
- The bare module’s logic is 3.3V, a 5V signal into RXD without a divider can damage it, check whether your specific breakout already includes level shifting.
- Pin 14 (1V8) is an internal regulator output, not a power input, never connect anything to it expecting to power the module.
- Hold EN/KEY high only while entering AT command mode, leaving it high during normal use prevents Bluetooth connections.
More guides
Keep building.
From ESP32 HomeKit accessories to Arduino and ATtiny reference guides, there’s more where this came from.
All guides