BLE 蓝牙4.0扩展板

来自Duinopeak_COM
跳转至: 导航搜索

概述

Ble-shield-1.jpg Ble-shield-2.jpg

简介


使用了HM-11模块的DuinoBLE蓝牙扩展板提供给你的Arduino/Eduino串口蓝牙功能。使用这块扩展板它只需要占用微控制器的两个针脚就能和你的设备进行通信。在蓝牙串口手机软件的支持下,这个BLE扩展板可以向您的手机通信,省略了另外配对这个步骤。在很多场合下你可以使用它,像机器人控制或远程控制设备等我们为这个扩展板准备了一个简单方便的命令集,让你可以用干净整洁的代码去使用功能。

参数


规范
蓝牙版本 蓝牙版本4.0
工作频率 2.4GHz频段
工作电流 < 15 mA
上拉电流 < 30 mA
休眠电流 < 3 mA
调制法 GFSK(Gaussian Frequency Shift Keying)
RF 功率 -23dbm, -6dbm, 0dbm, 6dbm, 通过AT命令可以修改AT+POWE
速度 异步: 6K Bytes, 同步: 6K Bytes
Sensibility ≤-84dBm at 0.1% BER
安全 认证和加密
服务 集中式 & 外部设备UUID FFE0,FFE1
供电电压 5v
工作温度 –5 ~ +65 摄氏度
尺寸 68mm x 43mm



简介



  • HM-11:基本模块是HM-11,更多信息可以参考这个维基HM-11
  • 信号灯:如果没有建立链接的话,信号灯将一直闪烁,但如果已经连接上之后指示灯会保持常亮。
  • Puzzle电子积木:在电子积木扩展板上有两个电子积木连接器,你可以方便地把电子积木连接到到主控板上。
  • 硬件或软件端口:你可以在七个数字引脚中选择两个作为软件通信信道。将跳线插入排针上。
  • 保留从HM-11的输出引脚:有一些保留引出线从HM-11模块,如CTS1、RTS1和PIO2等
  • 重置按钮:按下复位按钮,如果你需要重新设置蓝牙扩展板。然而,即使蓝牙扩展板插入到主控板上,此复位按钮也不会影响主控板的状态(如Arduino Uno)。



应用

硬件连接

BLE connect.JPG
下面是代码里面的引脚定义,这里数字端口2作为主控板上的RXD功能使用,数字端口3作为主控板上的TXD功能使用:

#define RxD 2
#define TxD 3

把Duino蓝牙扩展板直接插到Arduino/Eduino。请注意蓝牙扩展板上跳线的位置。

软件串口通信


Duino蓝牙扩展板可工作在主模式或者是从模式,你可以通过我们提供的示例来使用。如果你要使用以下软件串口程序,请参阅在前面的图片连接方式。BLE_TX-->D2,BLE_RX-->D3。 打开Arduino IDE中,复制以下程序并将它上传到Arduino/Eduino板。然后两个蓝牙扩展板可以互相交流。

Demo : BLE Slave


#include <SoftwareSerial.h>   //Software Serial Port
#define RxD 2
#define TxD 3
 
#define DEBUG_ENABLED  1
 
SoftwareSerial BLE(RxD,TxD);
 
void setup() 
{ 
  Serial.begin(9600);
  pinMode(RxD, INPUT);
  pinMode(TxD, OUTPUT);
  setupBleConnection();
} 
 
void loop() 
{ 
  char recvChar;
  while(1){
    if(BLE.available()){//check if there's any data sent from the remote BLE shield
      recvChar = BLE.read();
      Serial.print(recvChar);
    }
    if(Serial.available()){//check if there's any data sent from the local serial terminal, you can add the other applications here
      recvChar  = Serial.read();
      BLE.print(recvChar);
    }
  }
} 
 
