Bluetooth 4.0 HM-10 Master Slave Module

From Wiki
Revision as of 02:09, 30 July 2016 by Root (Talk | contribs) (Using Uno/Mega2560)

Jump to: navigation, search

Introduction

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)
Fengman.png

Parameter

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.

Test method

Using Uno/Mega2560

Step 1: You should compile and upload the code before building the circuit

/****************************************/
#define ledPin 13  // //pin 13 built-in LED light
int val;
void setup()
{
  Serial.begin(9600);
  pinMode(ledPin, OUTPUT);
}
void loop()
{
  if(Serial.available()) //
  {
    val = Serial.read();
    if(val =='A')  //if comes a 'A',LED on control board will blink
    {
      digitalWrite(ledPin, HIGH);
      delay(500);
      digitalWrite(ledPin, LOW);
      delay(500);
      Serial.println("Rebecca");  //print on Serial debugging assistant on computer
    }
  }
}
/****************************************/

Step2: Connecting circuit

Bluetooth 4.0 SunFounder Uno Board
VCC 5V
GND GND
TXD RX0(pin0)
RXD TX0(pin1)

Sunfounder.png

Step 3: You need to download a Bluetooth 4.0 debugging assistant for mobile phone to connect your phone with the Bluetooth4.0 module. We've provided the tool in Android. Just download BleSerialPort.zip on your smart phone and decompress. Then you can see a file BleSerialPort. Enable Bluetooth on your phone and install the BleSerialPort.

Screenshot 2016-02-29-17-44-01.png

Open the installed app, as shown in Fig 1. Click icon at the top right corner. Then click the connect (Fig 2). Find HMSoft and click.

Bleserial.png

After connecting mobile phone or other Bluetooth device and Bluetooth-4.0 module successfully (Fig 4), the LED indicator on the Bluetooth module will be steady on (stop blinking). Otherwise, the LED indicator will keep blinking.
Now you can send commands. Send a character A to the Bluetooth-4.0 module. If the communication works normally, on the surface you can see A sent out and Rebecca returned. Then the LED on the SunFounder UNO board will blink once.

FIG4 BLUTOOTH.png

Communication

If you want to receive date sent from the arduino to your phone, and also receive data from your phone to your arduino. you should upload the follow code first,then open the IDE serial monitor and Android app BleSerialPort,now you can send the data to each other.

For Uno

 
#include <SoftwareSerial.h>

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

void setup() {  
  Serial.begin(9600);
  // 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
  mySerial.begin(9600);
}

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

For Mega2560=

//Bluetooth Module     MEGA2560
  RXD                TXD1(pin18)
  TXD                RXD1(pin19)
  VCC                5V
  GND                GND
  
void setup() {
  //define 2 serial port
  Serial.begin(9600);
  Serial1.begin(9600); 

}

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

Using AT Commands

Step 1: wire.
Connect TXD of Bluetooth 4.0 Module to RXD of PL2303, RXD to TXD, GND to GND, and VCC to VCC. PL2303 is a USB to Serial Bridge Controller. You can also use other components, such as FTDI.

Bluetooth 4.0 PL2303
VCC VCC
GND GND
TXD RX0(pin0)
RXD TX0(pin1)

Pl230333.png

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.

COM0321.png

2) Select the correct baud rate. Here select 9600 bps.Default: 9600, as shown below.

File:SET.png

Step3: Now, you can start to send instructions. Enter”AT” in the text box. If Bluetooth 4.0 Module goes well, OK will be sent, as shown below:
AT.png
Also you can send AT+NAME?. OK+NAME:HMSoft will be returned .

Name.png

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

Baud.png

For more information about Bluetooth 4.0 AT Instructions. please refer to Bluetooth 4.0 BLE module datasheet.pdf

Resources

BleSerialPortZIP.jpg
Sscom32EZIP.jpg
Bluetooth_4.0_BLE_module_datasheetPDF.jpg