esp32 ble主从机
时间: 2025-05-07 21:46:11 浏览: 39
### ESP32 BLE 主从机配置与代码示例
#### 配置方法
对于ESP32作为BLE主机和从机的操作,通常涉及初始化BLE库并设置相应的角色。当ESP32充当BLE主机时,它会扫描周围可用的BLE设备并与之建立连接;而作为从机,则等待其他设备发起连接请求。
为了使ESP32能够支持这两种模式,在Arduino IDE环境中安装特定版本的ESP32板管理器是必要的[^1]。完成此操作之后,可以利用`NimBLE`或`BluetoothSerial`类来实现具体功能。
#### 工作原理
ESP32通过其内置的蓝牙模块实现了对BLE协议的支持。在BLE通信中,数据传输基于服务和服务特征的概念。每个BLE应用定义了一组特性(characteristics),这些特性描述了如何读取、写入以及通知远程设备有关本地状态的信息变化情况。无论是作为主站还是从站运行,ESP32都遵循这一标准框架来进行交互。
- **作为主机**: 发起GAP广播包监听,并尝试与其他外围设备配对形成链路层连接。
- **作为从机**: 响应来自中心节点(GATT客户端)的服务发现请求,并提供访问权限给已知特性的值。
#### 代码示例
以下是两个简单的例子分别展示了ESP32作为BLE主机和从机的基本编程方式:
##### ESP32作为BLE主机
```cpp
#include <NimBLEDevice.h>
#include <NimBLEScan.h>
void setup() {
Serial.begin(115200);
NimBLEDevice::init("MyESP32");
}
void loop() {
NimBLEScan* pBLEScan = NimBLEDevice::getScan();
pBLEScan->start(5); // 扫描持续时间为5秒
}
```
##### ESP32作为BLE从机
```cpp
#include <NimBLEDevice.h>
#include <NimBLEServer.h>
// 创建服务UUID和服务中的一个特征UUID
#define SERVICE_UUID "4fafc201-1fb5-459e-8fcc-c5c9c331914b"
#define CHARACTERISTIC_UUID "beb5483e-36e1-4688-b7f5-ea07361b26a8"
void setup(){
Serial.begin(115200);
NimBLEDevice::init("ESP32_BLE_SERVER");
NimBLEServer *pServer = NimBLEDevice::createServer();
NimBLERemoteService *pRemoteService = pServer->createService(SERVICE_UUID);
NimBLERemoteCharacteristic *pRemoteCharacteristic =
pRemoteService->addCharacteristic(
CHARACTERISTIC_UUID,
NIMBLE_PROPERTY::READ | NIMBLE_PROPERTY::WRITE
);
pRemoteService->start();
}
void loop(){}
```
阅读全文
相关推荐




















