蓝牙 Bee

蓝牙 Bee 是一个易于使用的 蓝牙串口协议(SPP)模块,兼容现有的 Xbee 插座,设计用于透明的无线串口连接设置。
串口蓝牙模块完全符合蓝牙 V2.0+EDR(增强数据速率)标准,支持 3Mbps 调制,集成完整的 2.4GHz 无线电收发器和基带。它采用 CSR Bluecore 04 外部单芯片蓝牙系统,使用 CMOS 技术并具有 AFH(自适应频率跳跃功能)。其尺寸为 12.7mm x 27mm,是最小的模块之一。
型号:WLS125E1P
特性
硬件特性
- 
典型 -80dBm 灵敏度。 
- 
高达 +4dBm 的 RF 发射功率。 
- 
完全符合蓝牙 V2.0+EDR 标准,支持 3Mbps 调制。 
- 
低功耗 1.8V 操作,1.8 至 3.6V I/O。 
- 
PIO 控制。 
- 
可编程波特率的 UART 接口。 
- 
集成 PCB 天线。 
- 
xBee 兼容针脚。 
软件特性
- 
默认波特率:38400,数据位:8,停止位:1,无校验位,数据控制:有。 
- 
支持的波特率:9600、19200、38400、57600、115200、230400、460800。 
- 
使用 CTS 和 RTS 控制数据流。 
- 
当在 PIO0 检测到上升脉冲时,设备将断开连接。 
- 
状态指示端口 PIO1:低-断开连接,高-已连接。 
- 
PIO10 连接到 红色LED,PIO11 连接到绿色 LED。当主设备和从设备配对时,红色和绿色 LED 每 2 秒闪烁一次;断开连接时,只有绿色 LED 每秒闪烁两次。 
- 
默认情况下,设备会自动连接到上次连接的设备。 
- 
默认允许匹配的设备连接。 
- 
默认 PIN 码:“0000”。 
- 
当因超出连接范围而断开时,设备将在 30 分钟内自动重新连接。 
应用场景
- 
用作 Arduino / Seeeduino 和其他 MCU 的无线串口。 
- 
用作连接 UartSBee 时的 PC 蓝牙串口。 
注意事项
- 
在与 Seeeduino / Arduino 一起使用时,请将工作电压设置为 3.3V,否则请使用适当的逻辑电平转换器。 
- 
在与 UartSBee 一起使用时,请将工作电压设置为 3.3V。 
- 
更改波特率的命令在重置后仍然有效,因此请记住下次使用的波特率。 
- 
使用 SoftwareSerial 时,请勿将波特率设置为高于 38400。 
原理图
蓝牙 Bee 原理图和 Eagle 格式的板文件
APS 货运公司的冷藏运输服务
引脚定义和额定值
底视图:

