0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何使用ESP32的经典串行蓝牙来切换使用智能手机的LED

科技观察员 来源:circuitdigest 作者:阿斯温斯·拉吉 2022-10-28 17:36 次阅读

像HC-05和HC-06这样的蓝牙模块很容易设置,并且可以在Arduino IDE上快速使用,但它们有自己的限制,如高功耗,并且它们在旧的蓝牙V2.0上运行。此外,最近我给自己买了一个新的ESP32 开发套件,这些模块具有内置Wi-Fi 和蓝牙、充足的 ADCDAC 引脚、音频支持、SD 卡支持、深度睡眠模式等功能,它几乎具备构建物联网项目所需的一切。

正如任何业余爱好者都会喜欢它一样,ESP32 现在也得到了 Arduino IDE 的正式支持。早些时候,我们必须对尼尔·科尔班斯库做一个巨大的解决方法,但现在由于这个家伙的辛勤工作,用Arduino IDE编程ESP32已经成为一个蛋糕。因此,我启动了我的Arduino IDE,并深入研究了几个示例BLE程序,通过这些程序我一无所知。经过长时间的冲浪和推拢,我意识到,如果您必须使用 ESP32 使用低功耗蓝牙 (BLE),还有很多事情需要了解。我决定在单独的文章中介绍 BLE,因此在这里我们将使用 ESP32 的经典串行蓝牙来切换使用智能手机LED

ESP32 蓝牙入门

我想尝试的第一个程序是一个简单的程序,使用它可以打开或关闭手机蓝牙终端应用程序中的LED,就像旧的HC-05天一样。但事实证明,蓝牙低功耗(BLE)并没有因此而缩进。我还发现 ESP32 模块中有两种类型的蓝牙,一种是经典蓝牙,另一种是BLE蓝牙低功耗。好吧,但是为什么呢?....为什么我们有两种类型的蓝牙,我应该为我的项目使用什么?

了解低功耗蓝牙 (BLE) 和 ESP32 经典蓝牙

顾名思义,低功耗蓝牙比经典蓝牙消耗更少的功率。它是通过根据需要通过预定义的定期更新发送数据来实现的。但与传统蓝牙不同,它不用于传输文件或音乐。你有没有想过你的手机如何自动识别你刚刚配对的蓝牙设备是音频设备或笔记本电脑或手机,你可能还看到无线音频播放器或健身乐队的电池电量自动显示在手机的状态栏中;所有这些都可以通过BLE设备的特性来实现。BLE设备可与蓝牙V4.0配合使用,并且可以作为服务器或客户端以低功耗运行,这使得BLE成为信标,智能手表,健身手环等的理想选择。

另一方面,经典蓝牙只是我们用来传输文件和其他数据的简单普通的旧蓝牙。几乎所有BLE设备都具有与之关联的经典蓝牙功能。HC-05等模块中使用的蓝牙是经典蓝牙的一个版本,称为蓝牙SSP(串行端口协议),这意味着蓝牙遵循标准串行协议,这使得发送和接收数据变得更加容易,没有太多开销。在本教程结束时,我们将学习如何在 ESP32 中使用串行蓝牙功能。

在本文中,我们将使用 ESP32 上的串行蓝牙功能将其与智能手机配对,并使用 Play 商店中任何现有的蓝牙终端应用程序向 ESP32 发送命令,并相应地切换板载 LED。

在后面的文章中,我们将介绍 ESP32 BLE 作为服务器和客户端。BLE服务器通常用于将BLE数据发送到其他蓝牙设备,BLE客户端用于扫描其他BLE设备,从而充当信标。

正在为 ESP32 准备Arduino IDE

请注意,默认情况下,Arduino IDE 不支持 ESP32 板;您必须使用主板管理器下载并安装它们。如果这是您使用 ESP32 的第一个程序,请按照此入门教程将 ESP32 开发板添加到 Arduino 并上传测试草图。
此外,您可以使用 ESP32 完成更多项目,而无需使用任何微控制器

适用于 ESP32 的串行蓝牙程序

本页末尾提供了使用 ESP32 蓝牙切换 LED的完整程序。在此标题下,让我们将代码分解为小片段并尝试理解它们。如果您已经使用过其他蓝牙模块,如 HC-05,那么您会发现这个ESP32 蓝牙经典示例程序非常相似。

该程序的想法是使用 ESP32 初始化串行蓝牙连接,并侦听来自配对设备的数据。如果传入的数据是“1”,那么我们打开LED,如果是“0”,我们应该关闭LED。我们通过添加头文件蓝牙序列开始我们的程序,这使得 ESP32 蓝牙可以作为蓝牙 SSP 工作。

#include "BluetoothSerial.h" //Header File for Serial Bluetooth, will be added by default into Arduino

