Arduino使用蓝牙BLE模块

通过这篇文章,你可以了解到以下内容:

  • 什么是蓝牙BLE 4.0
  • 如何设置蓝牙BLE 的 AT 指令
  • Arduino 连接蓝牙 BLE 与 iOS 设备互联实践

了解 BLE 4.0

BLE 全称是 Bluetooth Low Energy 低功耗蓝牙的缩写,是蓝牙 4.0 的一个分支。

BLE 支持 iPhone4s 以上的 iOS 设备,并且无需做 MFI 认证,因此对于个人开发者及一些中小型开发团队快速开发硬件原型以及智能家居等产品设备有着极大的便利。

作为 Arduino 开发者,我们常见的蓝牙 BLE 模块主要是采用美国TI公司CC2541芯片的模块,这种模块比较容易购买,现在能买到的蓝牙BLE模块主要有两种,一种是已经焊接好,带有针脚的模块,另外一种是没有焊接针脚的,用户可以根据自己项目及需求的实际情况进行选择。

设置 AT指令

我们可以通过USB-TTL 模块蓝牙BLE与电脑连接,使用蓝牙串口助手软件对蓝牙BLE模块进行调试。

USB-TTLBLE4.0 的连接方法如下:

BLE4.0 USB-TTL
VCC 3.3V
GND GND
TXD RXD
RXD TXD

注意,在通电之前,请确保连接正确,以防因连接错误而损坏模块设备!
接线完成后,把 USB-TTL 连接电脑,打开串口调试软件(可以根据自己的使用习惯选择串口调试软件),选择好正确的端口号,打开串口即可通讯。

Arduino使用蓝牙BLE模块_第1张图片

BLE4.0的AT指令大致与HC05蓝牙模块类似,详细AT指令请参考购买时商家提供的手册。

这里有一点需要注意,BLE4.0模块进入AT指令设置模式,不需要向HC05一样需要按着模块电路板上的按钮,但是需要确保该模块没有被连接。

Arduino 连接蓝牙 BLE 与 iOS 设备互联实践

接下来,我们将尝试使用Arduino和BLE4.0模块与 iOS 设备进行互联通信。进行这个实验,我们需要预先准备好以下内容:

名称 数量
iOS 设备 1
Arduino 1
BLE 4.0模块 1
FM连接线 若干
LightBlue App 1

准备好后,下面开始连接 Arduino 和 BLE4.0 模块:

Arduino BLE4.0
5V VCC
GND GND
TX RXD
RX TXD

连接完成后,我们接着为 Arduino 编写程序。程序非常简单,程序的主要功能为接收蓝牙数据,如果截获数据为A,那么久返回 BLE get char A.。程序代码如下:

void setup()
{
    Serial.begin(9600);
}

void loop()
{
    while(Serial.available()){
        char c = Serial.read();
        if (c == 'A') {
            Serial.println("BLE get char A.");
        }
    }
}

编译上传程序到 Arduino 上之后,我们打开 LightBlue,测试是否能正常使用。

Arduino使用蓝牙BLE模块_第2张图片

打开 LightBlue App,打开蓝牙,我们可以看到周围的蓝牙设备,我们这里的 BLE4.0 设备名称是 BT05,接下来,我们点击 BT05 ,可以看到左上方显示 Connected 字样,代表连接成功。接下来,我们下拉到最下面,点击 TX&RX 进入 TX&RX 子页,可以看到以下的内容:

Arduino使用蓝牙BLE模块_第3张图片

注意页面的最右上方,这里现在是显示 Hex,我们需要的是使用 UTF-8 编码方式进行通讯,因此,我们点击 Hex,进入设置页面,选择 UTF-8 String 设置编码方式为 UTF-8 编码。

Arduino使用蓝牙BLE模块_第4张图片

设置完成后,我们就可以通过 WRITTEN VALUES 来输入发送数据,然后可以在 READ/NOTIFIED VALUES 里面看到 Arduino 返回的数据。

Arduino使用蓝牙BLE模块_第5张图片

我们可以看到,LightBlue 已经收到 Arduino 返回的 BLE get char A. 字符串,到这里为止,实验成功。

小结

这篇文章简单介绍了BLE的特点,以及如何视同 USB-TTL 设置蓝牙模块的AT指令,最后通过一个Arduino蓝牙与iOS设备连接的小实验来了解手机和Arduino蓝牙是如何通信的。如果你需要了解蓝牙HC05模块的使用方法,可以参考另外一篇文章Arduino使用HC05蓝牙模块与手机连接。

参考资料

蓝牙4.0BLE模块兼容Arduino

你可能感兴趣的:(Arduino,/,IoT)