Berikut contoh script .ino untuk menggunakan Bluetooth Low Energy (BLE) pada ESP32 dengan Arduino IDE. Script ini membuat ESP32 bertindak sebagai BLE server yang mengirimkan data ke perangkat BLE client (misalnya smartphone).
🧬 Script BLE ESP32 (BLE Server)
#include <BLEDevice.h>
#include <BLEServer.h>
#include <BLEUtils.h>
#include <BLE2902.h>
BLEServer* pServer = NULL;
BLECharacteristic* pCharacteristic = NULL;
bool deviceConnected = false;
#define SERVICE_UUID "12345678-1234-1234-1234-123456789abc"
#define CHARACTERISTIC_UUID "abcd1234-ab12-cd34-ef56-abcdef123456"
class MyServerCallbacks : public BLEServerCallbacks {
void onConnect(BLEServer* pServer) {
deviceConnected = true;
}
void onDisconnect(BLEServer* pServer) {
deviceConnected = false;
}
};
void setup() {
Serial.begin(115200);
BLEDevice::init("ESP32_BLE");
pServer = BLEDevice::createServer();
pServer->setCallbacks(new MyServerCallbacks());
BLEService *pService = pServer->createService(SERVICE_UUID);
pCharacteristic = pService->createCharacteristic(
CHARACTERISTIC_UUID,
BLECharacteristic::PROPERTY_READ |
BLECharacteristic::PROPERTY_NOTIFY
);
pCharacteristic->addDescriptor(new BLE2902());
pCharacteristic->setValue("Hello BLE");
pService->start();
pServer->getAdvertising()->start();
Serial.println("BLE server aktif. Silakan konek ke 'ESP32_BLE'");
}
void loop() {
if (deviceConnected) {
pCharacteristic->setValue("Data baru dari ESP32");
pCharacteristic->notify();
delay(1000);
}
}
#include <BLEServer.h>
#include <BLEUtils.h>
#include <BLE2902.h>
BLEServer* pServer = NULL;
BLECharacteristic* pCharacteristic = NULL;
bool deviceConnected = false;
#define SERVICE_UUID "12345678-1234-1234-1234-123456789abc"
#define CHARACTERISTIC_UUID "abcd1234-ab12-cd34-ef56-abcdef123456"
class MyServerCallbacks : public BLEServerCallbacks {
void onConnect(BLEServer* pServer) {
deviceConnected = true;
}
void onDisconnect(BLEServer* pServer) {
deviceConnected = false;
}
};
void setup() {
Serial.begin(115200);
BLEDevice::init("ESP32_BLE");
pServer = BLEDevice::createServer();
pServer->setCallbacks(new MyServerCallbacks());
BLEService *pService = pServer->createService(SERVICE_UUID);
pCharacteristic = pService->createCharacteristic(
CHARACTERISTIC_UUID,
BLECharacteristic::PROPERTY_READ |
BLECharacteristic::PROPERTY_NOTIFY
);
pCharacteristic->addDescriptor(new BLE2902());
pCharacteristic->setValue("Hello BLE");
pService->start();
pServer->getAdvertising()->start();
Serial.println("BLE server aktif. Silakan konek ke 'ESP32_BLE'");
}
void loop() {
if (deviceConnected) {
pCharacteristic->setValue("Data baru dari ESP32");
pCharacteristic->notify();
delay(1000);
}
}
📱 Cara Menguji
Upload ke ESP32
Gunakan aplikasi seperti nRF Connect (Android/iOS) untuk scan dan konek ke
ESP32_BLEBuka layanan dan karakteristik untuk melihat notifikasi data
Kalau kamu ingin versi BLE client (ESP32 sebagai penerima data), atau ingin menambahkan fitur seperti kontrol LED via BLE,