这个库背后有很多事情在发生,但我们选择不深入研究它以保持简单。我们需要的下一件事是蓝牙相关操作的对象。在这里,我把我的名字命名为ESP_BT,但你可以选择任何名字。

BluetoothSerial ESP_BT; //Object for Bluetooth

接下来,在空隙设置()函数内部。我们以波特率9600开始串行通信,并使用名称初始化蓝牙信号。在这里,我将其命名为“ESP32_LED_Control”,这将是我们的手机在尝试配对时可以找到的名称。最后,我将内置LED引脚声明为输出引脚,因为我们将根据蓝牙信号切换它。

void setup() {

Serial.begin(9600); //Start Serial monitor in 9600

ESP_BT.begin("ESP32_LED_Control"); //Name of your Bluetooth Signal

Serial.println("Bluetooth Device is Ready to Pair");

pinMode (LED_BUILTIN, OUTPUT);//Specify that LED pin is output

}

在无限空洞循环函数中,我们检查是否有任何数据来自蓝牙模块,如果是,则读取数据并将其存储在传入变量中。我们还在串行监视器上打印此值,只是为了交叉检查Arduino正在接收的内容。

if (ESP_BT.available()) //Check if we receive anything from Bluetooth

{

incoming = ESP_BT.read(); //Read what we recevive

Serial.print("Received:"); Serial.println(incoming);

现在,接收到的任何数据都存储在传入的变量中,因此我们可以直接将此变量与预期值进行比较并执行所需的操作。但是从蓝牙发送的值将采用字符形式,Arduino 将读取从手机发送的字符的十进制值。在我们的例子中,对于字符“0”,十进制值将为48,对于字符“1”,十进制值将为49。您可以参考 ASCII 图表来了解每个字符的十进制值。

在这里,我们将传入变量与 48 和 49 进行了比较,以分别检查 0 和 1。如果是1,那么我们关闭LED,并将确认消息打印回蓝牙,说LED已关闭,反之亦然。

if (incoming == 49)

{

digitalWrite(LED_BUILTIN, HIGH);

ESP_BT.println("LED turned ON");

}

if (incoming == 48)

{

digitalWrite(LED_BUILTIN, LOW);

ESP_BT.println("LED turned OFF");

}

使用 ESP32 测试串行蓝牙

将 ESP 连接到 Arduino IDE,然后选择正确的电路板和端口,如入门教程中所述。因为它是一个3断续器方板管理器 编译和上传代码可能需要更长的时间。上传后,启动串行监视器(仅用于调试)并打开手机上的蓝牙设置。您应该找到一个名为ESP32_LED_Control配对的蓝牙设备。

pYYBAGNbooiANa5qAAA5X8_Xec4100.png

现在,您可以在智能手机上打开任何蓝牙终端应用程序,我正在使用从Google应用商店下载的名为“蓝牙终端”的应用程序。将蓝牙应用程序连接到我们刚刚配对的设备,然后键入1并按发送。

poYBAGNbooqAPxD4AABQ5pv1TMc229.png

ESP32 模块应按照我们的程序接收并打开 LED,并向您发送确认消息,指出 LED 已打开,如上图所示。您还可以检查串行监视器,它将以十进制格式显示 ESP32 蓝牙接收的数据,即 Arduino 将按 48 表示 0 和 49 表示 1,如前所述。我的终端窗口的快照如下所示。

pYYBAGNbooqAQ8zFAAAL0YZFtpc925.png

poYBAGNboo6AG-qlAAC7_MZo1j0270.jpg

同样,您还应该能够通过从移动应用程序发送0来关闭LED。

/*Program to control LED (ON/OFF) from ESP32 using Serial Bluetooth

* Thanks to Neil Kolbans for his efoorts in adding the support to Arduino IDE

* Turotial on: www.circuitdigest.com

*/


#include "BluetoothSerial.h" //Header File for Serial Bluetooth, will be added by default into Arduino



BluetoothSerial ESP_BT; //Object for Bluetooth


int incoming;

int LED_BUILTIN = 2;


void setup() {

Serial.begin(9600); //Start Serial monitor in 9600

ESP_BT.begin("ESP32_LED_Control"); //Name of your Bluetooth Signal

Serial.println("Bluetooth Device is Ready to Pair");


pinMode (LED_BUILTIN, OUTPUT);//Specify that LED pin is output

}


void loop() {



if (ESP_BT.available()) //Check if we receive anything from Bluetooth

{

incoming = ESP_BT.read(); //Read what we recevive

Serial.print("Received:"); Serial.println(incoming);


if (incoming == 49)

{

digitalWrite(LED_BUILTIN, HIGH);

ESP_BT.println("LED turned ON");

}



if (incoming == 48)

{

digitalWrite(LED_BUILTIN, LOW);

ESP_BT.println("LED turned OFF");

}

}

delay(20);

}

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • led
    led
    +关注

    关注

    237

    文章

    22456

    浏览量

    645903
  • BLE
    BLE
    +关注

    关注

    12

    文章

    608

    浏览量

    58855
  • 低功耗蓝牙
    +关注

    关注

    1

    文章

    184

    浏览量

    20758
收藏 人收藏

    评论

    相关推荐

    如何快速开发智能手机新外设-蓝牙4.0说了算

    `如何快速开发智能手机新外设―论低功耗蓝牙技术在智能移动设备中的应用―USB协议的产生,让个人电脑的外设如雨后春笋般地涌现。同样,做为智能手机最新开放的低功耗
    发表于 03-02 10:19

    蓝牙4.0模块如何让客户快速开发智能手机新外设

    `如何快速开发智能手机新外设―论低功耗蓝牙技术在智能移动设备中的应用―USB协议的产生,让个人电脑的外设如雨后春笋般地涌现。同样,做为智能手机最新开放的低功耗
    发表于 03-21 11:17

    智能手机

    智能手机图纸谁有呢能看清
    发表于 06-23 19:55

    智能手机如何判断人脸的贴近

    智能手机里应用的传感器是多种多样的,其中距离传感器就是智能手机里面经常应用的一种传感器,距离传感器有什么作用呢?我们都知道,智能手机都是触屏手机,当人体接触屏幕时,能激活相应用的应用软
    发表于 09-30 16:03

    智能手机加平板

    怎样把智能手机中的蓝牙和GPS.sim通讯硬件和软件移植到平板电脑里、望高手赐教、给个思路
    发表于 10-15 18:20

    模拟智能手机

    STM32单片机模拟智能手机
    发表于 09-26 10:19

    你怎么定义智能手机壳,觉得高科技+手机壳=智能手机壳吗?!

    搜到的这个宝就是MOPIC的3D智能手机壳,瞬间感觉这就是为我准备滴^&^~为啥说它是个宝,一起来看看就知道了。你怎么定义智能手机壳,觉得高科技+手机壳=智能手机
    发表于 01-05 09:56

    自动对焦在智能手机的应用

    作者:高级产品营销经理Jason Whetstone当今最想要的智能手机特性对于许多用户,相机性能已成为一台智能手机最重要的方面。社交媒体和线上业务使每个人都成为摄影师或影片导演,辅以几百万像素
    发表于 07-16 08:50

    智能手机怎么才能更加智能

    很明显,智能手机不仅融入了我们的日常商业活动,而且融入了我们的日常生活。过去,智能手机被定义为采用专用操作系统(OS)的蜂窝电话。这意味着智能手机可以增加或安装/删除应用软件,虽然这种定义稍嫌简单了点。今天的
    发表于 08-20 08:32

    如何设计智能手机省电系统?

    智能手机中包含了很多耗能设备, 诸如MP3、MPEG- 4、Wi-Fi、数码相机、3D 游戏等等。在手机电池容量还没有实现质的飞跃的前提下, 我们不得不考虑手机电源节能的问题。我主要通过了以下四个方面
    发表于 11-05 08:03

    用8051通过HC-05蓝牙模块与智能手机通信控制门锁

    描述使用8051的蓝牙门锁使用您的智能手机通过蓝牙控制您家的门锁。 系统使用 8051 通过 HC-05 蓝牙模块与智能手机通信,如果密码正
    发表于 09-14 06:45

    ESP32 A2DP蓝牙音频来电话时如何自动切换到手机

    使用ESP32 A2DP蓝牙音频制作了蓝牙音箱,但是手机来电话时,通话也走ESP32,如何接电话时自动
    发表于 02-13 06:06

    ESP32 A2DP蓝牙音频,来电话时如何自动切换到手机

    使用ESP32 A2DP蓝牙音频制作了蓝牙音箱,但是手机来电话时,通话也走ESP32,如何接电话时自动
    发表于 03-06 06:21

    HC05 蓝牙模块 连接 ESP32 经典蓝牙

    概述HC05是一款常用的经典蓝牙模块,某宝有大量销售,主从机一体,而ESP32蓝牙兼容经典蓝牙
    发表于 11-24 12:36 63次下载
    HC05 <b class='flag-5'>蓝牙</b>模块 连接 <b class='flag-5'>ESP32</b> <b class='flag-5'>经典</b><b class='flag-5'>蓝牙</b>

    如何使用ESP32构建一个BLE iBeacon

    在本教程中,我们将使用 ESP32 构建一个 BLE iBeacon,其中 ESP32 将充当服务器,智能手机将充当客户端。
    发表于 07-12 16:48 5694次阅读
    如何使用<b class='flag-5'>ESP32</b>构建一个BLE iBeacon