Peripheral — apa itu, peran dalam BLE dan cara mengiklankan layanan

Penulis: IT Sectr Diterbitkan: 2026-07-15 Waktu membaca: 9 mnt

Peripheral — adalah perangkat dalam arsitektur Bluetooth Low Energy yang mengiklankan layanannya melalui paket advertising dan menunggu koneksi dari Central. Dalam ekosistem IoT, Peripheral biasanya merupakan perangkat dengan konsumsi daya terbatas: sensor suhu, lampu pintar, gelang kebugaran, beacon. Bluetooth Core Specification 5.4 (2023) mendefinisikan protokol iklan: Peripheral secara periodik mengirim paket advertising yang berisi nama perangkat, daftar layanan, dan data pengguna, sementara Central memindai paket-paket ini dan memutuskan apakah akan terhubung. Setelah koneksi terbentuk, Peripheral berperan sebagai server GATT, menyediakan layanan dan karakteristik untuk dibaca dan ditulis.

Poin Utama

  • Peripheral — perangkat BLE pasif yang mengiklankan layanan dan menunggu koneksi dari Central.
  • Paket iklan (advertising) berisi nama perangkat, UUID layanan, data pabrikan, dan RSSI untuk memperkirakan jarak.
  • Peripheral berperan sebagai server GATT yang menyimpan layanan dan karakteristik untuk akses Central.
  • Konsumsi daya Peripheral dapat berkisar dari 5 µA dalam mode tidur hingga 15 mA saat transmisi data aktif.
  • Setelah terhubung, Peripheral dapat menonaktifkan iklan untuk menghemat daya dan mengaktifkannya kembali jika diperlukan.

Apa itu Peripheral dalam BLE?

Peripheral — adalah perangkat BLE yang mengimplementasikan server GATT dan mengiklankan kemampuannya melalui saluran advertising. Berbeda dengan Central yang secara aktif mencari perangkat, Peripheral secara pasif menunggu koneksi. Ini adalah model asimetris yang dioptimalkan untuk efisiensi daya perangkat bertenaga baterai.

Peripheral dapat berada dalam beberapa mode: advertising (iklan), connected (terhubung ke Central), sleeping (tidur dengan iklan dinonaktifkan). Dalam mode advertising, Peripheral secara periodik mengirim paket data pendek dengan konsumsi daya minimal. Setelah terhubung, Peripheral beralih ke mode connected, di mana ia bertukar data dengan Central sesuai dengan interval koneksi yang disepakati.

Menurut Bluetooth Core Specification 5.4 (2023), perangkat dapat secara dinamis beralih antara peran Peripheral dan Central, tetapi pada setiap saat, untuk satu koneksi, peran tersebut tetap. Skenario tipikal: sensor IoT terus bekerja dalam peran Peripheral, dan smartphone mengelola koneksi sebagai Central.

Penting bagi pengembang untuk memahami: Peripheral menentukan layanan dan karakteristik apa yang tersedia dan mengelola akses ke sana. Struktur server GATT di Peripheral menentukan data apa yang dapat dibaca Central dan perintah apa yang dapat ditulisnya.

Proses Iklan (Advertising)

Advertising (iklan) — adalah mekanisme di mana Peripheral mengumumkan keberadaannya. Peripheral mengirim paket advertising pada tiga saluran khusus (37, 38, 39) dengan interval antara 20 ms hingga 10.24 detik. Setiap paket iklan berisi informasi tetap dan dapat menyertakan data opsional.

Ada dua jenis paket iklan: advertising PDU (paket utama) dan scan response PDU (respons terhadap permintaan Central). Paket utama berisi bidang wajib: jenis paket, alamat pengirim, data. Jika Central mengirim permintaan pindai (scan request), Peripheral merespons dengan paket tambahan yang berisi informasi lebih lengkap — misalnya, nama lengkap perangkat.

Parameter advertising memengaruhi kecepatan deteksi dan konsumsi daya. Advertising interval — waktu antara pengiriman paket. Semakin pendek intervalnya, semakin cepat Central mendeteksi perangkat, tetapi semakin banyak daya yang dikonsumsi Peripheral. Interval yang direkomendasikan: 100–1000 ms untuk sebagian besar perangkat.

ParameterRentangDampakRekomendasi
Advertising Interval20 ms – 10.24 sKecepatan deteksi, daya100–1000 ms untuk keseimbangan
Advertising Channels37, 38, 39Keandalan deteksiSemua 3 saluran wajib
Tx Power−20 – +10 dBmJangkauan, interferensi0 dBm untuk dalam ruangan, +4 dBm untuk luar ruangan
Advertising Timeout0 – 180 detikDurasi iklan0 (tak terbatas) untuk beacon

Struktur Paket Iklan

Paket iklan BLE memiliki batasan 31 byte untuk advertising PDU dan 31 byte tambahan untuk scan response. Di dalam paket, data diatur dalam format AD Structure (Advertising Data Structure): setiap bidang memiliki tipe (1 byte), panjang (1 byte), dan nilai.

