如何设置和编程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蓝牙的示例代码并将其上传到您的板。一旦代码被上传,你就可以通过安卓手机将它与你的电路板配对。