Skip to content
My Account

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
HC-05 Bluetooth breakout board, top view
No ratings yet, be the first.

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.

Master and slave modes Unlike simpler Bluetooth modules that are slave-only, the HC-05 can also initiate connections.
Configurable via AT commands Change the name, pairing PIN, baud rate and role over a plain serial connection.
STATE shows connection status Goes high once paired and connected, handy for a status LED without polling.

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.

1. What you need An HC-05 breakout board, an Arduino or ESP32, and 4 jumper wires (VCC, GND, TX, RX).
2. Wire it up HC-05 TXD → microcontroller RX, HC-05 RXD → microcontroller TX (through a voltage divider if your board runs 5V logic).
3. Pair and connect Default pairing PIN is usually 1234 or 0000, look for a device named “HC-05” in your phone or computer’s Bluetooth settings.

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.

HC-05 bare module pinout diagram, 34 pins

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).

HC-05 dimensioned views: the bare 13 by 27 mm module with PCB antenna and 28 castellated pads, next to the common 15 by 37 mm breakout board with its 6-pin header and 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.
Advertisement

More guides

Keep building.

From ESP32 HomeKit accessories to Arduino and ATtiny reference guides, there’s more where this came from.

All guides