如何设置和编程ESP32通过蓝牙与Android智能手机通信

ESP32是一个具有广泛功能的微控制器板。它有内置的Wi-Fi和蓝牙模块。使用这两个模块,您可以对ESP32进行无线编程。这样,您就不必担心控制ESP32外围设备的长线连接。

在本文中,我们将ESP32板与Android手机连接,并通过蓝牙进行数据通信。此外,我们将通过Android智能手机直接控制与ESP32的GPIO引脚连接的LED。

内容:

  • 什么是ESP32蓝牙LE
  • 如何编程ESP32通过蓝牙与Android智能手机通信
  • 连接ESP32蓝牙与Android手机的步骤
  • 线路图
  • 硬件
  • 输出
  • 结论

什么是ESP32蓝牙LE

ESP32是一个微控制器板,支持蓝牙经典和蓝牙低能量,也被称为智能蓝牙。BLE或智能蓝牙是专为节能通信或设计用于短距离通信或小数据传输。

ESP32的BLE功能使其能够在蓝牙通信中充当服务器或客户端。它可以处理诸如读写服务之类的任务。它还可以加密连接并建立串口配置文件(SPP)连接,用于UART-BLE直通模式下的数据传输。ESP32蓝牙支持4.2协议,这意味着它与物理层(PHY)和链路层(LL)等不同层兼容。它还支持主机控制器接口(HCI)等。

查看ESP32 Classic和BLE蓝牙的差异表。

功能 经典的蓝牙 低功耗蓝牙(BLE)
沟通的类型 持续的双向沟通 间歇性的,主要是单向的数据爆发
经营范围 能伸到100米吗 通常在100米以下运行
用电 功耗高达1瓦 范围从10毫瓦到500毫瓦
传输速度 数据传输速率从每秒1兆到每秒3兆不等 支持125千比特/秒到2兆比特/秒
响应时间 延迟约100毫秒 快速响应,延迟6毫秒
声音的支持 配备语音传输 缺乏语音传输功能

查看这些ESP32蓝牙的文章,以获得更多的内部信息。

  • ESP32蓝牙-终极指南
  • ESP32 -蓝牙经典vs低功耗蓝牙(BLE)

如何编程ESP32通过蓝牙与Android智能手机通信

要对ESP32进行编程,使其能够使用蓝牙协议与Android手机通信,您必须设置ESP32蓝牙串行库。为此,您必须安装带有ESP32板的Arduino IDE设置。

设置ESP32蓝牙后,您需要安装蓝牙串口Android应用程序。这将允许您使用蓝牙串行通信从Android手机向ESP32发送指令。

让我们仔细看看每一个步骤:

连接ESP32蓝牙与Android手机的步骤

按照以下步骤对ESP32板进行蓝牙通信编程:

步骤1:在Arduino IDE中安装ESP32板

要在Arduino IDE上安装ESP32,只需遵循本文提供的指南即可。

在Arduino IDE中安装ESP32板

安装完成后,ESP32板可以使用Arduino IDE进行连接和编程。

步骤2:上传ESP32蓝牙代码

一旦安装了ESP32板,您将在Arduino IDE中看到不同的预安装库及其示例。所有这些库都与ESP32板相关。对于蓝牙串行通信,我们将使用ESP32 BluetoothSerial.h库示例代码。

打开示例代码,打开Arduino IDE,转到:文件>示例> BluetoothSerial > SerialtoSerialBT

要打开此示例代码,请确保选择ESP32板。

打开示例代码后,您将在Arduino IDE窗口中看到以下代码:

//欢迎使用Linuxhint

# include“BluetoothSerial.h”

//#define USE_PIN //如果在配对过程中需要PIN,取消注释

Const char *pin = "1234";//定义自定义配对PIN

String device_name = "ESP32";

定义(CONFIG_BT_ENABLED) || !defined(CONFIG_BLUEDROID_ENABLED)

蓝牙未启用!运行' make menuconfig '命令启用它

# endif

#如果! (CONFIG_BT_SPP_ENABLED定义)

串行蓝牙丢失或未启用。它只适用于ESP32芯片。

# endif

BluetoothSerial SerialBT;

无效设置(){

Serial.begin (115200);

SerialBT.begin (device_name);//蓝牙设备名称

系列。设备“%s”已启动。开始配对您的设备! n”,device_name.c_str ());

/ /串行。MAC地址为%s的设备“%s”已启动。 n开始与蓝牙配对!n", device_name.c_str(), SerialBT.getMacString());

# ifdef USE_PIN

SerialBT.setPin(销);

系列。println(“使用销”);

# endif

}

Void loop() {

if (Serial.available()) {

SerialBT.write (Serial.read ());

}

if (serialt .available()) {

Serial.write (SerialBT.read ());

}

延迟(20);

}

