- 用于物联网的 ESP32 教程
- 首页
- 物联网概述
- ESP32 简介
- 在 Arduino IDE 中安装 ESP32 开发板
- 设置 RTOS 以进行双核和多线程操作
- ESP32 与 MPU6050 接口
- ESP32 与模拟传感器接口
- ESP32 首选项
- ESP32 SPIFFS 存储(芯片本身的迷你 SD 卡)
- ESP32 与 OLED 显示屏接口
- ESP32 上的 WiFi
- 使用 HTTP 通过 WiFi 传输数据
- 使用 HTTPS 通过 WiFi 传输数据
- 使用 MQTT 通过 WiFi 传输数据
- 通过蓝牙传输数据
- 使用 NTP 客户端获取当前时间
- 执行 ESP32 固件的(OTA)更新
- ESP32 的应用
- 开发人员的后续步骤
- 用于物联网的 ESP32 有用资源
- 快速指南
- 有用资源
- 讨论
通过蓝牙经典版传输数据
本章将介绍如何使用 ESP32 通过蓝牙传输数据。Arduino 拥有一个专用于 ESP32 的 BluetoothSerial 库,它使通过蓝牙传输数据变得像传输数据到串口监视器一样简单。我们将了解如何围绕 ESP32 创建蓝牙字段,将我们的智能手机连接到该字段,并与 ESP32 通信。
代码演练
我们将使用本章中的示例代码。您可以在 File -> Examples -> BluetoothSerial -> SerialToSerialBT 中找到它。它也可以在 GitHub 上找到。
我们从包含 BluetoothSerial 库开始。
#include <BluetoothSerial.h>
如果您没有使用过 ESP32,那么接下来的几行代码有点无关紧要。它们检查蓝牙配置是否已启用,如果未启用则会发出警告。蓝牙配置在您的 ESP32 上默认启用,因此,如果您仅将 ESP32 与 Arduino IDE 配合使用,则可以将这些行注释掉。错误消息中提到的 make menuconfig 实际上是通过 ESP-IDF 访问的,而不是通过 Arduino IDE 访问的。所以,底线是,不要担心这些行。
#if !defined(CONFIG_BT_ENABLED) || !defined(CONFIG_BLUEDROID_ENABLED) #error Bluetooth is not enabled! Please run `make menuconfig` to and enable it #endif
接下来,我们定义 BluetoothSerial 对象。
BluetoothSerial SerialBT;
在 setup 中,我们将使用 **SerialBT.begin()** 函数开始围绕 ESP32 的蓝牙字段。此函数接受一个参数,即蓝牙设备的名称(在本例中为 ESP32)。这是您在手机上扫描蓝牙网络时将显示的名称。
void setup() { Serial.begin(115200); SerialBT.begin("ESP32test"); //Bluetooth device name Serial.println("The device started, now you can pair it with bluetooth!"); }
现在,循环在这里非常简单。如果您在 Serial 上有任何传入的文本(即您在串口监视器上输入的文本),请将其通过 SerialBT 发送。如果您从 SerialBT 收到任何文本,请通过 Serial 发送它,或者换句话说,在串口监视器上打印它。
void loop() { if (Serial.available()) { SerialBT.write(Serial.read()); } if (SerialBT.available()) { Serial.write(SerialBT.read()); } delay(20); }
测试代码
要测试此代码,建议您在智能手机上下载一个串口蓝牙终端应用程序(以下所示或任何等效应用程序)。它将帮助您与 ESP32 配对,显示从 ESP32 收到的消息,并帮助您向 ESP32 发送消息。
要在 Android 设备上安装它,请点击 此处。iOS 的等效应用程序可以是 BluTerm。
您可以在下面找到使用串口蓝牙终端应用程序执行的测试的屏幕截图。我已将 ESP32 的蓝牙名称更改为“ESP32test345”,因为我已经将我的手机与另一个蓝牙名称为“ESP32test”的 ESP32 配对。配对完成后,可以在串口蓝牙终端应用程序中添加该设备,然后您可以像在消息应用程序中与其他用户通信一样与您的设备通信。
配对和通信
Arduino 串口终端的对应视图
恭喜。您已使用蓝牙与 ESP32 通信。继续探索 BluetoothSerial 库附带的其他示例。
注意 - 您可能会想要在 ESP32 上同时使用 WiFi 和蓝牙。不建议这样做。虽然 ESP32 具有用于 WiFi 和蓝牙的独立堆栈,但它们共享一个公共无线电天线。因此,当两个堆栈都试图访问天线时,模块的行为变得不可预测。建议一次只允许一个堆栈访问天线。