#include <BLEDevice.h>
#include <BLEServer.h>
#include <BLEUtils.h>
#include <BLE2902.h>
BLECharacteristic *pBatteryCharacteristic;
BLEServer *pServer;
#define SERVICE_UUID "180F"
#define CHARACTERISTIC_UUID_BATTERY "2A19"
void setup() {
Serial.begin(115200);
BLEDevice::init("ESP32 Battery Monitor");
pServer = BLEDevice::createServer();
BLEService *pService = pServer->createService(SERVICE_UUID);
pBatteryCharacteristic = pService->createCharacteristic(
CHARACTERISTIC_UUID_BATTERY,
BLECharacteristic::PROPERTY_READ | BLECharacteristic::PROPERTY_NOTIFY
);
pBatteryCharacteristic->addDescriptor(new BLE2902());
pService->start();
BLEAdvertising *pAdvertising = BLEDevice::getAdvertising();
pAdvertising->addServiceUUID(SERVICE_UUID);
pAdvertising->start();
}
void loop() {
int batteryLevel = getBatteryLevel();
pBatteryCharacteristic->setValue(batteryLevel);
pBatteryCharacteristic->notify();
delay(60000);
}
int getBatteryLevel() {
int rawValue = analogRead(34);
float voltage = rawValue * (3.3 / 4095.0);
int batteryLevel = (voltage / 3.3) * 100;
return batteryLevel;
}