void setupBleConnection()
{
  BLE.begin(9600); //Set BLE BaudRate to default baud rate 9600
  delay(3000);
  BLE.print("AT+CLEAR"); //clear all previous setting
  delay(1000);
  readBluetooth();
  BLE.print("AT+NAMEbleSlave1"); //clear all previous setting
  readBluetooth();
  
  BLE.print("AT+ROLE0"); //set the bluetooth name as a slaver
  readBluetooth();
  BLE.print("AT+ROLE?"); //set the bluetooth name as a slaver
  readBluetooth();
  BLE.print("AT+SAVE1");  //don't save the connect information
  readBluetooth();
  BLE.print("AT+SAVE?");  //don't save the connect information
  readBluetooth();
  BLE.print("AT+BAUD?");  //don't save the connect information
  readBluetooth();
  
}

void readBluetooth(){
  delay(1000);  
  char recvChar=0;
  String recvBuf="";
    while(BLE.available()){
      recvChar = BLE.read();
 	recvBuf += recvChar;
    }
  Serial.println(recvBuf);
  //BLE.flush();
}


Demo : BLE Master


#include <SoftwareSerial.h>   //Software Serial Port
#define RxD 2
#define TxD 3
 
#define DEBUG_ENABLED  1
 
SoftwareSerial BLE(RxD,TxD);
 
void setup() 
{ 
  Serial.begin(9600);
  pinMode(RxD, INPUT);
  pinMode(TxD, OUTPUT);
  setupBleConnection();
 
} 
 
void loop() 
{ 
  char recvChar;
  while(1){
    if(BLE.available()){//check if there's any data sent from the remote BLE shield
      recvChar = BLE.read();
      Serial.print(recvChar);
    }
    if(Serial.available()){//check if there's any data sent from the local serial terminal, you can add the other applications here
      recvChar  = Serial.read();
      BLE.print(recvChar);
    }
  }
} 
 
void setupBleConnection()
{
  BLE.begin(9600); //Set BLE BaudRate to default baud rate 9600
  delay(3000);
  BLE.print("AT+CLEAR"); //clear all previous setting
  delay(1000);
  readBluetooth();
  BLE.print("AT+NAMEbleMaster"); //clear all previous setting
  readBluetooth();
  BLE.print("AT+ROLE1"); //set the bluetooth name as a slaver
  readBluetooth();
  BLE.print("AT+ROLE?"); //set the bluetooth name as a slaver
  readBluetooth();
  BLE.print("AT+SAVE1");  //don't save the connect information
  readBluetooth();
  BLE.print("AT+SAVE?");  //don't save the connect information
  readBluetooth();
}

void readBluetooth(){
  delay(1000);  
  char recvChar=0;
  String recvBuf="";
    while(BLE.available()){
      recvChar = BLE.read();
 	recvBuf += recvChar;
    }
  Serial.println(recvBuf);
   //BLE.flush();
}


硬件串口通信


此外,您可以通过AT命令使用蓝牙扩展板通过,而无需任何程序。但是你需要改变两个跳线的位置,把BLE_TX-->D1,BLE_RX-->D0。

然后打开一个串口工具,像CoolTerm或其他的。以下是一些设置:波特率:9600(默认),数据位:8,奇偶:无,停止位:1

首先,你可以发送一个(多个)"AT"命令(s)到蓝牙扩展板做一个测试。如果它返回一个"OK",然后您可以执行以下步骤。如果没有,你可以上传一个空程序到Arduino/Eduino开发板上,然后看看是否你能从串口工具中得到响应。

void setup()
{                
}

void loop() 
{
}


然后,你可以通过串口助手向主控板发送一个"AT+ROLE0"命令;它将返回一个"OK+Set:0",这意味着现在你的扩展板可以工作在从模式下面了。
BLE -3.png

AT 命令


有关在命令的详细信息,请参阅模块的数据表。你可以从资源空间下载。

资源

如何购买

Duinopeak 官方淘宝商城
Bluetooth Shield 蓝牙扩展板购买链接

视频演示

Video