一.蓝牙的介绍
蓝牙是使用2.4G频道、近距离、低功耗的无线通信技术
现在的蓝牙基本上可以分为经典蓝牙和BLE蓝牙(低功耗蓝牙)两种
经典蓝牙:蓝牙最初的设计意图,是打电话放音乐。3.0版本以下的蓝牙,都称为“经典蓝牙”。以后版本的,所有使用BR/EDR技术的都是经典蓝牙,功耗高、传输数据量大、传输距离只有10米。
低功耗蓝牙:就是BLE,通常说的蓝牙4.0(及以上版本)中使用LE技术的蓝牙。低功耗,数据量小,距离50米左右。缺点是比起传统蓝牙速度比较慢。蓝牙低功耗多用于手环/智能手表/信标等数量低但是对功耗敏感的设备上。
我们esp32板为s3系列,它支持低功耗蓝牙(BLE),但不支持经典蓝牙。
所以,我们主要学习低功耗蓝牙(BLE)怎么使用
关于蓝牙的知识相当多,本节课主要简单和大家讲一下怎么运用esp32的库来使用蓝牙
想详细了解,推荐去看b站up主:小鱼创意

二.低功耗蓝牙的运用原理
在学习应用前,了解一些知识:
低功耗蓝牙设备分为主设备和从设备
主设备会持续扫描以发现附近的从设备,最多连接7台从设备
从设备定期发送广播包,使主设备能够检测到它们的存在。
主设备和从设备之间的数据传输是通过ATT协议实现的,这是BLE的核心协议之一。
低功耗蓝牙设备分为主设备和从设备
主设备会持续扫描以发现附近的从设备,最多连接7台从设备
从设备定期发送广播包,使主设备能够检测到它们的存在。
主设备和从设备之间的数据传输是通过ATT协议实现的,这是BLE的核心协议之一。
服务和特征UUID
服务和特征UUID都是在蓝牙低能耗技术中用来唯一标识服务和特征的字符串。
每个蓝牙服务和特性都有一个唯一的UUID,这样设备就可以通过这些UUID来识别和交互。
特征
特征是BLE设备中的一个数据实体,它通常与一个值和一个描述符相关联,特征是BLE通信中数据交换的实际载体。
三.低功耗蓝牙的代码部分

库为esp32自带的,头文件直接引用即可
Uuid要用生成uuid的工具来生成,不能自己手动写

这里声明了两个全局指针变量,分别用于指向BLE服务器和BLE特征。
然后介绍setup里的部分了

首先用初始化函数初始化ble设备,并且命名
然后,要创建一个服务器,且在里面创建一个服务,对于服务,还要用之前定义的服务uuid

在服务里创建特征,并用之前的特征uuid,可读可写是对于数据的发送与接收

初始化特征值,是啥无所谓,写入回调函数,发送数据会调用回调函数

开始服务与广播,连接的必要步骤
开启广播,设置一些必要的属性

四.连接蓝牙,并收发信息
在手机上下载一个BLE调试助手,连接蓝牙

看到蓝牙名字,点进去
最后一个

向上的箭头为发送数据,向下的箭头为接收数据
虽然最后完成了蓝牙传输信息,但它还不是一个完整的上位机,我们还得写一个软件来展示,比如其中按钮能直接发送一个值,更加方便,不过我就不展示了
