🛠 Moniteur de batterie BLE

ESP32 (original, clase ESP32-WROOM-32) · intermediaire · Schéma : IMG-esp32-intermediaire-2-ble-batterie-monitor.svg — ESP32 émettant un service BLE Battery 0x180F vers un smartphone affichant le pourcentage

Objetivos

Crear un dispositivo BLE (Bluetooth Low Energy) conforme al perfil estándar Battery Service (UUID 0x180F, característica 0x2A19) que cualquier aplicación genérica sepa leer. Aprenderás la tríada servidor / servicio / característica, las notificaciones y el descriptor CCCD. Recordatorio: la radio BLE del ESP32 comparte la única radio de 2,4 GHz y la antena con el Wi-Fi.

Material

Código completo

#include <WiFi.h>
#include <BLEDevice.h>
#include <BLEServer.h>
#include <BLEUtils.h>
#include <BLE2902.h>

BLECharacteristic* cBatterie;
uint8_t niveau = 100;

void setup {
  Serial.begin(115200);
  BLEDevice::init("ESP32-Batterie");
  BLEServer* serveur = BLEDevice::createServer;
  BLEService* service = serveur->createService("180F");   // Battery Service
  cBatterie = service->createCharacteristic("2A19",
      BLECharacteristic::PROPERTY_READ | BLECharacteristic::PROPERTY_NOTIFY);
  cBatterie->addDescriptor(new BLE2902);               // CCCD obligatoire
  service->start;
  BLEAdvertising* adv = BLEDevice::getAdvertising;
  adv->addServiceUUID("180F");
  adv->start;
  Serial.println(F("BLE pret : cherchez ESP32-Batterie"));
}

void loop {
  niveau = (uint8_t)(50 + 49 * sin(millis / 20000.0f)); // simulation
  cBatterie->setValue(&niveau, 1);
  cBatterie->notify;
  Serial.printf("Niveau annonce : %d %%\n", niveau);
  delay(2000);
}

Verificación esperada

nRF Connect lista « ESP32-Batterie »; al abrir el servicio 0x180F y suscribirse (icono notify) a la característica 0x2A19, el valor mostrado oscila entre 1 y 99 % cada 2 segundos.

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales