

The HC-05 Bluetooth Module is a wireless communication module designed for short-range data transfer using Bluetooth technology. It is widely used in embedded systems, IoT projects, and robotics to enable seamless communication between devices. The module supports both master and slave modes, making it versatile for various applications.








The HC-05 module is a robust and easy-to-use Bluetooth device. Below are its key technical details:
| Parameter | Specification |
|---|---|
| Bluetooth Version | 2.0 + EDR (Enhanced Data Rate) |
| Operating Voltage | 3.3V to 5V |
| Operating Current | 30mA (typical) |
| Communication Range | Up to 10 meters (unobstructed) |
| Baud Rate (Default) | 9600 bps |
| Modes | Master and Slave |
| Frequency Band | 2.4 GHz ISM band |
| Dimensions | 37.5mm x 15.2mm x 2.7mm |
The HC-05 module has six pins, as described in the table below:
| Pin | Name | Description |
|---|---|---|
| 1 | EN (Key) | Enables AT command mode when pulled HIGH. Leave LOW for normal operation. |
| 2 | VCC | Power supply pin. Connect to 3.3V or 5V. |
| 3 | GND | Ground pin. Connect to the ground of the circuit. |
| 4 | TXD | Transmit data pin. Sends serial data to the connected device. |
| 5 | RXD | Receive data pin. Receives serial data from the connected device. |
| 6 | STATE | Indicates the connection status. HIGH when connected, LOW when disconnected. |
VCC pin to a 3.3V or 5V power source and the GND pin to the ground.TXD pin of the HC-05 to the RX pin of your microcontroller and the RXD pin of the HC-05 to the TX pin of your microcontroller. Use a voltage divider if your microcontroller operates at 5V logic levels to avoid damaging the HC-05.EN pin HIGH and send AT commands via a serial terminal.EN pin LOW for standard Bluetooth communication.RXD pin if your microcontroller uses 5V logic.STATE pin to monitor the connection status of the module.Below is an example of how to use the HC-05 module with an Arduino UNO to send and receive data via Bluetooth.
VCC → Arduino 5VGND → Arduino GNDTXD → Arduino RX (Pin 0)RXD → Arduino TX (Pin 1) (Use a voltage divider if needed)#include <SoftwareSerial.h>
// Define RX and TX pins for SoftwareSerial
SoftwareSerial BTSerial(10, 11); // RX = Pin 10, TX = Pin 11
void setup() {
Serial.begin(9600); // Start Serial Monitor communication
BTSerial.begin(9600); // Start Bluetooth communication at 9600 bps
Serial.println("HC-05 Bluetooth Module Test");
Serial.println("Send data via Bluetooth to see it here.");
}
void loop() {
// Check if data is received from Bluetooth
if (BTSerial.available()) {
char data = BTSerial.read(); // Read the incoming data
Serial.print("Received: ");
Serial.println(data); // Print the received data to Serial Monitor
}
// Check if data is sent from Serial Monitor
if (Serial.available()) {
char data = Serial.read(); // Read the data from Serial Monitor
BTSerial.write(data); // Send the data via Bluetooth
Serial.print("Sent: ");
Serial.println(data); // Print the sent data to Serial Monitor
}
}
Module Not Responding to AT Commands
EN pin is pulled HIGH to enable AT command mode.No Bluetooth Connection
Data Transmission Issues
TXD and RXD connections are correct.RXD pin if your microcontroller operates at 5V logic.Unstable Connection
Q: Can the HC-05 module be used with 5V logic microcontrollers?
A: Yes, but you must use a voltage divider or level shifter for the RXD pin to avoid damaging the module.
Q: How do I change the module's name or baud rate?
A: Enter AT command mode by pulling the EN pin HIGH and use AT commands like AT+NAME or AT+UART.
Q: What is the difference between master and slave modes?
A: In master mode, the HC-05 initiates connections with other devices. In slave mode, it waits for incoming connections.
Q: Can I use the HC-05 module for audio transmission?
A: No, the HC-05 is designed for serial data communication and does not support audio transmission.