ESP32学习笔记(1) BLE
1.硬件设备
2.程序开发
2.1 UUID生成
本次开发只需使用2个UUID,UUID生成在网站如下:
https://www.uuidgenerator.net/
2.2程序代码
#include <Arduino.h>
#include <BLEDevice.h>
#include <BLEUtils.h>
#include <BLEServer.h>
#define SERVICE_UUID "fc5b228a-d664-11eb-b8bc-0242ac130003"
#define CHARACTERISTIC_UUID "fc5b2532-d664-11eb-b8bc-0242ac130003"
BLECharacteristic *pCharacteristic;
bool deviceConnected = false;
String rxload = "NoMessage";
String Receive_Message = "";
/*外设*/
#define LED_IO 2
class MyServerCallbacks : public BLEServerCallbacks
{
void onConnect(BLEServer *pServer)
{
deviceConnected = true;
};
void onDisconnect(BLEServer *pServer)
{
deviceConnected = false;
}
};
class MyCallbacks : public BLECharacteristicCallbacks
{
void onWrite(BLECharacteristic *pCharacteristic)
{
std::string rxValue = pCharacteristic->getValue();
if (rxValue.length() > 0)
{
rxload = "";
for (int i = 0; i < rxValue.length(); i++)
{
rxload += (char)rxValue[i];
Serial.print(rxValue[i]);
}
Serial.println("");
if (rxload == "on")
{
digitalWrite(LED_IO, 1);
}
else if (rxload == "off")
{
digitalWrite(LED_IO, 0);
}
}
}
};
void setup()
{
pinMode(LED_IO, OUTPUT);
Serial.begin(115200);
BLEDevice::init("ESP_Server");
BLEServer *pServer = BLEDevice::createServer();
pServer->setCallbacks(new MyServerCallbacks);
BLEService *pService = pServer->createService(SERVICE_UUID);
BLECharacteristic *pCharacteristic = pService->createCharacteristic(CHARACTERISTIC_UUID, BLECharacteristic::PROPERTY_WRITE | BLECharacteristic::PROPERTY_READ);
pCharacteristic->setCallbacks(new MyCallbacks());
pCharacteristic->setValue("Welcome To My Server");
pService->start();
BLEAdvertising *pAdvertising = pServer->getAdvertising();
pAdvertising->start();
}
void loop()
{
}
3.程序调试
APP:BLE调试包
结果就不放了,我太懒了,实现了期望部分控制,后期与开发的APP合并使用