ESP32 BLE Server Experiment

Muhammad Rifqi Riansyah Matondang
3 min readMar 30, 2022

--

Halo semua perkenalkan saya Muhammad Rifqi Riansyah Matondang NIM 18220005 Mahasiswa semester 4 jurusan Sistem dan Teknologi Informasi. Pada kesempatan kali ini saya akan mencoba menjelaskan eksperimen menggunakan Bluteooth Classic pada ESP32.

Artikel ini merupakan serangkaian artikel eksperimen ESP32. Jika anda belum membaca artikel sebelumnya, anda dapat membacanya pada link berikut https://medium.com/@18220005/esp32-classic-bluetooth-with-arduino-experiment-9d795d980b99 .

Persiapan

Berikut adalah alat yang dibutuhkan untuk melakukan eksperimen ini:

  1. 1 Unit ESP32
  2. Laptop
  3. Kabel MicroUSB

Bluetooth Low Energy (BLE)

Bluetooth Low Energy atau BLE adalah variasi bluetooth yang menerapkan konsep power-conserving. BLE dapat melakukan koneksi jarak dekat dengan bandwidth yang rendah. Berbeda dengan Bluetooth pada umumnya, BLE berada dalam sleep mode secara konstan sehingga power consumption yang digunakan 100x lebih kecil dibandingkan Bluetooth biasa. Sama seperti Bluetooth, BLE juga mensupport point-to-point communication. Tidak hanya itu, BLE juga mensupport broadcast dan mesh communication. Pada Experimen kali ini kita akan menyunting agar ESP32 bisa berperan sebagai BLE server.

GATT

GATT adalah Generic Attributes yang mendefinisikan data struktur hierarchical yang terekspos dengan BLE device yang terkoneksi. GATT mendefinisikan bagaimana dua perangkat BLE mengirim dan menerima pesan.

Gambar diagram GATT daimbil dari https://randomnerdtutorials.com/esp32-bluetooth-low-energy-ble-arduino-ide/

UUID

UUID atau Universally Unique Identifier adalah kombinasi angka unik dengan panjang 128-bit. Setiap service, characterisric, dan descriptor mempunyai UUID. UUID digunakan untuk mengidentifikasi servis yang diberikan oleh perangkat bluetooth.

ESP32 BLE Server

Kita akan mencoba menyunting ESP32 kita agar dapat berperan sebagai BLE server. Kita harus mengupload kode berikut ke ESP32 kita mengguknakan ArduinoIDE

/*
Based on Neil Kolban example for IDF: https://github.com/nkolban/esp32-snippets/blob/master/cpp_utils/tests/BLE%20Tests/SampleServer.cpp
Ported to Arduino ESP32 by Evandro Copercini
updates by chegewara
*/
#include <BLEDevice.h>
#include <BLEUtils.h>
#include <BLEServer.h>
// See the following for generating UUIDs:
// https://www.uuidgenerator.net/
#define SERVICE_UUID "4fafc201-1fb5-459e-8fcc-c5c9c331914b"
#define CHARACTERISTIC_UUID "beb5483e-36e1-4688-b7f5-ea07361b26a8"
void setup() {
Serial.begin(115200);
Serial.println("Starting BLE work!");
BLEDevice::init("Long name works now");
BLEServer *pServer = BLEDevice::createServer();
BLEService *pService = pServer->createService(SERVICE_UUID);
BLECharacteristic *pCharacteristic = pService->createCharacteristic(
CHARACTERISTIC_UUID,
BLECharacteristic::PROPERTY_READ |
BLECharacteristic::PROPERTY_WRITE
);
pCharacteristic->setValue("Hello World says Neil");
pService->start();
// BLEAdvertising *pAdvertising = pServer->getAdvertising(); // this still is working for backward compatibility
BLEAdvertising *pAdvertising = BLEDevice::getAdvertising();
pAdvertising->addServiceUUID(SERVICE_UUID);
pAdvertising->setScanResponse(true);
pAdvertising->setMinPreferred(0x06); // functions that help with iPhone connections issue
pAdvertising->setMinPreferred(0x12);
BLEDevice::startAdvertising();
Serial.println("Characteristic defined! Now you can read it in your phone!");
}
void loop() {
// put your main code here, to run repeatedly:
delay(2000);
}

Kode ini dapat diambil dari website https://randomnerdtutorials.com/esp32-bluetooth-low-energy-ble-arduino-ide/ ataupun dari ArduinoIDE dengan memencet File->Examples->ESP32 BLE Arduino->BLE_Server. Dengan kode ini kita akan dapat menggunakan EPS32 Kita sebagai BLE Server

Uji Tes ESP32BLE Server dengan Smartphone

Untuk memastikan apakah BLE Server pada ESP32 Kita sudah berjalan dengan baik, kita dapat menggunakan smartphone kita untuk mengujinya. Caranya adalah dengan mendownload aplikasi “nRF Connect for Mobile” pada smartphone yang Kita miliki. Aplikasi ini tersedia baik di Play Store maupun AppStore

Setelah menginstall aplikasi ini, nyalakan fitur Bluteooth pada smartphone Kita dan buka aplikasi “nRF Connect for Mobile”, Lakukan scanning devices. Jika mengikuti kode di atas, seharusnya anda akan menemukan device dengan nama “Long name works now”. Lakukan pairing dan tekan tombol “Connect” pada aplikasi tersebut. Setelah itu aplikasi akan menampilkan informasi UUID yang telah kita definsikan pada kode sebelumnya. Maka dari itu kita telah berhasil menyunting ESP32 sebagai server BLE.

Selesai

Selamat! Anda telah berhasil melakukan eksperimen menyunting ESP32 sebagai server BLE. Terima kasih telah membaca tutorial ini, semoga perjalanan ESP32 kalian menyenangkan!

--

--