

The HC-05 is a Bluetooth module manufactured by BLUETOOTH, with the part ID HC-05. It is a versatile and widely used component for enabling wireless communication between devices. Operating in the 2.4 GHz frequency range, the HC-05 supports both master and slave modes, making it suitable for a variety of applications. It is commonly used in embedded systems to connect microcontrollers, such as Arduino boards, to smartphones, laptops, or other Bluetooth-enabled devices.








The HC-05 module is designed for ease of use and reliable communication. Below are its key technical specifications:
| Parameter | Value |
|---|---|
| Operating Voltage | 3.3V to 5V |
| Operating Current | 30 mA (typical) |
| Communication Protocol | UART (Universal Asynchronous Receiver-Transmitter) |
| Baud Rate | Default: 9600 bps (configurable) |
| Frequency Range | 2.4 GHz ISM band |
| Bluetooth Version | Bluetooth 2.0 + EDR (Enhanced Data Rate) |
| Range | Up to 10 meters (unobstructed) |
| Modes | Master and Slave |
| Dimensions | 37.5mm x 15.2mm x 3.5mm |
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. Defaults to LOW for normal operation. |
| 2 | VCC | Power supply input (3.3V to 5V). |
| 3 | GND | Ground connection. |
| 4 | TXD | Transmit data pin (connects to RX of microcontroller). |
| 5 | RXD | Receive data pin (connects to TX of microcontroller). |
| 6 | STATE | Indicates 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); // Initialize hardware serial for debugging
BTSerial.begin(9600); // Initialize Bluetooth serial communication
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 data from HC-05
Serial.print("Received: ");
Serial.println(data); // Print received data to Serial Monitor
}
// Check if data is sent from Serial Monitor
if (Serial.available()) {
char data = Serial.read(); // Read data from Serial Monitor
BTSerial.write(data); // Send data to HC-05
Serial.print("Sent: ");
Serial.println(data); // Print sent data to Serial Monitor
}
}
Module Not Responding to AT Commands
Bluetooth Device Not Discoverable
Data Transmission Issues
Short Range or 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 damage.
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 connect to multiple devices simultaneously?
A: No, the HC-05 supports only one connection at a time.
Q: How do I change the module's name or PIN?
A: Use AT commands in command mode:
AT+NAME=YourNameAT+PSWD=YourPINThis concludes the HC-05 documentation.