What is the HM-10 Module?
The HM-10 is a small, low-power Bluetooth 4.0 BLE module based on the Texas Instruments CC2540 or CC2541 chipset. It is designed for easy integration into various electronic projects, enabling wireless communication between devices.
Key Features of the HM-10
- Bluetooth 4.0 BLE compatibility
- Low power consumption
- Small form factor
- Simple AT command interface
- Transparent data transmission
- Configurable parameters (e.g., baud rate, device name, etc.)
HM-10 Specifications
The HM-10 module offers the following specifications:
Specification | Value |
---|---|
Bluetooth Version | 4.0 BLE |
Chipset | TI CC2540 or CC2541 |
Operating Voltage | 3.3V to 6V |
Operating Current | 8.5mA (average), 50mA (peak) |
Transmit Power | -23dbm to +6dbm |
Receiver Sensitivity | -93dbm |
Transmission Distance | Up to 100m (open space) |
Operating Temperature | -5°C to +65°C |
Dimensions | 27mm x 13mm x 2.2mm |
Interface | UART (Baud rate: 9600bps to 115200bps) |
HM-10 Pin Configuration
The HM-10 module has six pins, as shown in the table below:
Pin | Name | Description |
---|---|---|
1 | VCC | Power supply (3.3V to 6V) |
2 | GND | Ground |
3 | TXD | UART transmit data (output) |
4 | RXD | UART receive data (input) |
5 | STATE | Connection state indication (output) |
6 | EN/BRK | Enable/Break (input, active low) |

Communicating with the HM-10
The HM-10 module uses a simple AT command interface for configuration and data transmission. AT commands are sent via the UART interface, and the module responds with corresponding messages.
Common AT Commands
Here are some common AT commands used with the HM-10:
Command | Description |
---|---|
AT | Test command, returns “OK” |
AT+NAME | Set/get module name |
AT+ADDR | Get module MAC address |
AT+BAUD | Set/get UART baud rate |
AT+ROLE | Set/get module role (central or peripheral) |
AT+PASS | Set/get pairing password |
AT+ADVI | Set/get advertising interval |
AT+ADTY | Set/get advertising type |
AT+IBEA | Set/get iBeacon parameters |
AT+RESET | Reset the module |
Transparent Data Transmission
Once a connection is established between two HM-10 modules or between an HM-10 and another BLE device, data can be transmitted transparently. Any data sent via the UART interface will be wirelessly transmitted to the connected device, and any data received wirelessly will be output via the UART interface.
HM-10 Applications
The HM-10 module can be used in a wide range of applications, including:
- IoT sensor networks
- Home automation systems
- Wearable devices
- Remote control systems
- Beacons and proximity marketing
- Industrial monitoring and control
- Medical devices
- Automotive electronics
Example: HM-10 Based Temperature Sensor
One common application of the HM-10 module is in wireless sensor networks. Here’s an example of how to create a simple temperature sensor using an HM-10 module and an Arduino board:
- Connect the HM-10 module to the Arduino board as follows:
- HM-10 VCC to Arduino 3.3V
- HM-10 GND to Arduino GND
- HM-10 TXD to Arduino RX
-
HM-10 RXD to Arduino TX
-
Connect a temperature sensor (e.g., DS18B20) to the Arduino board.
-
Upload the following code to the Arduino board:
#include <SoftwareSerial.h>
#include <OneWire.h>
#include <DallasTemperature.h>
SoftwareSerial bleSerial(2, 3); // RX, TX
OneWire oneWire(4);
DallasTemperature sensors(&oneWire);
void setup() {
bleSerial.begin(9600);
sensors.begin();
}
void loop() {
sensors.requestTemperatures();
float temperature = sensors.getTempCByIndex(0);
bleSerial.print("Temperature: ");
bleSerial.print(temperature);
bleSerial.println(" °C");
delay(1000);
}
-
Power on the Arduino board and the HM-10 module.
-
Use another HM-10 module or a BLE-enabled device (e.g., smartphone) to connect to the temperature sensor and receive the temperature data wirelessly.
HM-10 Configuration and Troubleshooting
Configuring the HM-10 Using AT Commands
To configure the HM-10 module, you can use AT commands via the UART interface. Here’s an example of how to change the module name and baud rate:
-
Connect the HM-10 module to a serial terminal (e.g., Arduino IDE Serial Monitor, PuTTY, etc.).
-
Send the following AT commands:
- To set the module name to “MyDevice”, send:
AT+NAMEMyDevice
-
To set the baud rate to 115200bps, send:
AT+BAUD8
-
Reset the module by sending:
AT+RESET
The module will now have the new name and baud rate configured.
Troubleshooting Common Issues
If you encounter issues while working with the HM-10 module, here are some troubleshooting tips:
- Verify the module is powered correctly (3.3V to 6V) and the connections are secure.
- Ensure the UART baud rate matches between the HM-10 and the connected device.
- Check if the module is in the correct mode (central or peripheral) for your application.
- Use the
AT
command to test if the module is responsive. - Reset the module using the
AT+RESET
command if it becomes unresponsive. - Consult the HM-10 datasheet or seek support from the module vendor if the issue persists.
HM-10 Alternatives and Comparison
While the HM-10 is a popular choice, there are several alternative BLE Modules available in the market. Some notable alternatives include:
- HC-08: Another low-cost BLE module with similar features to the HM-10.
- ESP32: A powerful Wi-Fi and Bluetooth SoC with built-in BLE capabilities.
- nRF51822: A high-performance BLE SoC from Nordic Semiconductor.
- BL652: A feature-rich BLE module from Laird Connectivity.
When choosing a BLE module for your project, consider factors such as cost, features, power consumption, range, and compatibility with your development environment.
Conclusion
The HM-10 Bluetooth Low Energy module is a versatile and easy-to-use solution for adding wireless connectivity to your electronic projects. With its small form factor, low power consumption, and simple AT command interface, the HM-10 is suitable for a wide range of applications, from IoT sensor networks to wearable devices.
By understanding the HM-10’s features, specifications, and communication protocols, you can effectively integrate it into your projects and create innovative wireless solutions. Whether you are a hobbyist, a student, or a professional developer, the HM-10 module is a valuable tool to have in your arsenal.
Frequently Asked Questions (FAQ)
-
Q: What is the range of the HM-10 module?
A: The HM-10 module has a typical range of up to 100 meters in open space. However, the actual range may vary depending on factors such as obstacles, interference, and antenna design. -
Q: Can I use the HM-10 module with iOS devices?
A: Yes, the HM-10 module is compatible with iOS devices that support Bluetooth 4.0 or higher. You can use the Core Bluetooth framework in iOS to communicate with the HM-10 module. -
Q: How do I update the firmware on the HM-10 module?
A: Firmware updates for the HM-10 module are not typically provided by the manufacturer. However, some third-party firmware options may be available. It is recommended to consult the module vendor or seek community support for firmware update instructions. -
Q: Can I use multiple HM-10 modules in the same area?
A: Yes, you can use multiple HM-10 modules in the same area. Each module has a unique MAC address, allowing them to be individually identified and communicated with. However, keep in mind that a high concentration of BLE devices in the same area may lead to increased interference and reduced performance. -
Q: Is the HM-10 module suitable for battery-powered applications?
A: Yes, the HM-10 module is well-suited for battery-powered applications due to its low power consumption. When properly configured and used with power-saving techniques, the HM-10 can operate for extended periods on a single battery charge. However, the actual battery life will depend on factors such as the specific application, transmission intervals, and connected peripherals.
No responses yet