

The HM-10 Bluetooth Module is a low-power Bluetooth 4.0 module manufactured by DSD Tech. It is designed to enable wireless communication between devices, making it an ideal choice for Internet of Things (IoT) applications. The module supports BLE (Bluetooth Low Energy) and is commonly used to connect microcontrollers, such as Arduino boards, to smartphones or other Bluetooth-enabled devices. Its compact size, low power consumption, and ease of use make it a popular choice for hobbyists and professionals alike.








The following table outlines the key technical details of the HM-10 Bluetooth Module:
| Parameter | Specification |
|---|---|
| Manufacturer | DSD Tech |
| Part ID | HM-10 Bluetooth Module |
| Bluetooth Version | Bluetooth 4.0 (BLE) |
| Operating Voltage | 3.3V to 6V |
| Operating Current | 8 mA (active), 50 µA (standby) |
| Communication Protocol | UART (Universal Asynchronous Receiver-Transmitter) |
| Baud Rate (Default) | 9600 bps |
| Transmission Range | Up to 100 meters (in open space) |
| Dimensions | 26.9mm x 13mm x 2.2mm |
| Operating Temperature | -20°C to +75°C |
The HM-10 module has 6 pins, as described in the table below:
| Pin | Name | Description |
|---|---|---|
| 1 | VCC | Power supply pin. Connect to 3.3V to 6V. |
| 2 | GND | Ground pin. Connect to the ground of the circuit. |
| 3 | TXD | Transmit pin. Sends serial data to the connected microcontroller or device. |
| 4 | RXD | Receive pin. Receives serial data from the connected microcontroller or device. |
| 5 | STATE | Indicates the connection status (HIGH when connected, LOW when disconnected). |
| 6 | EN (Key) | Enable pin. Used to enter AT command mode when pulled HIGH. |
Below is an example of how to use the HM-10 module 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() {
Serial.begin(9600); // Start Serial Monitor communication
BTSerial.begin(9600); // Start Bluetooth communication at 9600 baud rate
Serial.println("HM-10 Bluetooth Module Test");
Serial.println("Send data from Serial Monitor to communicate with HM-10.");
}
void loop() {
// Check if data is available from the Bluetooth module
if (BTSerial.available()) {
char c = BTSerial.read(); // Read the incoming data
Serial.write(c); // Forward the data to the Serial Monitor
}
// Check if data is available from the Serial Monitor
if (Serial.available()) {
char c = Serial.read(); // Read the incoming data
BTSerial.write(c); // Forward the data to the Bluetooth module
}
}
Module Not Detected by Bluetooth Device:
No Data Transmission:
AT Commands Not Working:
Q: Can the HM-10 module connect to classic Bluetooth devices?
A: No, the HM-10 supports only Bluetooth Low Energy (BLE) and cannot connect to classic Bluetooth devices.
Q: How can I change the module's name or pairing code?
A: Use AT commands. For example:
AT+NAMEnewnameAT+PASSnewcodeQ: What is the maximum range of the HM-10 module?
A: The module can achieve a range of up to 100 meters in open space, but obstacles and interference may reduce this range.
By following this documentation, you can effectively integrate the HM-10 Bluetooth Module into your projects and troubleshoot common issues.