Cara Program Bluetooth (BLE) Esp32 Devkit V1
Tutorial: Program Fitur Bluetooth Low Energy (BLE) pada ESP32 DevKit V1
ESP32 DevKit V1 adalah papan pengembangan yang berbasis pada chip ESP32, yang memiliki kemampuan konektivitas Bluetooth dan Wi-Fi. Dalam tutorial ini, kita akan membahas bagaimana cara mengatur dan memprogram fitur Bluetooth pada ESP32, serta memberikan contoh kode yang sederhana dan penjelasan tentang cara kerjanya.
Persiapan Alat dan Bahan
Sebelum kita mulai, pastikan Anda memiliki alat dan bahan berikut:
1. Peralatan yang Dibutuhkan
- ESP32 DevKit V1
- Kabel USB (Micro-USB atau USB-C sesuai model ESP32)
- Software Arduino IDE
- Pustaka (Library) ESP32 Bluetooth.
2. Instalasi ESP32 di Arduino IDE
Pastikan Arduino IDE sudah terpasang di komputer Anda dan pustaka ESP32 sudah ditambahkan di dalamnya. Jika belum, Anda bisa mengikuti langkah-langkah berikut untuk menambahkannya:
Jika Anda belum memiliki Arduino IDE, unduh dan instal dari situs resmi Arduino (https://www.arduino.cc/en/software).
- Buka Arduino IDE
- Masuk ke File > Preferences
- Tambahkan URL berikut ke bagian Additional Board Manager URLs:
- Buka Tools > Board > Board Manager dan cari ESP32, Lalu Instal board ESP32 by Espressif Systems.
https://dl.espressif.com/dl/package_esp32_index.json
3. Pilih Board ESP32
- Hubungkan ESP32 DevKit V1 ke komputer menggunakan kabel USB.
- Pada Arduino IDE, pilih Tools > Board > ESP32 Arduino > ESP32 Dev Module, Atau bisa juga pilih board ESP32 DevKitC V1.
- Pilih port COM yang sesuai (Tools > Port).
Memahami Bluetooth pada ESP32
ESP32 mendukung dua jenis konektivitas Bluetooth:
- Bluetooth Classic (untuk perangkat yang menggunakan profil Bluetooth klasik seperti audio, perangkat input).
- Bluetooth Low Energy (BLE) (untuk komunikasi data dengan daya rendah).
Pada tutorial ini, kita akan fokus pada Bluetooth Low Energy (BLE), karena BLE lebih banyak digunakan dalam aplikasi IoT (Internet of Things) dengan konsumsi daya rendah.
Mengatur Bluetooth pada ESP32
Untuk memulai pemrograman Bluetooth di ESP32, kita perlu menggunakan pustaka (library) yang disediakan oleh Espressif, yaitu pustaka BLEDevice
yang termasuk dalam pustaka ESP32 BLE Arduino
.
Langkah pertama adalah menginstal pustaka ESP32 BLE Arduino:
- Buka Arduino IDE, pilih Sketch > Include Library > Manage Libraries.
- Cari ESP32 BLE Arduino dan klik Install.
Setelah pustaka terinstal, kita dapat mulai membuat program untuk menghubungkan ESP32 dengan perangkat lain melalui Bluetooth.
Program Sederhana Bluetooth Server dengan ESP32
Sebagai contoh, kita akan membuat program yang membuat ESP32 menjadi Bluetooth Low Energy (BLE) server. Server ini akan menyiarkan data dan memungkinkan perangkat lain, seperti smartphone, untuk terhubung dan membaca data tersebut.
Berikut adalah kode sederhana untuk memulai:
#include <BLEDevice.h>
#include <BLEUtils.h>
#include <BLEServer.h>
#include <BLE2902.h>
#define SERVICE_UUID "12345678-1234-5678-1234-56789abcdef0" // UUID layanan
#define CHARACTERISTIC_UUID "abcd1234-abcd-1234-abcd-1234abcdef123" // UUID karakteristik
BLECharacteristic *pCharacteristic;
void setup() {
Serial.begin(115200);
// Inisialisasi BLE
BLEDevice::init("ESP32_BLE"); // Nama Bluetooth perangkat
// Membuat server BLE
BLEServer *pServer = BLEDevice::createServer();
// Membuat layanan BLE
BLEService *pService = pServer->createService(SERVICE_UUID);
// Membuat karakteristik BLE
pCharacteristic = pService->createCharacteristic(
CHARACTERISTIC_UUID,
BLECharacteristic::PROPERTY_READ | BLECharacteristic::PROPERTY_WRITE
);
// Mengatur nilai awal karakteristik
pCharacteristic->setValue("Hello from ESP32!");
// Menambahkan descriptor
pCharacteristic->addDescriptor(new BLE2902());
// Mulai layanan BLE
pService->start();
// Memulai iklan (advertisement)
BLEAdvertising *pAdvertising = pServer->getAdvertising();
pAdvertising->start();
Serial.println("Bluetooth Server started...");
}
void loop() {
// Server berjalan terus-menerus
delay(2000);
}
Penjelasan Kode:
- Impor pustaka BLE:
- Kita mengimpor pustaka
BLEDevice
,BLEUtils
,BLEServer
, danBLE2902
. Pustaka ini menyediakan semua fungsi yang dibutuhkan untuk berinteraksi dengan BLE.
- Kita mengimpor pustaka
- UUID Layanan dan Karakteristik:
SERVICE_UUID
danCHARACTERISTIC_UUID
adalah UUID unik untuk layanan dan karakteristik BLE yang akan dibuat. Anda bisa mengganti UUID ini dengan UUID yang Anda inginkan.
- Inisialisasi BLE:
BLEDevice::init("ESP32_BLE");
menginisialisasi Bluetooth dengan nama perangkat "ESP32_BLE".
- Membuat Server, Layanan, dan Karakteristik:
BLEServer *pServer = BLEDevice::createServer();
membuat server BLE.BLEService *pService = pServer->createService(SERVICE_UUID);
membuat layanan BLE dengan UUID yang ditentukan.pCharacteristic = pService->createCharacteristic (CHARACTERISTIC_UUID, BLECharacteristic::PROPERTY_READ | BLECharacteristic
membuat karakteristik BLE yang bisa dibaca dan ditulis.
::PROPERTY_WRITE);
- Menyiarkan (Advertising):
BLEAdvertising *pAdvertising = pServer->getAdvertising();
untuk memulai iklan Bluetooth agar perangkat lain dapat menemukan ESP32.pAdvertising->start();
memulai iklan dan memungkinkan perangkat lain terhubung ke ESP32
- Menunggu di dalam loop():
loop()
digunakan untuk menjaga server tetap aktif dan dapat diakses oleh perangkat lain.
Menambahkan Fitur Penulisan Data ke Karakteristik
Untuk memungkinkan perangkat lain menulis data ke karakteristik ESP32, kita dapat menambahkan fungsi untuk menulis data pada karakteristik BLE.
Berikut adalah cara menambahkan fitur penulisan:
#include <BLEDevice.h>
#include <BLEUtils.h>
#include <BLEServer.h>
#include <BLE2902.h>
#define SERVICE_UUID "12345678-1234-5678-1234-56789abcdef0"
#define CHARACTERISTIC_UUID "abcd1234-abcd-1234-abcd-1234abcdef123"
BLECharacteristic *pCharacteristic;
void setup() {
Serial.begin(115200);
BLEDevice::init("ESP32_BLE");
BLEServer *pServer = BLEDevice::createServer();
BLEService *pService = pServer->createService(SERVICE_UUID);
pCharacteristic = pService->createCharacteristic(
CHARACTERISTIC_UUID,
BLECharacteristic::PROPERTY_READ | BLECharacteristic::PROPERTY_WRITE
);
pCharacteristic->setValue("Hello from ESP32!");
pCharacteristic->addDescriptor(new BLE2902());
pService->start();
BLEAdvertising *pAdvertising = pServer->getAdvertising();
pAdvertising->start();
Serial.println("Bluetooth Server started...");
}
void loop() {
// Cek apakah ada data yang ditulis pada karakteristik
if (pCharacteristic->getValue() != "") {
Serial.print("Data received: ");
Serial.println(pCharacteristic->getValue().c_str());
// Reset nilai karakteristik setelah dibaca
pCharacteristic->setValue("");
}
delay(2000);
}
Dengan kode ini, ketika perangkat lain menulis data ke karakteristik, ESP32 akan membaca data tersebut dan mencetaknya melalui Serial Monitor.
Kesimpulan
Dalam tutorial ini, kita telah mempelajari cara mengatur dan memprogram fitur Bluetooth pada ESP32 DevKitC V1 menggunakan Bluetooth Low Energy (BLE). Kami telah membuat program BLE server yang memungkinkan ESP32 untuk menyiarkan data dan berinteraksi dengan perangkat lain melalui aplikasi smartphone. Tutorial ini memberikan dasar yang kuat untuk Anda mulai mengembangkan aplikasi berbasis BLE dengan ESP32.