AD Type yang paling sering digunakan: Flags (0x01) — mode koneksi dan deteksi, Local Name (0x08 atau 0x09) — nama perangkat, Service UUID List (0x02–0x07) — daftar UUID layanan, Manufacturer Specific Data (0xFF) — data pabrikan. Pengemasan data yang benar dalam paket 31 byte adalah tugas penting bagi pengembang perangkat tertanam.

Untuk perangkat yang perlu mengirim lebih banyak data, ada extended advertising (BLE 5.0+), yang meningkatkan ukuran paket iklan menjadi 251 byte dan menambahkan jenis paket baru. Extended advertising juga mendukung saluran berkode (coded PHY) untuk meningkatkan jangkauan hingga 1 km di area terbuka.

Saat merancang paket iklan, pertimbangkan: semakin banyak data dalam paket advertising, semakin tinggi kemungkinan tabrakan dengan perangkat lain. Untuk deteksi cepat, disarankan untuk menempatkan hanya data kritis (Service UUID) di advertising PDU, dan data tambahan — di scan response.

Peripheral sebagai Server GATT

Server GATT di Peripheral berisi semua layanan dan karakteristik yang dapat dideteksi dan berinteraksi dengan Central. Setelah terhubung, Central mendeteksi layanan (discover services), kemudian karakteristik (discover characteristics) dan berinteraksi dengannya melalui protokol GATT.

Peripheral sebagai server GATT harus memproses permintaan dari Central dengan benar: baca (read request), tulis (write request), notifikasi (notification), dan notifikasi terkonfirmasi (indication). Setiap permintaan melewati tabel GATT, di mana setiap atribut (layanan, karakteristik, deskriptor) memiliki Handle — alamat 16-bit.

Pengembang Peripheral menentukan hak akses untuk setiap atribut: hanya baca, hanya tulis, baca dan tulis, dengan atau tanpa enkripsi. Untuk data rahasia (informasi pribadi, parameter medis) disarankan untuk mewajibkan enkripsi melalui MITM Protection.

Peripheral di iOS: CBPeripheralManager

CBPeripheralManager — kelas Core Bluetooth untuk mengimplementasikan peran Peripheral di iOS. Ia mengelola server GATT, mempublikasikan layanan dan karakteristik, serta memproses permintaan dari Central. Berbeda dengan CBCentralManager, CBPeripheralManager tidak memindai — ia hanya mengiklankan dan melayani koneksi.

Langkah utama implementasi Peripheral di iOS: inisialisasi CBPeripheralManager, menambahkan layanan melalui add, memulai iklan melalui startAdvertising, memproses permintaan dari Central melalui delegasi CBPeripheralManagerDelegate.

swift
import CoreBluetooth

class BLEPeripheralManager: NSObject, CBPeripheralManagerDelegate {

    private var peripheralManager: CBPeripheralManager!

    func startAdvertising() {
        let advertisementData: [String: Any] = [
            CBAdvertisementDataLocalNameKey: "BLE Sensor",
            CBAdvertisementDataServiceUUIDsKey: [
                CBUUID("180F")
            ]
        ]
        peripheralManager.startAdvertising(advertisementData)
    }

    func peripheralManagerDidUpdateState(
        _ peripheral: CBPeripheralManager
    ) {
        if peripheral.state == .poweredOn {
            startAdvertising()
        }
    }
}

iOS memungkinkan Peripheral untuk bekerja dalam mode latar belakang saat kunci bluetooth-peripheral ada di Background Modes. Di latar belakang, iOS dapat mengiklankan dengan set data terbatas dan melayani koneksi. Untuk iklan jangka panjang (lebih dari 180 detik), gunakan opsi CBAdvertisementDataWaitForResponseFromCentral untuk menghemat daya.

Peripheral di Android: BluetoothLeAdvertiser

Android menyediakan BluetoothLeAdvertiser untuk bekerja dalam peran Peripheral (mulai API 21). API memungkinkan memulai iklan dengan parameter yang dapat dikonfigurasi: daya pemancar, interval iklan, data paket. Android juga mendukung extended advertising (BLE 5.0) pada perangkat yang kompatibel.

java
import android.bluetooth.le.*;

private BluetoothLeAdvertiser advertiser;

public void startPeripheral() {
    BluetoothAdapter adapter =
        BluetoothAdapter.getDefaultAdapter();
    advertiser = adapter.getBluetoothLeAdvertiser();

    AdvertiseData data = new AdvertiseData.Builder()
        .setIncludeDeviceName(true)
        .addServiceUuid(
            new ParcelUuid(
                UUID.fromString("0000180F-0000-1000-8000-00805F9B34FB")
            )
        )
        .build();

    AdvertiseSettings settings = new AdvertiseSettings.Builder()
        .setAdvertiseMode(AdvertiseSettings.ADVERTISE_MODE_LOW_POWER)
        .setTxPowerLevel(AdvertiseSettings.ADVERTISE_TX_POWER_MEDIUM)
        .build();

    advertiser.startAdvertising(
        settings, data, advertiseCallback
    );
}

