Senin, 10 November 2025

ESP32 sebagai BLE Client

 Berikut contoh script .ino untuk ESP32 sebagai BLE Client, yang akan terhubung ke BLE Server dan membaca data dari karakteristik tertentu.

๐Ÿ”— Script BLE Client ESP32

#include <BLEDevice.h>
#include <BLEUtils.h>
#include <BLEScan.h>
#include <BLEAdvertisedDevice.h>

BLEScan* pBLEScan;
BLEAdvertisedDevice* myDevice;
bool deviceFound = false;

class MyAdvertisedDeviceCallbacks : public BLEAdvertisedDeviceCallbacks {
  void onResult(BLEAdvertisedDevice advertisedDevice) {
    Serial.println("Perangkat ditemukan: " + advertisedDevice.toString().c_str());

    // Ganti dengan nama atau UUID perangkat BLE Server yang ingin dihubungkan
    if (advertisedDevice.getName() == "ESP32_BLE") {
      Serial.println("Target BLE ditemukan!");
      myDevice = new BLEAdvertisedDevice(advertisedDevice);
      deviceFound = true;
      pBLEScan->stop();
    }
  }
};

void setup() {
  Serial.begin(115200);
  BLEDevice::init("");

  pBLEScan = BLEDevice::getScan();
  pBLEScan->setAdvertisedDeviceCallbacks(new MyAdvertisedDeviceCallbacks());
  pBLEScan->setActiveScan(true);
  pBLEScan->start(5); // Scan selama 5 detik

  if (deviceFound) {
    BLEClient*  pClient  = BLEDevice::createClient();
    pClient->connect(myDevice); // Koneksi ke server

    BLERemoteService* pRemoteService = pClient->getService("12345678-1234-1234-1234-123456789abc");
    if (pRemoteService == nullptr) {
      Serial.println("Service tidak ditemukan.");
      return;
    }

    BLERemoteCharacteristic* pRemoteCharacteristic = pRemoteService->getCharacteristic("abcd1234-ab12-cd34-ef56-abcdef123456");
    if (pRemoteCharacteristic == nullptr) {
      Serial.println("Karakteristik tidak ditemukan.");
      return;
    }

    std::string value = pRemoteCharacteristic->readValue();
    Serial.print("Data dari server: ");
    Serial.println(value.c_str());
  } else {
    Serial.println("Perangkat BLE target tidak ditemukan.");
  }
}

void loop() {
  // Tidak ada loop aktif, bisa ditambahkan logika polling atau reconnect
}
 

๐Ÿงช Catatan

  • Pastikan UUID service dan karakteristik sesuai dengan BLE Server yang kamu gunakan.

  • Nama perangkat BLE (ESP32_BLE) harus cocok dengan yang disiarkan oleh server.

  • Gunakan aplikasi seperti nRF Connect untuk memverifikasi UUID dan karakteristik.

 

Wi-Fi hotspot dengan captive portal