wenbo2005.online

学习记录 / Arduino 与 ESP

ESP32 蓝牙代码

Arduino 与 ESP2026-01-28
#include <Arduino.h>
#include <bledevice.h>
#include <ble2902.h>

BLEDevice BLE;
BLEServer* pServer = nullptr;
BLECharacteristic* pCharacteristic = nullptr;

//服务UUID
#define SERVICE_UUID  "0000200H-0000-1000-8000-00805F9B34FB"
//特征UUID
#define CHARACTERISTIC_UUID "0000200H-0001-1000-8000-00805F9B34FB"

class MyServerCallbacks : public BLEServerCallbacks

{
  void onConnect(BLEServer* pServer)
  {
    Serial.println("Client connected");

  }

  void onDisconnect(BLEServer* pServer)
  {
    Serial.println("Client disconnected");
    //重启广播
    BLEAdvertising* pAdvertising = pServer->getAdvertising();
    pAdvertising->start();
  }
};

class MyBLECharacteristicCallbacks : public BLECharacteristicCallbacks

{
  void onWrite(BLECharacteristic* pCharacteristic)
  {
    std::string value = pCharacteristic->getValue();
    Serial.print("Received Value: ");
    Serial.println(value.c_str());
  }
};

void setup()
{
  Serial.begin(115200);
  BLE.init("ESP32Device");
  //创建服务
  pServer = BLE.createServer();
  BLEService* pservice = pServer->createService(SERVICE_UUID);
  pServer -> setCallbacks(new MyServerCallbacks());
  //创建特征
  pCharacteristic = pservice->createCharacteristic(CHARACTERISTIC_UUID, BLECharacteristic::PROPERTY_NOTIFY);
  pCharacteristic->setValue("Hello from ESP32");
  pCharacteristic->setCallbacks(new MyBLECharacteristicCallbacks());
  pCharacteristic->addDescriptor(new BLE2902());
  pservice->start();
  //开始广播
  BLEAdvertising* pAdvertising = pServer->getAdvertising();
  pAdvertising->addServiceUUID(SERVICE_UUID);
  pAdvertising->setScanResponse(true);
  pAdvertising->start();
}

void loop()
{
  if(pServer->getConnectedCount() > 0)
  {
    pCharacteristic->setValue("Hello from ESP32");
    pCharacteristic->notify();
    delay(1000);
  }
}

Service(服务),6 Characteristics(特征值)UUID:0000AE30-0000-1000-8000-00805F9B34FB

0000AE01-0000-1000-8000-00805F9B34FB支持类型:Write 0000AE02-0000-1000-8000-00805F9B34FB

支持类型:Notify 0000AE03-0000-1000-8000-00805F9B34FB

支持类型:Write 0000AE04-0000-1000-8000-00805F9B34FB

支持类型:Notify 0000AE05-0000-1000-8000-00805F9B34FB

支持类型:Indicate 0000AE10-0000-1000-8000-00805F9B34FB

支持类型:Read、Write

Service(服务),2 Characteristics(特征值)UUID:0000AE3A-0000-1000-8000-00805F9B34FB

0000AE3B-0000-1000-8000-00805F9B34FB支持类型:Write 0000AE3C-0000-1000-8000-00805F9B34FB支持类型:Notify

Service(服务),2 Characteristics(特征值)UUID:0000AE00-0000-1000-8000-00805F9B34FB

0000AE01-0000-1000-8000-00805F9B34FB支持类型:Write 0000AE02-0000-1000-8000-00805F9B34FB支持类型:Notify

Service(服务),1Characteristics(特征值)UUID:0000180F-0000-1000-8000-00805F9B34FB

00002A19-0000-1000-8000-00805F9B34FB支持类型:Notify、Read

Service(服务),1Characteristics(特征值)UUID:00001800-0000-1000-8000-00805F9B34FB

00002A00-0000-1000-8000-00805F9B34FB支持类型:Read、Write