Skip to main content

蓝牙 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 货运公司的冷藏运输服务

引脚定义和额定值

底视图:

引脚#焊盘类型描述
PI0929双向可编程输入/输出线
PI0828双向可编程输入/输出线
PIO727双向可编程输入/输出线
PIO626双向可编程输入/输出线
RTS25CMOS 输出,三态,带弱内部上拉UART 请求发送,低电平有效
PIO524双向可编程输入/输出线
PI0423双向可编程输入/输出线
PCMSY22双向同步 PCM 数据
CTS21CMOS 输出,三态,带弱内部上拉UART 清除发送,低电平有效
PIO320双向可编程输入/输出线
PIO219双向可编程输入/输出线
USBDP18双向
USBDN17双向
CLK16CMOS 输出,三态,带弱内部上拉SPI(串行外设接口)时钟
MI15CMOS 输出,三态,带弱内部上拉SPI 数据输出
MO14CMOS 输出,三态,带弱内部上拉SPI 数据输出
CS13CMOS 输出,三态,带弱内部上拉串行外设接口的芯片选择,低电平有效
AIO112双向可编程输入/输出线
AIO011双向可编程输入/输出线
GND10VSS地线端口
PCMIN9CMOS 输入同步 PCM 数据输入
PCMOT8CMOS 输出同步 PCM 数据输出
PCMCK7双向同步 PCM 数据时钟
PIO16双向可编程输入/输出线
IRST5CMOS 输出,三态,带弱内部上拉如果低电平则复位,输入必须保持低电平超过 5ms 才能触发复位
PIO04双向可编程输入/输出线
RX3CMOS 输出,三态,带弱内部上拉UART 数据输入
TX2CMOS 输出,三态,带弱内部上拉UART 数据输出
3V313.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 编程的快速入门指南。

修改默认配置的命令

  1. 设置工作模式

| \r\n+STWMOD=0\r\n | 设置设备工作模式为客户端(从机)。保存并重置。 | |--||| | \r\n+STWMOD=1\r\n | 设置设备工作模式为服务器(主机)。保存并重置。 |

注意: \r\n 是操作所需的,值为 80x0D 0x0A(十六进制)。\r\n 分别表示 回车换行

  1. 设置波特率
\r\n+STBD=115200\r\n设置波特率为 115200。保存并重置。
支持的波特率:9600, 19200, 38400, 57600, 115200, 230400, 460800。
  1. 设置设备名称
\r\n+STNA=abcdefg\r\n设置设备名称为 “abcdefg”。保存并重置。

\r\n+STNA=abcdefg\r\n
设置设备名称为 “abcdefg”。保存并重置。

  1. 自动连接上次配对的设备
\r\n+STAUTO=0\r\n禁止自动连接。保存并重置。
\r\n+STAUTO=1\r\n允许自动连接。保存并重置。
  1. 允许配对设备连接我
\r\n+STOAUT=0\r\n禁止。保存并重置。
\r\n+STOAUT=1\r\n允许。保存并重置。
  1. 设置 PIN 码

| \r\n +STPIN=2222\r\n | 设置 PIN 码为 “2222”,保存并重置。 | |---| ||| |

  1. 删除 PIN 码(通过 MCU 输入 PIN 码)
\r\n+DLPIN\r\n删除 PIN 码。保存并重置。
  1. 读取本地地址码
\r\n+RTADDR\r\n返回设备地址。
  1. 当主设备超出有效范围时自动重新连接(从设备将在超出有效范围后 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 服务以及技术支持。此外,与核心用户进一步的商业合作也是非常可能的。

在线原理图查看器

资源

技术支持与产品讨论

感谢您选择我们的产品!我们致力于为您提供各种支持,确保您使用我们的产品时能够获得尽可能顺畅的体验。我们提供多个沟通渠道,以满足不同的偏好和需求。

Loading Comments...