| 引脚 | # | 焊盘类型 | 描述 | 
|---|---|---|---|
| PI09 | 29 | 双向 | 可编程输入/输出线 | 
| PI08 | 28 | 双向 | 可编程输入/输出线 | 
| PIO7 | 27 | 双向 | 可编程输入/输出线 | 
| PIO6 | 26 | 双向 | 可编程输入/输出线 | 
| RTS | 25 | CMOS 输出,三态,带弱内部上拉 | UART 请求发送,低电平有效 | 
| PIO5 | 24 | 双向 | 可编程输入/输出线 | 
| PI04 | 23 | 双向 | 可编程输入/输出线 | 
| PCMSY | 22 | 双向 | 同步 PCM 数据 | 
| CTS | 21 | CMOS 输出,三态,带弱内部上拉 | UART 清除发送,低电平有效 | 
| PIO3 | 20 | 双向 | 可编程输入/输出线 | 
| PIO2 | 19 | 双向 | 可编程输入/输出线 | 
| USBDP | 18 | 双向 | |
| USBDN | 17 | 双向 | |
| CLK | 16 | CMOS 输出,三态,带弱内部上拉 | SPI(串行外设接口)时钟 | 
| MI | 15 | CMOS 输出,三态,带弱内部上拉 | SPI 数据输出 | 
| MO | 14 | CMOS 输出,三态,带弱内部上拉 | SPI 数据输出 | 
| CS | 13 | CMOS 输出,三态,带弱内部上拉 | 串行外设接口的芯片选择,低电平有效 | 
| AIO1 | 12 | 双向 | 可编程输入/输出线 | 
| AIO0 | 11 | 双向 | 可编程输入/输出线 | 
| GND | 10 | VSS | 地线端口 | 
| PCMIN | 9 | CMOS 输入 | 同步 PCM 数据输入 | 
| PCMOT | 8 | CMOS 输出 | 同步 PCM 数据输出 | 
| PCMCK | 7 | 双向 | 同步 PCM 数据时钟 | 
| PIO1 | 6 | 双向 | 可编程输入/输出线 | 
| IRST | 5 | CMOS 输出,三态,带弱内部上拉 | 如果低电平则复位,输入必须保持低电平超过 5ms 才能触发复位 | 
| PIO0 | 4 | 双向 | 可编程输入/输出线 | 
| RX | 3 | CMOS 输出,三态,带弱内部上拉 | UART 数据输入 | 
| TX | 2 | CMOS 输出,三态,带弱内部上拉 | UART 数据输出 | 
| 3V3 | 1 | 3.3V | 集成 3.3V(+) 电源,带片上线性稳压器输出,范围为 3.15-3.3V | 
机械尺寸
蓝牙 Bee 板的尺寸为 12.7mm x 27mm。
使用方法
硬件安装
使用 XBee Shield 连接到 Arduino
使用 XBee® Shield 将 蓝牙 Bee 连接到 Seeeduino / Arduino。请参考 XBee® Shield 文档,了解如何将拨动开关设置到正确位置。
使用 UartSbee 连接到 PC
使用 UartSBee 将 蓝牙 Bee 连接到 PC。在连接蓝牙 Bee 之前,将电源选择拨动开关设置为 3.3V。
软件说明
工作示意图
以下示意图展示了 蓝牙 Bee 在主模式和从模式下的操作概览。

流程图
以下流程图提供了 蓝牙 Bee 编程的快速入门指南。