Di Android, dukungan untuk Peripheral tergantung pada pabrikan dan versi OS. Tidak semua perangkat mendukung BluetoothLeAdvertiser — periksa melalui adapter.isMultipleAdvertisementSupported(). Mulai Android 10, untuk bekerja dalam peran Peripheral diperlukan izin BLUETOOTH_ADVERTISE, serta permintaan runtime untuk aplikasi dengan target SDK 31+.

Efisiensi Daya Peripheral

Efisiensi daya — keunggulan utama BLE, dan Peripheral memainkan peran utama di dalamnya. Perangkat dapat beroperasi dari baterai CR2032 (220 mAh) selama lebih dari setahun berkat konsumsi daya yang dioptimalkan. Peripheral menghabiskan sebagian besar waktunya dalam mode tidur dengan iklan dinonaktifkan, hanya bangun untuk mengirim paket iklan atau memproses permintaan dari Central.

Konsumsi daya Peripheral dalam berbagai mode: mode tidur (deep sleep) — 1–5 µA, idle dengan timer aktif — 10–50 µA, advertising — 5–15 mA (selama pengiriman paket), connected — 5–10 mA (selama connection event). Pada advertising interval 1000 ms dan durasi paket 4 ms, arus rata-rata sekitar 50–100 µA.

Menurut Texas Instruments Application Report (SWRA478, 2024), optimalisasi advertising interval dari 100 ms menjadi 1000 ms mengurangi konsumsi daya rata-rata sebesar 90%. Penghematan tambahan dicapai dengan menggunakan slave latency (melewatkan connection events), mengurangi Tx Power pada jarak pendek, dan menonaktifkan iklan setelah koneksi (connectable advertising).

Pertanyaan yang Sering Diajukan

Bisakah Peripheral memulai pengiriman data?

Ya, melalui mekanisme notifikasi (Notify/Indicate). Meskipun penggagas koneksi selalu Central, setelah terhubung, Peripheral dapat mengirim data melalui notifikasi GATT tanpa permintaan eksplisit dari Central. Untuk ini, Central harus berlangganan terlebih dahulu melalui CCCD.

Berapa lama Peripheral dapat mengiklankan?

Durasi iklan tidak dibatasi oleh spesifikasi, tetapi dalam praktiknya dibatasi oleh daya baterai. Di iOS, Peripheral dapat mengiklankan di latar belakang tidak lebih dari 180 detik per sesi tanpa pengaturan tambahan. Di Android, iklan dapat bekerja tanpa batas, tetapi secara signifikan mengurangi waktu kerja mandiri.

Bagaimana cara mengurangi konsumsi daya Peripheral tanpa kehilangan fungsionalitas?

Tingkatkan advertising interval (disarankan 500–1000 ms), gunakan slave latency untuk melewatkan connection events, nonaktifkan iklan setelah koneksi, dan pilih Tx Power minimal yang cukup untuk komunikasi stabil pada jarak yang diperlukan.

Apa itu non-connectable advertising dan untuk apa digunakan?

Non-connectable advertising — mode di mana Peripheral mengiklankan tetapi tidak menerima permintaan koneksi. Digunakan untuk beacon yang hanya mentransmisikan data (misalnya, pengenal toko) tanpa membuat koneksi dua arah. Menghemat daya dibandingkan dengan connectable advertising.

Data apa yang dapat dikirim dalam paket iklan (31 byte)?

Dalam 31 byte dapat disertakan: bendera (3 byte), nama perangkat (hingga 28 byte dalam bentuk singkat), daftar UUID layanan (2–16 byte per UUID), data pabrikan (hingga 26 byte). Strategi optimal — tempatkan UUID layanan di advertising PDU untuk pemfilteran, dan nama lengkap — di scan response.

Ringkasan

  • Peripheral — server GATT BLE yang mengiklankan layanannya dan menunggu koneksi dari Central untuk pertukaran data.
  • Paket iklan dikirim di saluran 37, 38, 39 dengan interval 20 ms hingga 10.24 s dan dibatasi hingga 31 byte data.
  • Peripheral menyimpan layanan dan karakteristik di tabel GATT, memberikan Central akses ke data melalui baca, tulis, dan notifikasi.
  • Di iOS, Peripheral diimplementasikan melalui CBPeripheralManager, di Android — melalui BluetoothLeAdvertiser dengan server GATT.
  • Konsumsi daya Peripheral dalam mode tidur adalah 1–5 µA, memungkinkan pengoperasian hingga satu tahun dari baterai CR2032.
  • Optimalisasi advertising interval dan slave latency dapat mengurangi konsumsi daya hingga 90% tanpa kehilangan fungsionalitas.
  • Struktur paket iklan dan server GATT yang benar menentukan kompatibilitas, kecepatan deteksi, dan efisiensi perangkat BLE.

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.

Diskusikan proyek

Baca juga