要在 ESP32-C3 上接入蓝牙,您需要使用 Arduino IDE 或 ESP-IDF 来编写代码。下面是一个简单的示例,演示如何将 ESP32-C3 设置为蓝牙服务器,并处理客户端连接。
1. 硬件准备
确保您有以下设备:
- 一块 ESP32-C3 开发板
- 一个 USB 数据线用于与计算机连接
2. 软件准备
确保您已经安装了 Arduino IDE,并添加了 ESP32 支持。可以在 Arduino IDE 的库管理器中搜索并安装相关库。
3. 示例代码
以下是一个简单的蓝牙服务器示例,它使得 ESP32-C3 能够通过 BLE 接收数据:
#include "BLEDevice.h"
#include "BLEServer.h"
// 定义服务和特征的UUID
#define SERVICE_UUID "12345678-1234-5678-1234-56789abcdef0"
#define CHARACTERISTIC_UUID "12345678-1234-5678-1234-56789abcdef1"
// 创建一个 BLE Server 和一个特征变量
BLEServer *pServer = NULL;
BLECharacteristic *pCharacteristic = NULL;
// 蓝牙客户端连接状态回调
class MyServerCallbacks: public BLEServerCallbacks {
void onConnect(BLEServer* pServer) {
Serial.println("Client Connected");
}
void onDisconnect(BLEServer* pServer) {
Serial.println("Client Disconnected");
}
};
void setup() {
Serial.begin(115200);
// 初始化 BLE 设备
BLEDevice::init("ESP32-C3_BLE");
// 创建服务器实例
pServer = BLEDevice::createServer();
pServer->setCallbacks(new MyServerCallbacks());
// 创建服务并开始服务
BLEService *pService = pServer->createService(SERVICE_UUID);
// 创建特征并添加到服务中
pCharacteristic = pService->createCharacteristic(
CHARACTERISTIC_UUID,
BLEProperty::READ | BLEProperty::WRITE);
// 启动服务
pService->start();
// 开始广播以便其他设备可以找到此设备
pServer->getAdvertising()->start();
Serial.println("Waiting for a client connection...");
}
void loop() {
// 在这里处理你想要的逻辑,例如从特征读取数据或者发送数据给客户端
if (pCharacteristic->getValue().length() > 0) {
Serial.print("Received: ");
Serial.println(pCharacteristic->getValue().c_str());
// 在这里执行相应操作,比如控制 LED 等等...
}
delay(1000); // 每秒检查一次新的值
}
4. 编译和上传代码
- 将以上代码复制到 Arduino IDE 中。
- 确保选择正确的开发板(Tools -> Board -> ESP32C3 Dev Module)。
- 上传代码到您的 ESP32-C3 开发板。
5. 测试
一旦程序运行成功,您应该能够使用手机上的 Bluetooth Scanner 应用程序找到名为 “ESP32-C3_BLE” 的设备。连接后,您可以读取和写入定义的特性值。
注意事项
- 确保在
setup函数中正确设置 UUID,以避免与其他服务或特性冲突。 - 您还可以根据需求扩展功能,例如向其他 Bluetooth 客户端发送通知、实现更多的自定义命令等。
如果遇到任何问题,请检查串口监视器中的输出信息,这通常能帮助定位问题所在。
内容由零声教学AI助手提供,问题来源于学员提问