修改默认配置的命令
- 设置工作模式
| \r\n+STWMOD=0\r\n | 设置设备工作模式为客户端(从机)。保存并重置。 | |--||| | \r\n+STWMOD=1\r\n | 设置设备工作模式为服务器(主机)。保存并重置。 |
注意: \r\n 是操作所需的,值为 80x0D 0x0A(十六进制)。\r 和 \n 分别表示 回车 和 换行。
- 设置波特率
| \r\n+STBD=115200\r\n | 设置波特率为 115200。保存并重置。 | 
|---|---|
| 支持的波特率:9600, 19200, 38400, 57600, 115200, 230400, 460800。 | 
- 设置设备名称
| \r\n+STNA=abcdefg\r\n | 设置设备名称为 “abcdefg”。保存并重置。 | 
|---|---|
\r\n+STNA=abcdefg\r\n
设置设备名称为 “abcdefg”。保存并重置。
- 自动连接上次配对的设备
| \r\n+STAUTO=0\r\n | 禁止自动连接。保存并重置。 | 
|---|---|
| \r\n+STAUTO=1\r\n | 允许自动连接。保存并重置。 | 
- 允许配对设备连接我
| \r\n+STOAUT=0\r\n | 禁止。保存并重置。 | 
|---|---|
| \r\n+STOAUT=1\r\n | 允许。保存并重置。 | 
- 设置 PIN 码
| \r\n +STPIN=2222\r\n | 设置 PIN 码为 “2222”,保存并重置。 | |---| ||| |
- 删除 PIN 码(通过 MCU 输入 PIN 码)
| \r\n+DLPIN\r\n | 删除 PIN 码。保存并重置。 | 
|---|---|
- 读取本地地址码
| \r\n+RTADDR\r\n | 返回设备地址。 | 
|---|---|
- 当主设备超出有效范围时自动重新连接(从设备将在超出有效范围后 30 分钟内自动重新连接)
| \r\n+LOSSRECONN=0\r\n | 禁止自动重新连接。 | 
|---|---|
| \r\n+LOSSRECONN=1\r\n | 允许自动重新连接。 | 
正常操作的命令
1. 查询
a) 主机
| \r\n+INQ=0\r\n | 停止查询 | 
|---|---|
| \r\n+INQ=1\r\n | 开始/重新开始查询 | 
b) 从机
| \r\n+INQ=0\r\n | 禁止被查询 | 
|---|---|
| \r\n+INQ=1\r\n | 允许被查询 | 
当 +INQ=1 命令成功时,红色和绿色 LED 会交替闪烁。
2. 蓝牙模块返回查询结果
| \r\n+RTINQ=aa,bb,cc,dd,ee,ff;name\r\n | 查询到地址为 “aa,bb,cc,dd,ee,ff” 且名称为 “name” 的串口蓝牙设备。 | 
|---|---|
3. 连接设备
| \r\n+CONN=aa,bb,cc,dd,ee,ff\r\n | 连接到地址为 "aa,bb,cc,dd,ee,ff” 的设备。 | 
|---|---|
4. 蓝牙模块请求输入 PIN 码
\r\n+INPIN\r\n
5. 输入 PIN 码
| \r\n+RTPIN=code\r\n | |
|---|---|
| 示例:RTPIN=0000 | 输入 PIN 码为四个零 | 
6. 断开设备连接
将 PIO0 拉高会断开当前工作的蓝牙设备。
7. 返回状态
\r\n+BTSTA:xx\r\n
xx 状态:
- 
0 - 初始化中 
- 
1 - 准备就绪 
- 
2 - 查询中 
- 
3 - 连接中 
- 
4 - 已连接 
(注意: 这不是命令,而是模块在每次命令后返回的信息)
编程
基于流程控制的实现
以下示例代码将 蓝牙 Bee 配置为从设备,并等待来自 PC 或其他主设备的连接请求。蓝牙 Bee 通过 XBee Shield 连接到 Seeeduino,如上图所示。蓝牙 Bee 连接到 Arduino / Seeeduino 的数字引脚 11 和 12。我们使用 NewSoftSerial 库支持这些引脚上的串口通信。Arduino 的硬件串口可用于上传代码或调试。此代码使用基于 CheckOK() 的流程控制机制,避免在命令之间使用任意延迟。如果不需要 CheckOK(),请在命令之间至少使用 3 秒的延迟。
/*
蓝牙 Bee 示例代码 - 基于流程控制的实现
2010,2011 版权所有 (c) Seeed Technology Inc. 保留所有权利。
作者: Visweswara R
此示例代码是免费软件;您可以根据 GNU 辅助通用公共许可证的条款重新分发和/或修改,
许可证由自由软件基金会发布;版本 2.1 或更高版本。
此库分发的目的是希望它能有用,但不提供任何保证;甚至没有隐含的
适销性或适合特定用途的保证。有关详细信息,请参阅 GNU 辅助通用公共许可证。
您应该已经收到此库附带的 GNU 辅助通用公共许可证副本;如果没有,请联系自由软件基金会,
地址:51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
有关产品的更多详细信息,请访问 https://www.seeedstudio.com/depot/
*/
/* 将此代码上传到 Seeeduino 并按下复位按钮 */
#include <SoftwareSerial.h>   //软件串口
#define RxD 11
#define TxD 12
#define DEBUG_ENABLED  1
SoftwareSerial blueToothSerial(RxD,TxD);
void setup()
{
    pinMode(RxD, INPUT);
    pinMode(TxD, OUTPUT);
    setupBlueToothConnection();
}
void loop()
{
  //典型蓝牙命令 - 响应模拟:
  //从 PC 蓝牙串口终端输入 'a'
  //请参阅蓝牙 Bee - Wiki 获取说明
  if(blueToothSerial.read() == 'a')
  {
    blueToothSerial.println("您已连接");
    //您可以在此处编写蓝牙通信逻辑
  }
}
void setupBlueToothConnection()
{
    blueToothSerial.begin(38400); //将蓝牙 Bee 波特率设置为默认波特率 38400
    delay(1000);
    sendBlueToothCommand("\r\n+STWMOD=0\r\n");
    sendBlueToothCommand("\r\n+STNA=SeeeduinoBluetooth\r\n");
    sendBlueToothCommand("\r\n+STAUTO=0\r\n");
    sendBlueToothCommand("\r\n+STOAUT=1\r\n");
    sendBlueToothCommand("\r\n +STPIN=0000\r\n");
    delay(2000); // 此延迟是必要的。
    sendBlueToothCommand("\r\n+INQ=1\r\n");
    delay(2000); // 此延迟是必要的。
}
//检查是否收到响应 "OK"
void CheckOK()
{
  char a,b;
  while(1)
  {
    if(blueToothSerial.available())
    {
    a = blueToothSerial.read();
    if('O' == a)
    {
      // 等待下一个字符 K。在某些情况下需要 available(),因为 K 不会立即可用。
      while(blueToothSerial.available())
      {
         b = blueToothSerial.read();
         break;
      }
      if('K' == b)
      {
        break;
      }
    }
   }
  }
  while( (a = blueToothSerial.read()) != -1)
  {
    //等待直到接收到所有其他响应字符
  }
}
void sendBlueToothCommand(char command[])
{
    blueToothSerial.print(command);
    CheckOK();   
}
基于延迟的实现
以下代码是使用 delay() 替代 CheckOK() 的修改版本。在此情况下,硬件串口用于调试目的。打开串行监视器并设置为 9600 波特率。MCU 和 Bluetooth Bee 之间的完整通信将在串行监视器中可见。
/*
BluetoothBee 示例代码 - 基于延迟的实现
2011 版权所有 (c) Seeed Technology Inc. 保留所有权利。
作者: Visweswara R
此示例代码是免费软件;您可以根据 GNU 较小通用公共许可证的条款重新分发和/或修改,
该许可证由自由软件基金会发布;可以选择版本 2.1 或(根据您的选择)任何更高版本。
此库分发的目的是希望它能有用,但不提供任何担保;甚至没有隐含的适销性或特定用途的适用性担保。
有关详细信息,请参阅 GNU 较小通用公共许可证。
您应该已经收到与此库一起分发的 GNU 较小通用公共许可证副本;如果没有,请联系自由软件基金会,
地址:51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
有关产品的更多详细信息,请访问 https://www.seeedstudio.com/depot/
*/
/* 将此代码上传到 Seeeduino 并按下复位按钮 */
#include <SoftwareSerial.h>   // 软件串口
#define RxD 11
#define TxD 12
SoftwareSerial blueToothSerial(RxD,TxD);
void setup()
{
    Serial.begin(9600);          // 用于调试的串口,如果不需要可以注释掉此行  
    pinMode(RxD, INPUT);
    pinMode(TxD, OUTPUT);
    setupBlueToothConnection();
}
void loop()
{
  if(blueToothSerial.read() == 'a')
  {
    blueToothSerial.println("您已连接到 Bluetooth Bee");
    // 在这里编写您的蓝牙通信逻辑
  }
}
void setupBlueToothConnection()
{
    Serial.print("正在设置蓝牙连接");       // 用于调试,如果不需要可以注释掉此行    
    blueToothSerial.begin(38400); // 将 BluetoothBee 波特率设置为默认波特率 38400
    delay(1000);
    sendBlueToothCommand("\r\n+STWMOD=0\r\n");
    sendBlueToothCommand("\r\n+STNA=modem\r\n");
    sendBlueToothCommand("\r\n+STAUTO=0\r\n");
    sendBlueToothCommand("\r\n+STOAUT=1\r\n");
    sendBlueToothCommand("\r\n+STPIN=0000\r\n");
    delay(2000); // 此延迟是必要的
    blueToothSerial.print("\r\n+INQ=1\r\n");
    delay(2000); // 此延迟是必要的
    Serial.print("设置完成");
}
void sendBlueToothCommand(char command[])
{
    char a;
    blueToothSerial.print(command);
    Serial.print(command);                          // 用于调试,如果不需要可以注释掉此行    
    delay(3000);
    while(blueToothSerial.available())              // 用于调试,如果不需要可以注释掉此行  
    {                                               // 用于调试,如果不需要可以注释掉此行   
       Serial.print(char(blueToothSerial.read()));  // 用于调试,如果不需要可以注释掉此行  
    }                                               // 用于调试,如果不需要可以注释掉此行   
}
在 GNU/Linux 下通过蓝牙适配器连接 Bluetooth Bee 到 PC
此步骤演示如何在 GNU/Linux 操作系统下将 Bluetooth Bee 连接到 PC。PC 端使用 USB 蓝牙适配器与 Bluetooth Bee 通信。上传流控制实现代码到 Seeeduino。
- 安装 gnome-bluetooth
sudo apt-get install gnome-bluetooth
- 从终端打开 bluetooth-properties 应用程序