上传代码后,您将在屏幕上看到以下消息。此消息描述您的ESP32板已经准备好进行配对。

步骤3:代码解释

该代码首先包含必要的库并检查蓝牙可用性。它还为蓝牙设备名称和PIN设置变量。

在setup()函数中,定义了串行波特通信,并用其名称初始化蓝牙设备。在配对过程中可以设置自定义PIN进行身份验证。

loop()函数不断检查串行和蓝牙连接上的数据。这允许它在ESP32和配对的蓝牙设备之间建立双向通信。

步骤4:安装Android应用程序

上传代码后,下一步是安装和配置用于蓝牙连接的Android应用程序。

打开Play Store,安装串口蓝牙终端应用程序。

安装完成后,打开智能手机蓝牙设置,将手机连接到ESP32蓝牙。如果你在Arduino IDE代码中定义了PIN,你必须输入PIN,否则它将直接连接。

现在打开Serial Bluetooth应用程序并选择Devices选项。

在新打开的菜单中选择ESP32设备。此列表显示当前所有活动的蓝牙设备。

如您所见,ESP32蓝牙连接到您的安卓智能手机。

为了测试连接,我们将发送一个字符串。这里我发送了两个不同的字符串。

您将注意到,同样的两个字符串也将显示在Arduino IDE终端上。

现在让我们更进一步,通过Android智能手机使用ESP32蓝牙控制LED等外部外设。

第五步:用安卓手机通过蓝牙控制LED

要使用ESP32和Android蓝牙控制LED,首先修改上述代码并为LED定义GPIO引脚。之后,您必须设置打开和关闭LED的值。

上传下面的代码以继续下一步。

#include //包含蓝牙串行通信库

#define LED_PIN 15 //定义LED引脚

BluetoothSerial SerialBT;//创建一个BluetoothSerial对象

字节BT_INP;//存储蓝牙输入的变量

//检查SDK配置中是否启用了蓝牙和bluedoid

定义(CONFIG_BT_ENABLED) || !defined(CONFIG_BLUEDROID_ENABLED)

蓝牙未启用。运行' make menuconfig '命令启用它。

# endif

无效设置(){

pinMode (LED_PIN、输出);//设置LED引脚为输出

Serial.begin (115200);

SerialBT.begin(“ESP32”);//初始化名称为ESP32的蓝牙

系列。println("Bluetooth device is ready to pair.");//表示蓝牙已经准备好

}

Void loop() {

//检查是否有数据可以从蓝牙读取

if (serialt .available()) {

BT_INP = serialt .read();//从蓝牙读取传入字节

Serial.write (BT_INP);//将读取的字节回显到串行监视器

}

//检查接收到的蓝牙数据并设置LED状态

if (BT_INP == '1') {

digitalWrite (LED_PIN、高);//如果接收到'1',则打开LED

} else if (BT_INP == '0') {

digitalWrite (LED_PIN、低);//如果接收到'0',关闭LED

}

}

这个代码是为ESP32微控制器控制一个LED使用蓝牙。它包括一个用于蓝牙通信的库。接下来,它定义LED引脚并使用名为ESP32的设备设置蓝牙。主循环读取蓝牙数据,并根据接收到的命令(1为开,0为关)打开或关闭LED。

线路图

电路图很简单,一个LED连接在ESP32的引脚D15。您可以为LED控制定义任何其他GPIO。

相关:ESP32引脚参考-终极指南

硬件

在硬件方面,您将需要一个面包板,一个ESP32板和一个LED。将ESP32与系统连接并上传程序。

现在从Android手机的蓝牙串行通信应用程序发送1和0。

您将在从Android手机接收到的Arduino IDE终端上看到相同的输入。

输出

一旦你发送高或1值LED将打开,类似地,当你发送低值LED将关闭。

设置自定义按钮

您还可以在串行蓝牙应用程序中设置自定义按钮。例如,可以创建一个HIGH和LOW值按钮。这样,您就不必手动键入值。相反,你只需要按下快捷键,它就会执行你设置的指令。

注意:要打开按钮设置,长按按钮。

要设置HIGH按钮值,请定义以下设置。

对于LOW按钮值的相似性,您需要定义以下设置。

我们已经成功地使用蓝牙将ESP32板与Android手机连接起来。现在您可以使用它创建许多项目。例如,您可以通过继电器电路使用ESP32蓝牙来控制家用电器。

相关:继电器与ESP32使用Arduino IDE

结论

ESP32是一种先进的微控制器板,具有Wi-Fi和蓝牙功能。这两个内置模块都可以帮助您设计高级项目并无线控制外围设备。同样,您可以将ESP32与Android手机连接,并执行不同的操作。为此,您需要安装Bluetooth Serial Android应用程序。安装后,打开ESP32蓝牙的示例代码并将其上传到您的板。一旦代码被上传,你就可以通过安卓手机将它与你的电路板配对。