Central — adalah perangkat dalam arsitektur Bluetooth Low Energy yang memulai pemindaian, menjalin koneksi, dan mengelola pertukaran data dengan perangkat periferal. Dalam konteks pengembangan mobile, Central adalah smartphone atau tablet di iOS atau Android yang terhubung ke sensor BLE, pelacak kebugaran, dan aksesori pintar. Menurut Bluetooth Core Specification 5.4 (2023), Central dapat mendukung hingga 7 koneksi simultan ke berbagai Peripheral, meskipun batasan sebenarnya tergantung pada produsen chip dan versi OS. Core Bluetooth di iOS dan android.bluetooth.le di Android menyediakan API lengkap untuk mengelola peran Central.
Poin utama
Central — adalah klien GATT dalam arsitektur Bluetooth Low Energy yang memulai semua komunikasi. Berbeda dengan Peripheral yang secara pasif menunggu koneksi dan mengiklankan layanannya, Central secara aktif memindai saluran, mendeteksi paket iklan, dan memulai koneksi.
Model asimetris Central-Peripheral adalah fitur fundamental BLE. Central mengelola logika interaksi: ia memutuskan perangkat mana yang akan dihubungi, layanan mana yang akan diselidiki, karakteristik mana yang akan dibaca dan ditulis. Peripheral menjalankan peran server data — menyimpan layanan dan karakteristik, tetapi tidak memulai koneksi.
Menurut Bluetooth Core Specification 5.4 (2023), sebuah perangkat dapat secara bersamaan menjadi Central dan Peripheral (dual role). Misalnya, smartphone dapat menjadi Central untuk gelang kebugaran dan Peripheral untuk smartphone lain yang mentransfer file. Namun, bekerja secara bersamaan dalam kedua peran meningkatkan konsumsi daya dan kompleksitas manajemen koneksi.
Dalam ekosistem pengembangan mobile, peran Central adalah skenario yang paling umum. Aplikasi di smartphone mencari perangkat BLE (sensor, headphone, gelang), terhubung ke mereka, dan menerima data. Pengembang menggunakan API sistem operasi untuk bekerja dengan Central: CBCentralManager di iOS, BluetoothLeScanner dan BluetoothGatt di Android.
Pemindaian — adalah tahap pertama kerja Central. Perangkat mendengarkan saluran radio BLE (37, 38, 39) untuk mendeteksi paket iklan yang dikirim secara periodik oleh Peripheral. Setiap paket iklan berisi nama perangkat, daftar UUID layanan, dan data pengguna.
Central dapat bekerja dalam dua mode pemindaian: passive scanning (hanya menerima paket iklan) dan active scanning (mengirim permintaan pemindaian untuk mendapatkan data tambahan melalui scan response). Passive scanning menghemat energi tetapi memberikan lebih sedikit informasi. Active scanning memungkinkan memperoleh data lengkap paket iklan, termasuk nama perangkat dan daftar lengkap layanan.
Penyaringan berdasarkan UUID — optimasi penting. Central hanya dapat memindai perangkat dengan Service UUID tertentu, mengabaikan yang lainnya. Ini tidak hanya menghemat energi tetapi juga menyederhanakan logika aplikasi: delegate hanya menerima perangkat yang relevan.
import CoreBluetooth
class BLECentralManager: NSObject, CBCentralManagerDelegate {
private var centralManager: CBCentralManager!
override init() {
super.init()
centralManager = CBCentralManager(
delegate: self,
queue: nil
)
}
func centralManagerDidUpdateState(_ central: CBCentralManager) {
if central.state == .poweredOn {
central.scanForPeripherals(
withServices: nil,
options: [
CBCentralManagerScanOptionAllowDuplicatesKey: false
]
)
}
}
}
Manajemen koneksi — tanggung jawab utama Central. Setelah mendeteksi Peripheral yang sesuai, Central memulai koneksi. Koneksi BLE dijalin melalui prosedur pembentukan koneksi, yang meliputi pertukaran parameter: connection interval, slave latency, dan supervision timeout.
Connection interval menentukan seberapa sering Central dan Peripheral bertukar data setelah terhubung. Interval dapat berkisar dari 7.5 ms hingga 4 detik. Semakin pendek intervalnya, semakin tinggi bandwidth, tetapi semakin besar konsumsi daya. Slave latency memungkinkan Peripheral untuk melewatkan beberapa peristiwa koneksi untuk menghemat energi. Supervision timeout — waktu maksimum tanpa respons, setelah itu koneksi dianggap hilang.
Central bertanggung jawab untuk memutuskan koneksi setelah pertukaran data selesai. Perangkat BLE biasanya tidak menjaga koneksi secara permanen — Central terhubung, menerima data, dan memutuskan koneksi. Ini adalah pola standar untuk sensor IoT: Central memindai, menemukan sensor suhu, terhubung, membaca nilai, dan memutuskan koneksi.
| Parameter | Rentang | Tujuan | Rekomendasi |
|---|---|---|---|
| Connection Interval | 7.5 ms – 4 s | Frekuensi pertukaran data | 30–50 ms untuk streaming, 1–4 s untuk data jarang |
| Slave Latency | 0–499 peristiwa | Melewatkan peristiwa oleh Peripheral | 4–10 untuk menghemat energi sensor |
| Supervision Timeout | 100 ms – 32 s | Batas waktu kehilangan koneksi | 6–10 detik untuk sebagian besar skenario |
| MTU | 23–517 byte | Ukuran paket ATT | Minta maksimum saat terhubung |
Core Bluetooth — framework Apple untuk bekerja dengan BLE di iOS dan macOS. Kelas CBCentralManager menyediakan API lengkap untuk mengimplementasikan peran Central: pemindaian, koneksi, manajemen koneksi. Bekerja dengan Central di iOS didasarkan pada model delegate: CBCentralManagerDelegate menerima peristiwa perubahan status, deteksi perangkat, dan hasil koneksi.
Langkah-langkah utama Central di iOS: inisialisasi CBCentralManager, memeriksa status Bluetooth, memulai pemindaian, memproses perangkat yang terdeteksi melalui delegate, terhubung ke Peripheral yang dipilih, mendeteksi layanan dan karakteristik, pertukaran data.
// Hubungkan ke Peripheral yang terdeteksi
func centralManager(
_ central: CBCentralManager,
didDiscover peripheral: CBPeripheral,
advertisementData: [String: Any],
rssi RSSI: NSNumber
) {
// Simpan referensi ke peripheral dan hubungkan
discoveredPeripheral = peripheral
central.connect(peripheral, options: nil)
}
// Koneksi berhasil
func centralManager(
_ central: CBCentralManager,
didConnect peripheral: CBPeripheral
) {
peripheral.delegate = self
peripheral.discoverServices(nil)
}
iOS membatasi kerja BLE di latar belakang: dalam mode latar belakang, aplikasi hanya dapat memindai dengan kunci tertentu di Info.plist, dan perangkat yang terhubung dapat memberi tahu Central tentang perubahan data. Untuk aplikasi kritis (perangkat medis) gunakan Background Modes dengan kunci bluetooth-central.
Android menyediakan API BluetoothLeScanner untuk memindai perangkat BLE dan BluetoothGatt untuk mengelola koneksi. Mulai Android 5.0 (API 21), BluetoothLeScanner menggantikan startLeScan yang sudah usang. API memerlukan izin BLUETOOTH, BLUETOOTH_ADMIN, dan ACCESS_FINE_LOCATION (atau ACCESS_BACKGROUND_LOCATION untuk Android 10+).
import android.bluetooth.le.*;
import android.bluetooth.*;
private BluetoothLeScanner scanner;
private BluetoothGatt bluetoothGatt;
// Konfigurasi pemindaian
ScanSettings settings = new ScanSettings.Builder()
.setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY)
.build();
// Mulai pemindaian
scanner.startScan(null, settings, new ScanCallback() {
@Override
public void onScanResult(
int callbackType,
ScanResult result
) {
BluetoothDevice device = result.getDevice();
// Hubungkan ke perangkat
bluetoothGatt = device.connectGatt(
context, false, gattCallback
);
}
});
Di Android, penting untuk mempertimbangkan batasan pemindaian: mulai Android 7 (API 24), pemindaian tidak dapat dimulai lebih dari 5 kali dalam 30 detik di aplikasi yang tidak menggunakan Location. Android 12+ memerlukan izin BLUETOOTH_SCAN, BLUETOOTH_CONNECT, dan ADVERTISE, serta permintaan runtime izin-izin ini.
Konsumsi daya Central lebih tinggi daripada Peripheral karena kebutuhan untuk terus-menerus memindai saluran radio. Central menerima data melalui paket BLE, memprosesnya, mengelola koneksi, dan sering melakukan perhitungan pada prosesor aplikasi. Menurut Bluetooth SIG, pemindaian mengonsumsi antara 30 mA hingga 100 mA tergantung pada mode.
Ada beberapa strategi penghematan energi untuk Central. Pemindaian interval — metode yang paling efisien: Central memindai dalam jendela pendek (scan window) dengan jeda panjang (scan interval). Misalnya, dengan scan window 30 ms dan scan interval 1000 ms, konsumsi daya berkurang 97% dibandingkan dengan pemindaian terus-menerus.
Optimasi tambahan — penyaringan berdasarkan UUID. Central memproses lebih cepat hanya paket iklan yang relevan, mengabaikan yang lainnya. Ini mengurangi beban prosesor dan meningkatkan masa pakai baterai perangkat. Juga disarankan untuk menghentikan pemindaian segera setelah menemukan perangkat yang diinginkan dan tidak menjaga koneksi lebih lama dari yang diperlukan.
Pertanyaan yang sering diajukan
Ya, BLE mendukung dual role: perangkat dapat secara bersamaan menjadi Central untuk beberapa perangkat dan Peripheral untuk yang lain. Misalnya, smartphone membaca data dari sensor (sebagai Central) dan secara bersamaan mengiklankan layanannya sendiri (sebagai Peripheral) untuk mentransfer data ke perangkat lain.
Spesifikasi BLE menetapkan batas 7 koneksi untuk satu Central. Dalam praktiknya, batasan tergantung pada produsen chip: chip Nordic nRF52840 mendukung hingga 20 koneksi, dan beberapa adaptor Bluetooth murah — tidak lebih dari 3–4.
Penyebabnya bisa bermacam-macam: sensor tidak mengiklankan (tidak dalam mode advertising), filter UUID terlalu ketat, Bluetooth di smartphone dimatikan, izin yang diperlukan tidak ada (Location di Android), atau sensor di luar jangkauan (disarankan hingga 10 meter di dalam ruangan).
Tidak selalu. Untuk banyak skenario, pola connect-and-read digunakan: Central memindai, terhubung, membaca data yang diperlukan, dan memutuskan koneksi. Koneksi permanen hanya diperlukan untuk data streaming (denyut nadi, EKG) atau kontrol perangkat secara real-time.
Gunakan pemindaian interval dengan rasio scan window 30–50 ms dan scan interval 500–1000 ms. Filter perangkat berdasarkan UUID untuk hanya memproses paket iklan yang relevan. Hentikan pemindaian segera setelah menemukan Peripheral yang diinginkan.
Kesimpulan
Kami akan mengembangkan aplikasi seluler turnkey
IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.
Baca juga