Advertising (iklan) — adalah mekanisme dalam Bluetooth Low Energy dimana perangkat Peripheral memberitahukan keberadaannya dengan mengirimkan paket data pendek pada tiga saluran khusus (37, 38, 39). Bluetooth Core Specification 5.4 (2023) mendefinisikan dua jenis iklan: connectable — perangkat siap terhubung, dan non-connectable — digunakan oleh beacon (Beacon) yang hanya mengirimkan data tanpa membangun koneksi dua arah. Parameter iklan — interval dari 20 ms hingga 10.24 s, daya pemancar dari -20 hingga +10 dBm dan jenis paket — secara langsung mempengaruhi kecepatan deteksi perangkat dan konsumsi dayanya, yang sangat penting dalam pengembangan perangkat IoT dengan daya baterai.
Poin Utama
Advertising (iklan) — adalah proses pengiriman periodik paket data pendek dimana perangkat BLE memberitahukan keberadaan dan ketersediaannya. Berbeda dengan Bluetooth klasik dimana pencarian perangkat memakan waktu detik, BLE advertising memungkinkan deteksi perangkat dalam milidetik dengan konsumsi daya minimal.
Arsitektur BLE membagi perangkat menjadi dua peran: Peripheral (beriklan) dan Central (memindai). Peripheral mengirimkan paket advertising, dan Central memindai saluran dan memutuskan koneksi. Model asimetris ini merupakan keunggulan utama BLE: perangkat yang beriklan hanya menghabiskan daya untuk mengirim paket pendek, bukan untuk terus-menerus mendengarkan saluran.
Proses advertising terdiri dari tiga tahap: advertising event (pengiriman paket pada ketiga saluran), scan request/response (pertukaran opsional dengan Central) dan connection request (inisiasi koneksi oleh Central). Setiap tahap dikelola oleh Bluetooth Controller pada tingkat Link Layer.
BLE menggunakan 40 saluran di pita 2.4 GHz, dimana 37 (2402 MHz), 38 (2426 MHz) dan 39 (2480 MHz) dialokasikan secara eksklusif untuk advertising. Tiga saluran merupakan kompromi antara keandalan deteksi dan bandwidth: satu saluran mungkin sibuk oleh Wi-Fi atau gangguan lain, tetapi perangkat akan terdeteksi pada dua saluran lainnya.
Saluran 37 berada di dekat saluran Wi-Fi 1, saluran 39 — di dekat saluran Wi-Fi 6, dan saluran 38 terletak di antara keduanya, di zona gangguan minimal. Pemilihan tiga saluran menjamin perangkat akan terdeteksi bahkan dalam kondisi lalu lintas radio yang padat — misalnya, di pusat perbelanjaan dengan puluhan titik akses Wi-Fi.
Peripheral mengirimkan paket advertising secara berurutan pada ketiga saluran — ini disebut advertising event. Perangkat pusat memindai satu saluran pada satu waktu, beralih di antara mereka sesuai dengan algoritma yang diimplementasikan di Bluetooth Controller. Probabilitas deteksi selama satu advertising event tanpa tabrakan mendekati 100%.
Bluetooth Core Specification mendefinisikan beberapa jenis advertising PDU (Protocol Data Unit), masing-masing dengan tujuannya sendiri. Jenis utama: ADV_IND (connectable undirected advertising) — iklan standar dengan kemampuan koneksi, ADV_NONCONN_IND (non-connectable undirected advertising) — hanya iklan tanpa koneksi, ADV_SCAN_IND (scannable undirected advertising) — mendukung scan request, ADV_DIRECT_IND (directed advertising) — iklan untuk Central tertentu.
ADV_IND — jenis yang paling umum, digunakan di sebagian besar perangkat BLE. Setelah menerima ADV_IND, Central dapat mengirim connection request dan membangun koneksi. ADV_NONCONN_IND digunakan oleh beacon (Beacon): perangkat beriklan tetapi tidak menerima permintaan koneksi — hanya transmisi data satu arah.
| Jenis PDU | Deskripsi | Koneksi | Scan response |
|---|---|---|---|
| ADV_IND | Iklan standar | Ya | Ya |
| ADV_DIRECT_IND | Iklan untuk Central tertentu | Ya | Tidak |
| ADV_NONCONN_IND | Tanpa koneksi (beacon) | Tidak | Tidak |
| ADV_SCAN_IND | Dengan dukungan pemindaian | Ya | Ya |
| ADV_EXT_IND | Extended advertising (BLE 5.0) | Ya | Ya |
ADV_DIRECT_IND berisi alamat Central target, memungkinkan koneksi cepat tanpa menunggu pemindaian. Digunakan ketika perangkat sudah saling "mengenal" — misalnya, setelah menghubungkan kembali ke smartphone yang sebelumnya dipasangkan. Jenis ini mengurangi konsumsi daya karena tidak memerlukan iklan di semua saluran.
Advertising interval — adalah waktu antara advertising event yang berurutan. Spesifikasi memungkinkan interval dari 20 ms hingga 10.24 s dengan langkah 0.625 ms. Interval aktual dihitung sebagai jumlah dari nilai tetap dan penundaan acak (0–10 ms), yang mengurangi kemungkinan tabrakan antara beberapa perangkat yang beriklan.
Pemilihan interval adalah keseimbangan antara kecepatan deteksi dan konsumsi daya. Pada interval 20 ms, perangkat akan terdeteksi dalam 20–30 ms, tetapi arus rata-rata sekitar 1–2 mA. Pada interval 1000 ms — deteksi memakan waktu hingga 1 detik, tetapi arus rata-rata turun menjadi 50–100 µA. Untuk sebagian besar perangkat IoT, interval yang direkomendasikan adalah 200–1000 ms.
Menurut Texas Instruments Application Report SWRA478 (2024), peningkatan advertising interval dari 100 ms menjadi 1000 ms mengurangi konsumsi daya sebesar 90%. Jika perangkat tidak memerlukan deteksi segera (misalnya, sensor suhu yang mengirimkan data sekali per menit), interval optimal adalah 1000–2000 ms.
Parameter tambahan — advertising timeout — waktu maksimum perangkat beriklan. Di iOS, Peripheral secara otomatis menonaktifkan iklan setelah 180 detik dalam mode latar belakang. Di Android tidak ada batasan seperti itu, tetapi produsen dapat menambahkan batas mereka sendiri.
Scan Response — adalah paket data tambahan (hingga 31 byte) yang dikirim Peripheral sebagai respons terhadap scan request dari Central. Scan request dikirim oleh Central setelah menerima paket advertising, jika memerlukan informasi lebih lanjut sebelum koneksi. Scan Response tidak memerlukan iklan tambahan — hanya dikirim berdasarkan permintaan, menghemat saluran.
Distribusi data tipikal: dalam advertising PDU (31 byte) ditempatkan flag (3 byte), UUID layanan (2–16 byte) dan data pabrikan (byte sisanya). Dalam scan response dikirimkan nama lengkap perangkat (hingga 28 byte) dan UUID tambahan atau TX Power Level. Pembagian ini memungkinkan Central dengan cepat memfilter perangkat berdasarkan UUID tanpa membaca scan response.
Saat merancang paket advertising, perhatikan: jika semua 31 byte terisi di advertising PDU, Central tidak akan dapat menentukan apakah perangkat mendukung scan response. Disarankan untuk menyisakan setidaknya 3–5 byte kosong di advertising PDU untuk menunjukkan kemampuan scan response.
Extended Advertising (BLE 5.0) — adalah perluasan mekanisme iklan yang meningkatkan ukuran paket advertising dari 31 menjadi 251 byte dan menambahkan jenis paket baru. Extended Advertising juga mendukung coded PHY untuk meningkatkan jangkauan komunikasi hingga 1 km di area terbuka dan iklan periodik (Periodic Advertising) untuk sinkronisasi beberapa Central.
Inovasi utama: ADV_EXT_IND — extended advertising PDU yang dapat mengirimkan hingga 251 byte data dalam satu paket. Extended Advertising menggunakan saluran primer (37, 38, 39) hanya untuk menunjukkan di saluran sekunder mana (0–36) data lengkap dikirimkan. Ini mengurangi beban pada saluran iklan dan meningkatkan bandwidth total sistem.
Periodic Advertising — mekanisme tambahan dimana Peripheral mengirimkan data pada saluran sekunder dengan interval tetap, dan Central dapat menyinkronkan dengan urutan ini. Digunakan untuk layanan yang memerlukan pembaruan data secara teratur — misalnya, transmisi audio atau pembacaan sensor secara real-time.
| Parameter | BLE Standar | Extended BLE 5.0 |
|---|---|---|
| Ukuran maks. paket | 31 byte | 251 byte |
| Saluran | Hanya 37, 38, 39 | + sekunder 0–36 |
| Jangkauan | Hingga 100 m | Hingga 1000 m (coded PHY) |
| Kecepatan | 1 Mbps | 125 kbps – 2 Mbps |
| Periodik | Tidak | Ya |
iOS (Core Bluetooth) menyediakan CBPeripheralManager untuk mengelola iklan. Parameter advertising diatur melalui kamus advertisementData dengan kunci CBAdvertisementDataLocalNameKey (nama perangkat), CBAdvertisementDataServiceUUIDsKey (UUID layanan), CBAdvertisementDataTxPowerLevelKey (daya). iOS secara otomatis mengelola advertising interval dan tidak mengizinkan pengaturan manual.
import CoreBluetooth
class AdvertiserManager: NSObject, CBPeripheralManagerDelegate {
private var peripheralManager: CBPeripheralManager!
func startBLEAdvertising() {
let data: [String: Any] = [
CBAdvertisementDataLocalNameKey: "BLE Beacon",
CBAdvertisementDataServiceUUIDsKey: [
CBUUID("180F")
],
CBAdvertisementDataIsConnectable: true
]
peripheralManager.startAdvertising(data)
}
}
Android (BluetoothLeAdvertiser) menyediakan kontrol yang lebih mendetail. Tersedia: AdvertiseSettings — pengaturan mode (LOW_POWER, BALANCED, LOW_LATENCY), daya pemancar dan interval; AdvertiseData — data paket. Android mendukung extended advertising (BLE 5.0) pada perangkat yang kompatibel, tetapi pangsa perangkat tersebut di pasar sekitar 30–40%.
BluetoothLeAdvertiser advertiser =
BluetoothAdapter.getDefaultAdapter()
.getBluetoothLeAdvertiser();
AdvertiseSettings settings = new AdvertiseSettings.Builder()
.setAdvertiseMode(
AdvertiseSettings.ADVERTISE_MODE_LOW_POWER
)
.setTxPowerLevel(
AdvertiseSettings.ADVERTISE_TX_POWER_MEDIUM
)
.build();
AdvertiseData data = new AdvertiseData.Builder()
.setIncludeDeviceName(true)
.addServiceUuid(new ParcelUuid(
UUID.fromString(
"0000180F-0000-1000-8000-00805F9B34FB"
)
))
.build();
advertiser.startAdvertising(
settings, data, advertiseCallback
);
Saat mengembangkan aplikasi BLE lintas platform, perhatikan perbedaannya: iOS tidak mengizinkan kontrol langsung atas advertising interval, tetapi menjamin operasi yang stabil di semua perangkat; Android menyediakan kontrol penuh, tetapi fragmentasi versi dan produsen dapat menyebabkan ketidakcocokan. Disarankan untuk menguji advertising pada perangkat nyata dari kedua platform.
Pertanyaan yang Sering Diajukan
Connectable advertising (ADV_IND) memungkinkan Central untuk membangun koneksi dua arah dengan perangkat. Non-connectable (ADV_NONCONN_IND) — hanya transmisi data satu arah, digunakan oleh beacon (Beacon) untuk menyiarkan pengidentifikasi tanpa kemungkinan koneksi.
Paket advertising standar — 31 byte, scan response — 31 byte tambahan. Extended Advertising (BLE 5.0+) meningkatkan batas menjadi 251 byte dengan menggunakan saluran sekunder untuk transmisi data.
Untuk sebagian besar perangkat IoT, disarankan 500–1000 ms. Jika deteksi cepat diperlukan (misalnya, untuk menghubungkan headphone) — 20–50 ms. Untuk sensor dengan pengiriman data jarang — 1000–2000 ms untuk menghemat energi.
Tiga saluran (37, 38, 39) adalah kompromi antara keandalan deteksi dan bandwidth. Satu saluran mungkin sibuk oleh Wi-Fi, tetapi perangkat akan terdeteksi pada dua saluran lainnya. Saluran 38 berada di zona gangguan minimal antara saluran Wi-Fi.
Advertising adalah konsumen energi utama di BLE. Pada interval 1000 ms, arus rata-rata adalah 50–100 µA, memungkinkan perangkat beroperasi selama satu tahun pada baterai CR2032. Pada interval 20 ms, arus meningkat menjadi 1–2 mA, mengurangi waktu operasi menjadi beberapa minggu.
Ringkasan
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