- 点击“设置新设备”

然后点击“下一步”

- 打开 PIN 选项...

- 设置固定 PIN 为 0000。0000 是上述代码中使用的默认 PIN。

- 设备设置窗口打开

- 设置完成对话框打开。点击“关闭”。

- Bluetooth Bee 的地址 00:13:EF:00:00:24 显示在终端中。

- 将 Bluetooth Bee 绑定到 rfcomm 端口。这里 Bluetooth Bee 的地址绑定到串口设备 /dev/rfcomm0
user@user-desktop:~$ sudo rfcomm bind 0 00:13:EF:00:00:24 1
user@user-desktop:~$ ls /dev/rfcomm*
/dev/rfcomm0
- 
可以通过任何串口终端(如 cutecom)访问此 /dev/rfcomm0串口。
- 
打开 /dev/rfcomm0,设置波特率:38400,数据位:8,停止位:1,无流控制。
- 
发送字符 'a' 
- 
Seeeduino + Bluetooth Bee 将回复 "您已连接到 Bluetooth Bee" 

在 Windows 下通过蓝牙适配器连接 Bluetooth Bee 到 PC
- 安装 Microsoft 蓝牙默认驱动程序。打开控制面板 -> 蓝牙设备

- 点击“添加”按钮。

- 勾选“我的设备已设置并准备好被发现”,然后点击“下一步”按钮。

