Bluetooth 4.0 HM-10 Master Slave Module

From Wiki
Jump to: navigation, search


Bluetooth 4.0 HM-10 Master Slave Module use TI CC2541, Master and slave roles in one, transmission version and remote control version and PIO state acquisition functions in one, Support the AT command modify module parameters, Convenient and flexible.
Transmission version can be used to transmit data between two Bluetooth devices.
Remote Control version can be used to Control PIO ports output high or low level without any other MCU.
PIO state acquisition version can be used to acquisition PIO ports state without any other MUC. (Only support Bluetooth V2.1)


Bluetooth Protocol: Bluetooth Specification V4.0 BLE
USB Protocol: USB V2.0
Operating Frequency: 2.4GHz ISM band
Modulation Mode: GFSK (Gaussian Frequency Shift Keying)
Transmitting Power: ≤4dBm
Sensitivity: ≤-84dBm at 0.1% BER
Transmission Rate: Asynchronous: 6 kbps
Synchronous: 6 kbps
Security Feature: Authentication and encryption
Support Service: Central & Peripheral UUID FFE0, FFE1
Power Supply: +5VDC 50mA
Operating Temperature: -5 ~ +65 Centigrade
Physical Dimension: 27mm x 13mm x 2.2 mm.

Pin Description:

STATE: state test pins, connected to internal LED, generally keep it unconnected.
BRK: break connect, it means breaking Bluetooth connection, generally keep it unconnected.
VCC: positive pole of the power source.
GND: Ground.
TXD: serial interface, transmitting terminal.
RXD: serial interface, receiving terminal.

Using SunFounder Uno

Step 1: Compile and upload the code before building the circuit

#include <SoftwareSerial.h>

SoftwareSerial mySerial(7, 8); // RX, TX  
// Connect HM10      Arduino Uno
//     TXD          Pin 7
//     RXD          Pin 8

void setup() {  
  // If the baudrate of the HM-10 module has been updated,
  // you may need to change 9600 by another value
  // Once you have found the correct baudrate,
  // you can update it using AT+BAUDx command 
  // e.g. AT+BAUD0 for 9600 bauds

void loop() {  
  char c;
  if (Serial.available()) {
    c =;
  if (mySerial.available()) {
    c =;

Step 2: Connect the circuit:


Using Android

If you are using an Android phone, please follow the steps below:
Step 3: You need to download a Bluetooth 4.0 debugging assistant onto the mobile phone to connect it with the Bluetooth 4.0 module. We've provided the tool in Android. Just download on your smart phone and decompress. Then you can see a file BleSerialPort. Enable Bluetooth on your phone and install it.


Open the installed app, as shown in Fig 1. On first use, there will be a prompt reminding you to enable the Bluetooth. Since this is a necessary step and no more prompt will appear in later use, you're recommended to enable it now in case of missing it.
Tap the vertical ellipsis button at the top right corner. Then tap connect (Fig 2). Find HMSoft and hit.


After connecting a mobile phone or other Bluetooth devices and the Bluetooth module successfully (Fig 4), the LED indicator on the module will be steadily on. Otherwise, the LED indicator will keep blinking.
Tap serial monitor in Arduino IDE, and type in Hello!, then you will receive it in the mobile phone. Similarly, SunFounder send by the phone will appear in the serial monitor.


Use iOS

If you are using an iPhone or MacBook, please follow the steps below (iPhone as an example):
Step 3: Go to the App store, search for the application - LightBlue and install.
Step 4: Click/Hit Settings -> Bluetooth, enable the Bluetooth and then open the LightBlue.


Step 5: If the Bluetooth is connected successfully, you will see HMSoft as shown in Fig 5. Click HMSoft to connect, then it redirects to the interface in Fig 6. Now, let’s send data. Click then it redirects to the interface in (Fig 7). Maybe yours is not but 0xFFE1 instead, and they're the same thing in fact. Click Hex in the top right corner to set the character type.


Step 6: Among the types (Fig 8), choose UTF-8 String. Hit Listen for notifications to read the value, then Write new Value to send data to Arduino as shown in Fig 9.


Step 7: Click the Serial Monitor icon in Arduino IDE, and type in "Hello!". Then you will receive it in the mobile phone. Similarly, the characters "SunFounder" sent by the phone will appear in the window.


Mega2560 Code

Here the wiring is changed:


//Bluetooth Module    MEGA2560
  RXD                 TXD1(pin18)
  TXD                  RXD1(pin19)
  VCC                 5V
  GND                 GND
void setup() {
  //define 2 serial port


void loop() {
  char c;
  //the IDE send,phone receive
  if (Serial.available()) {
    c =;
  //the phone send ,IDE receive
  if (Serial1.available()) {
    c =;

Using AT Commands

Step 1: Wiring
Connect TXD of the Bluetooth 4.0 Module to RXD of the FTDI Module, RXD to TXD, GND to GND, and VCC to VCC. The FTDI Module is a USB-to-serial bridge controller.



Step 2: Set parameters
After wiring, open the serial port debug tool sscom32. Set parameters at first.
1) Open the serial port, click Open Com. Select the correct port, as shown below.


2) Select the correct baud rate. Here select 9600 bps (default), as shown below.
Note: You need to tick SendNew to lock it as shown below, otherwise the command cannot be sent successfully.


Step 3: Now, you can start to send commands. Type in “AT” in the text box. If the Bluetooth 4.0 Module goes well, OK will be sent, as shown below:


Also you can send AT+NAME?, then OK+NAME: HMSoft will be returned.


Send AT+BAUD?, then OK+Get: 0 will be returned. Default: 0 (9600)


For more information about the Bluetooth 4.0 AT commands, please refer to Bluetooth 4.0 BLE module datasheet.pdf