接近传感器可以描述为一种借助光,电磁场或声音检测附近物体的开关之一。通常,这些类型的设备旨在检测附近的对象,并且通常是大多数传感器都将在实际应用中使用。但是在某些情况下,对象离传感器很远,或者对象被传感器阻挡。障碍物,在这种情况下,我们可以使用BLE(蓝牙低能耗)设备来检测和感知物体的接近程度。ESP32开发板具有内置的BLE,我们已在许多其他项目中使用了BLE。如果您完全不熟悉BLE,请查看我们之前构建的ESP32 BLE客户端和ESP32 BLE Server项目。之前,我们还使用ESP32构建了一个蓝牙iBeacon。
在本文中,我将向您展示如何在ESP32和Arduino的帮助下制作一个简单的BLE存在检测器,最后,我们将在我的智能手机和智能手表上使用BLE测试这些设备。
什么是蓝牙低功耗(BLE)?
BLE代表低功耗蓝牙(Bluetooth Low Energy),它出现在2011年的日常生活中,因为每年的那个时候,每个主要制造商都开始在其设备上嵌入BLE技术。BLE是一种低功耗无线通信技术,专为电池供电应用而开发,可用于在短距离内在设备之间进行通信。您每天使用的某些设备内置了蓝牙功能,例如智能手机,智能手表,无线 耳塞,无线 扬声器,智能 家居 设备,以及更多嵌入式蓝牙来进行通信或获取位置数据。
BLE是一项相对较新的技术,BLE协议是由蓝牙特殊利益组织(Bluetooth Special Interest Group,简称SIG)开发的,其主要目标是使低功耗设备成为现实。尽管新制定的协议的名称保持不变,但新开发的BLE协议并不向后兼容,这意味着我们的Bluetooth Classic设备无法与BLE设备通信,尽管该技术有缺点,但它使开发人员能够产生非常低的能耗使用小型纽扣电池可以使用数月甚至数年的高效设备。
BLE通信如何工作?
BLE使用分层数据结构来发送和接收信息。充当服务器的BLE设备将通告客户端可以检测到的服务和特征,并且一旦信息交换成功,BLE设备就可以同时相互通信。从技术上讲,此信息堆栈一起被称为BLE设备的属性。它是使用GATT(通用属性)配置文件定义和实现的。在这些概要文件中,我们具有服务,特征和值(按层次结构排列)。服务包含特征,特征包含值,通过读取特征,我们可以读取值和值随时间的变化。
可以处理特征以包括读取或写入信息。包含读取组件的设备可以发布信息,而包含写入特征的设备可以从客户端接收数据。
在其下定义服务和特征的GATT配置文件称为通用唯一标识符(UUID)。如果我们阅读BLE设备的UUID,则SIG公司会定义和保留一些标准服务和特性,我们可以立即知道它是哪种设备。