- 选择“SeeedBlueToothBee”设备并点击“下一步”。

- 选择“使用文档中的密码”,并输入 0000。

- 密码交换完成,并为通信分配了一个外部串口 COM5。

- 任务栏气泡显示已添加新的蓝牙串口链接。

- COM5 被分配用于通信。此端口应用于 PC 与 Bluetooth Bee 的通信。

- 
任何串口终端都可以访问此 COM5 串口。 
- 
打开 COM5,设置波特率:38400,数据位:8,停止位:1,无流控。 
- 
发送字符 'a'。 
- 
Seeeduino + Bluetooth Bee 将回复 "You are connected to Bluetooth Bee"。 

使用 UartsBee 在主模式下将 Bluetooth Bee 连接到 PC
此演示使用 硬件安装 - UartSBee 中描述的硬件配置。使用迷你 USB 线将 UartSBee 连接到 PC。
- 
打开串口终端并连接到 UartSBee 串口设备,例如 Windows 中的 COM1 或 GNU/Linux 中的 /dev/ttyUSB0,设置波特率:38400,数据位:8,停止位:1,无流控。 
- 
发送命令 \r\n+STWMOD=1\r\n。此命令将 Bluetooth Bee 配置为主模式。 

- 发送命令 \r\n+INQ=1\r\n。Bluetooth Bee 将搜索附近可用的蓝牙设备并列出设备地址。在此示例中,返回 +RTINQ=0,19,86,0,19,1E;desktop,其中 desktop 是带有蓝牙接口的 PC。在查询过程中,红色和绿色 LED 交替闪烁。

