THE HC-05 BLUETOOTH MODULE PINOUT

The HC-05 Bluetooth module is one of the most widely used serial communication modules for microcontroller-based projects. Designed for versatility, it supports both master and slave modes, making it a reliable and flexible choice for wireless communication. Whether you’re building a remote control, a wireless sensor network, or a Bluetooth interface for your Arduino, the HC-05 has you covered. In this guide, you’ll learn everything about the HC-05 pinout.

What is the HC-05?

Bluetooth Serial Module
The HC-05 is a serial Bluetooth module developed for transparent wireless serial communication. It acts as a cable replacement, enabling microcontrollers to send and receive data wirelessly over Bluetooth using UART.

Bare Module vs Breakout Module
The HC-05 is available in two formats: the bare module, which exposes all 34 I/O pins for integration into custom PCB designs, and the breakout board, which simplifies connectivity with standard 6 or 8-pin headers, making it ideal for prototyping with Arduino or ESP32 boards.

Designed for Communication and Control

The HC-05 offers a robust set of features that make it ideal for embedded Bluetooth communication:

  • Bluetooth v2.0+EDR (Enhanced Data Rate)
  • UART (3.3V TTL)
  • Master and Slave Mode support
  • Configurable via AT commands
  • Baud rates up to 138240bps
  • Onboard LED indicators
  • 3.3V operation (some breakout boards support 5V)
  • Range: Up to 10 meters (unobstructed)

With these capabilities, the HC-05 is perfectly suited for DIY automation, robotics, wireless data exchange, and Bluetooth-connected peripherals.

** The HC-05 pinout is available for download at the end of this post in high resolution – for free!

HC-05 Bare Module – GPIO Fundamentals

The bare HC-05 module exposes all 34 pins and provides maximum control for developers. While only a subset of these pins is commonly used, knowing their function can help unlock the full potential of the module.

Core UART Communication

  • TXD – Transmit Data
    Sends serial data from HC-05 to the microcontroller.
  • RXD – Receive Data
    Receives serial data from the microcontroller.
  • CTS / RTS – Flow Control
    Hardware UART flow control (optional but useful for stable high-speed communication).

PCM Audio Interface (Advanced)

  • PCM_CLK, PCM_OUT, PCM_IN, PCM_SYNC
    Support Pulse Code Modulation for audio data. Rarely used in DIY projects, but essential in voice transmission applications.

General Purpose Analog I/O

  • AIO0, AIO1
    Programmable analog pins for special use cases.

Programmable Digital I/O (PIO)

  • PIO0 – PIO11
    Multifunction pins used for device status, user-defined I/O, or internal functions like LED indicators and the AT mode trigger.
    • PIO8 / PIO9 – Typically control status LEDs
    • PIO11 – Connected to the KEY input to toggle AT mode

Power & Reset

  • VCC – 3.3V power input
  • GND – Ground
  • RESET – Active low; resets the module
  • 1V8 – 1.8V output from internal regulator (for reference use only)

USB and SPI Interface

  • USB_D+ / USB_D- – For direct USB interfacing (rarely used without custom drivers)
  • SPI_CSB, MOSI, MISO, CLK – Expose the internal SPI interface, primarily for factory programming

Quick Reference Table – HC-05 Bare Module Pinout

PinNameFunctionNotes
1TXDUART Data OutputConnects to RX of microcontroller
2RXDUART Data InputConnects to TX of microcontroller
3CTSUART Clear to SendOptional
4RTSUART Request to SendOptional
5PCM_CLKPCM ClockFor audio applications
6PCM_OUTPCM Audio Output
7PCM_INPCM Audio Input
8PCM_SYNCPCM Sync Signal
9AIO0Analog Input/OutputUser-defined
10AIO1Analog Input/OutputUser-defined
11RESETReset Input (Active Low)Resets the module
12VCCPower Supply (3.3V)Use 3.3V only
13GNDGround
141V81.8V Regulator OutputNot for powering external devices
15USB_D-USB Data MinusAdvanced use
16SPI_CSBSPI Chip SelectFactory programming
17SPI_MOSISPI Data In
18SPI_MISOSPI Data Out
19SPI_CLKSPI Clock
20USB_D+USB Data PlusAdvanced use
21–22GNDAdditional Grounds
23–34PIO0–PIO11Programmable I/OIncludes KEY input (PIO11)

HC-05 Breakout Module – Simplified Pinout

For beginners or rapid prototyping, the breakout module simplifies things by exposing only essential pins via a standard 6- or 8-pin header.

PinNameDescription
1EN / KEYEnter AT Command Mode — pull HIGH during power-up
2VCC5V or 3.3V input depending on board design (check carefully)
3GNDGround connection
4TXDData output to Arduino/ESP (connect to RX)
5RXDData input from Arduino/ESP (connect to TX)
6STATEHigh when connected to a Bluetooth device, Low when disconnected

⚠️ NOTE: RXD is not 5V-tolerant on most modules. Use a voltage divider or logic level shifter when using 5V boards like Arduino Uno.

AT Command Mode

AT command mode allows configuration of the HC-05 — baud rate, device name, master/slave mode, and more.

  • Activate AT Mode: Hold KEY pin HIGH while powering the module.
  • Exit AT Mode: Power cycle the module without holding KEY.

AT commands are sent over the serial connection. Ensure correct baud rate (usually 38400 for AT mode).

Typical Applications

  • Wireless Serial Communication: Replace wired UART links with wireless ones.
  • Home Automation Projects: Control relays or devices via Bluetooth apps.
  • Custom IoT Interfaces: Use the HC-05 as a simple interface between sensors and a phone.
  • Robotics: Remote control of motors or direction via Bluetooth gamepads or apps.

Best Practices and Common Mistakes

To get the most out of your HC-05 module:

  • Don’t connect RX directly to 5V logic without a level shifter.
  • Use EN/KEY correctly to toggle AT mode.
  • Avoid exceeding 3.3V on bare modules.
  • Check LED blink patterns for connection status.
  • Use debounce logic when driving the HC-05 from buttons.

Programming the HC-05

Unlike the ESP32, the HC-05 is not programmed with code — it is configured using AT commands via a serial terminal.

Common Tools:

  • Arduino IDE Serial Monitor
  • TeraTerm / PuTTY
  • Serial Bluetooth Terminal (Android)

Basic Setup:

  1. Connect RX, TX, VCC, GND to your microcontroller.
  2. Use a serial terminal to send AT commands.
  3. Configure baud rate, device name, and pairing mode.

Conclusion: Simple, Reliable, Wireless

The HC-05 is a classic Bluetooth module that continues to power thousands of wireless microcontroller projects worldwide. Its blend of simplicity and versatility makes it ideal for both beginners and experienced developers. Whether you’re prototyping with Arduino or integrating into a custom board, understanding the pinout of the HC-05 unlocks a world of wireless potential.

Download the HC-05 pinout here in high resolution – for free*!

Free to use under the MIT license — attribution is required.

Scroll to Top