#include <BLEDevice.h>
#include <BLEUtils.h>
#include <BLEServer.h>
// iBeacon UUID (can be changed)
#define BEACON_UUID "12345678-1234-5678-1234-567812345678"
void setup() {
Serial.begin(115200);
BLEDevice::init("ESP32_BLE_Beacon"); // Device name
BLEAdvertising *pAdvertising = BLEDevice::getAdvertising();
BLEAdvertisementData oAdvertisementData = BLEAdvertisementData();
// iBeacon flag
oAdvertisementData.setFlags(0x06);
// Manufacturer data (Apple iBeacon format)
std::string strManufacturerData = "";
strManufacturerData += (char)0x4C; // Apple's company ID (0x004C)
strManufacturerData += (char)0x00;
strManufacturerData += (char)0x02; // iBeacon Type
strManufacturerData += (char)0x15; // iBeacon Length
// Adding UUID
strManufacturerData += BEACON_UUID;
// Major and Minor values (can be changed)
strManufacturerData += (char)0x00;
strManufacturerData += (char)0x01; // Major
strManufacturerData += (char)0x00;
strManufacturerData += (char)0x01; // Minor
// TX Power (calibrated for 1 meter)
strManufacturerData += (char)0xC5;
oAdvertisementData.setManufacturerData(strManufacturerData);
pAdvertising->setAdvertisementData(oAdvertisementData);
pAdvertising->start();
Serial.println("ESP32 BLE Beacon Started");
}
void loop() {
delay(1000);
}