- 发送命令 \r\n+CONN=0,19,86,0,19,1E\r\n,其中 0,19,86,0,19,1E 是 desktop 的地址。

- 在 PC 端输入 PIN 码 0000 并完成连接。
材料清单 (BOM) / 部件列表
支持
如果您有任何问题或更好的设计想法,可以前往我们的 论坛 或 愿望墙 进行讨论。
版本追踪
| 修订版本 | 描述 | 发布日期 | 
|---|---|---|
| v1.0 | 初始公开发布 | 2009年12月14日 | 
| v1.1 | 修改查询命令并添加一些注释 | 2010年3月15日 | 
| v1.2 | 修改硬件和软件功能 | 2010年4月4日 | 
| v1.3 | 更新配置文件,添加返回状态,删除 ECHO 命令。 | 2010年4月21日 | 
| v2.0 | 更新模块为 HM-01(与最新的蓝牙盾相同)。AT 命令与之前版本不兼容。 | 2014年12月4日 | 
Bug 追踪
Bug 追踪是您可以发布在使用过程中发现的任何问题的地方。请写下您的意见,您的反馈将帮助我们改进产品。
额外创意
- 
实现无线 PS/2 键盘/鼠标。 
- 
从电脑无线控制玩具机器人。 
如何购买
点击这里购买:https://www.seeedstudio.com/depot/bluetooth-bee-p-598.html?cPath=139_142。
许可协议
本文档采用 Attribution-ShareAlike License 3.0 许可协议。源代码和库文件采用 GPL/LGPL 许可协议,详情请参阅源代码文件。
相关项目
如果您想使用 Bluetooth Bee 制作一些很棒的项目,以下是一些参考项目。
Seeed Pet

这是一个由 seeduino 和 Grove (title=undefined) 制作的有趣演示。 SEEED PET 是我们工作室的一种电子宠物。它是一个平台,供新手工程师熟悉我们公司的产品并进行实践。每位新手工程师都会在 SEEED PET 上添加一些新的创意或元素。
与我们分享您的精彩项目
怀着创造和分享的精神,这是我们认为造物者的核心所在。
正因为如此,开源社区才能繁荣至今。
无论您是谁,无论您制作了什么,黑客、造物者、艺术家还是工程师,
只要您开始与他人分享您的作品,
您就成为了开源社区的一部分,并为其做出了贡献。
现在在 Recipe 上与我们分享您的精彩项目,赢取成为 Seeed 核心用户的机会。
- 
核心用户是那些对 Seeed 产品表现出高度兴趣并做出显著贡献的人。 
- 
我们与核心用户合作开发新产品,换句话说,核心用户将有机会在产品正式发布前体验 Seeed 的任何新产品,作为回报,我们期待他们提供宝贵的反馈,以帮助我们改进产品性能和用户体验。在大多数情况下,如果核心用户有任何好的创意,我们将提供硬件组件、PCBA 服务以及技术支持。此外,与核心用户进一步的商业合作也是非常可能的。 
在线原理图查看器
资源
- 
[Eagle] Bluetooth Bee 原理图和板文件 
- 
[Library] NewSoftLibrary 
- 
[Information] 关于如何设置 Bluetooth Bee 之间连接的信息可在 Seeedstudio 论坛找到 
- 
[Information] 在 Seeedstudio 论坛中连接 PC 和 Bluetooth Bee 的信息 
- 
[Datasheet] Bluetooth Bee 数据手册 
- 
[Datasheet] HM-01 数据手册 
技术支持与产品讨论
感谢您选择我们的产品!我们致力于为您提供各种支持,确保您使用我们的产品时能够获得尽可能顺畅的体验。我们提供多个沟通渠道,以满足不同的偏好和需求。