

The HC-05 is a Bluetooth module manufactured by BLUETOOTH, with the part ID HC-05. It is a versatile and widely used component that enables wireless communication between devices. Operating in the 2.4 GHz frequency range, the HC-05 is designed for seamless integration into embedded systems, allowing microcontrollers to communicate with smartphones, laptops, or other Bluetooth-enabled devices.








The HC-05 module is a Class 2 Bluetooth device with a range of approximately 10 meters. Below are its key technical details:
| Parameter | Value |
|---|---|
| Bluetooth Version | 2.0 + EDR (Enhanced Data Rate) |
| Operating Voltage | 3.3V to 5V |
| Operating Current | 30 mA (typical) |
| Communication Protocol | UART (Universal Asynchronous Receiver-Transmitter) |
| Baud Rate (Default) | 9600 bps |
| Frequency Range | 2.4 GHz ISM band |
| Range | Up to 10 meters |
| Operating Temperature | -20°C to +75°C |
| Dimensions | 28 mm x 15 mm x 2.35 mm |
The HC-05 module has six pins, as described in the table below:
| Pin Name | Pin Number | Description |
|---|---|---|
| EN (Key) | 1 | Enables AT command mode when pulled HIGH. Leave LOW for normal operation. |
| VCC | 2 | Power supply input (3.3V to 5V). |
| GND | 3 | Ground connection. |
| TXD | 4 | Transmit data pin. Sends serial data to the connected microcontroller. |
| RXD | 5 | Receive data pin. Receives serial data from the connected microcontroller. |
| STATE | 6 | Indicates the connection status (HIGH when connected, LOW when disconnected). |
Below is an example of how to use the HC-05 with an Arduino UNO to send and receive data:
#include <SoftwareSerial.h>
// Define RX and TX pins for SoftwareSerial
SoftwareSerial BTSerial(10, 11); // RX = Pin 10, TX = Pin 11
void setup() {
// Start the hardware serial communication
Serial.begin(9600);
// Start the Bluetooth serial communication
BTSerial.begin(9600);
Serial.println("HC-05 Bluetooth Module Test");
}
void loop() {
// Check if data is available from the Bluetooth module
if (BTSerial.available()) {
char data = BTSerial.read(); // Read data from HC-05
Serial.print("Received: ");
Serial.println(data); // Print data to Serial Monitor
}
// Check if data is available from the 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 Not Pairing
Data Transmission Issues
Q: Can the HC-05 be used in master mode?
A: Yes, the HC-05 can operate in both master and slave modes. Use AT commands to configure the mode.
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: How do I reset the HC-05 to factory settings?
A: Enter AT command mode and send the command AT+ORGL to reset the module to its default settings.
Q: Can the HC-05 communicate with BLE devices?
A: No, the HC-05 uses Bluetooth 2.0 and is not compatible with Bluetooth Low Energy (BLE) devices.