ble_beacon.ino
Crea un servicio BLE personalizado visible para los teléfonos inteligentes.
Utiliza la pila BLE nativa de ESP32. El dispositivo transmite un UUID de servicio. Use una aplicación como 'nRF Connect' en Android/iOS para detectar el dispositivo 'M5PaperDIY_Beacon' y leer la característica. El modo BLE consume menos energía que WiFi.
ble_beacon.ino
#include <Arduino.h>
#include <BLEDevice.h>
#include <BLEUtils.h>
#include <BLEServer.h>
BLECharacteristic *pCharacteristic;
bool deviceConnected = false;
class MyServerCallbacks: public BLEServerCallbacks {
void onConnect(BLEServer* pServer) {
deviceConnected = true;
};
void onDisconnect(BLEServer* pServer) {
deviceConnected = false;
}
};
void setup() {
Serial.begin(115200);
BLEDevice::init("M5PaperDIY_Beacon");
BLEServer *pServer = BLEDevice::createServer();
pServer->setCallbacks(new MyServerCallbacks());
BLEService *pService = pServer->createService("12345678-1234-1234-1234-1234567890ab");
pCharacteristic = pService->createCharacteristic(
"abcdefab-1234-1234-1234-1234567890ab",
BLECharacteristic::PROPERTY_READ | BLECharacteristic::PROPERTY_WRITE
);
pCharacteristic->setValue("Hello from ESP32-S3");
pService->start();
BLEAdvertising *pAdvertising = BLEDevice::getAdvertising();
pAdvertising->addServiceUUID("12345678-1234-1234-1234-1234567890ab");
pAdvertising->setScanResponse(true);
pAdvertising->start();
Serial.println("BLE Beacon started");
}
void loop() {
delay(1000);
}