

The HC-05 Bluetooth Module is a wireless communication module designed for short-range data transmission 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 compact and reliable Bluetooth device with the following key specifications:
| Parameter | Value |
|---|---|
| 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 input (3.3V to 5V). |
| 3 | GND | Ground connection. |
| 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). |
Below is an example of how to use the HC-05 module with an Arduino UNO to send and receive data via Bluetooth.
#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 from your Bluetooth device to see it here.");
}
void loop() {
// Check if data is available from Bluetooth
if (BTSerial.available()) {
char data = BTSerial.read(); // Read data from HC-05
Serial.print("Received: ");
Serial.println(data); // Print received data to Serial Monitor
}
// Check if data is available from Serial Monitor
if (Serial.available()) {
char data = Serial.read(); // Read data from Serial Monitor
BTSerial.write(data); // Send data to HC-05
}
}
Module Not Responding to AT Commands
Bluetooth Device Cannot Pair with HC-05
Data Transmission Issues
Weak Signal or Connection Drops
Q: Can the HC-05 module work with 5V logic levels?
A: The TXD pin can output 5V logic, but the RXD pin is designed for 3.3V logic. Use a voltage divider or level shifter for safe operation.
Q: How do I switch between master and slave modes?
A: Use AT commands to configure the module. For example, send AT+ROLE=1 to set it as a master and AT+ROLE=0 to set it as a slave.
Q: What is the difference between HC-05 and HC-06?
A: The HC-05 supports both master and slave modes, while the HC-06 operates only in slave mode.
Q: Can I use the HC-05 with a Raspberry Pi?
A: Yes, the HC-05 can be connected to a Raspberry Pi via its UART pins. Ensure proper voltage level shifting for the RXD pin.