Peripheral — шта је то, улога у BLE и како рекламира сервисе

Аутор: IT Sectr Објављено: 2026-07-15 Време читања: 9 мин

Peripheral — уређај у архитектури Bluetooth Low Energy који рекламира своје сервисе путем advertising пакета и очекује повезивање од Central-а. У IoT екосистему Peripheral је обично уређај са ограниченом потрошњом енергије: сензор температуре, паметна лампа, фитнес наруквица, beacon. Bluetooth Core Specification 5.4 (2023) дефинише рекламни протокол: Peripheral периодично шаље advertising пакете који садрже име уређаја, листу сервиса и корисничке податке, а Central скенира ове пакете и одлучује да ли ће се повезати. Након успостављања везе, Peripheral делује као GATT сервер, пружајући сервисе и карактеристике за читање и писање.

Главно

  • Peripheral — пасивни BLE уређај који рекламира сервисе и чека повезивање од Central-а.
  • Рекламни пакети (advertising) садрже име уређаја, UUID сервиса, податке произвођача и RSSI за процену удаљености.
  • Peripheral делује као GATT сервер који чува сервисе и карактеристике за приступ Central-а.
  • Потрошња енергије Peripheral-а може бити од 5 µA у режиму спавања до 15 mA при активном преносу података.
  • Након повезивања, Peripheral може искључити рекламу ради уштеде енергије и поново је укључити по потреби.

Шта је Peripheral у BLE?

Peripheral — BLE уређај који имплементира GATT сервер и рекламира своје могућности кроз advertising канале. За разлику од Central-а, који активно тражи уређаје, Peripheral пасивно чека повезивање. Ово је асиметрични модел, оптимизован за енергетску ефикасност уређаја са батеријским напајањем.

Peripheral може бити у неколико режима: advertising (реклама), connected (повезан на Central), sleeping (спавање са искљученом рекламом). У advertising режиму, Peripheral периодично шаље кратке пакете података, трошећи притом минималну енергију. Након повезивања, Peripheral прелази у connected режим, где размењује податке са Central-ом према договореном connection interval-у.

Према Bluetooth Core Specification 5.4 (2023), уређај може динамички да прелази између улога Peripheral и Central, али у сваком тренутку за једну везу улога је фиксна. Типичан сценарио: IoT сензор стално ради у улози Peripheral-а, а паметни телефон управља везом као Central.

За програмера је важно да разуме: Peripheral одређује који сервиси и карактеристике су доступни и управља приступом њима. Структура GATT сервера на Peripheral-у одређује које податке Central може да чита и које команде може да пише.

Процес рекламе (Advertising)

Advertising (реклама) — механизам путем којег Peripheral обавештава о свом присуству. Peripheral шаље advertising пакете на три одвојена канала (37, 38, 39) са интервалом од 20 ms до 10.24 секунди. Сваки рекламни пакет садржи фиксне информације и може укључивати опционе податке.

Постоје две врсте рекламних пакета: advertising PDU (главни пакет) и scan response PDU (одговор на захтев Central-а). Главни пакет садржи обавезна поља: тип пакета, адресу пошиљаоца, податке. Ако Central пошаље scan request, Peripheral одговара додатним пакетом са комплетним информацијама — на пример, комплетним именом уређаја.

Параметри advertising-а утичу на брзину откривања и потрошњу енергије. Advertising interval — време између слања пакета. Што је интервал краћи, Central ће брже открити уређај, али Peripheral троши више енергије. Препоручени интервал: 100–1000 ms за већину уређаја.

ПараметарОпсегУтицајПрепорука
Advertising Interval20 ms – 10.24 sБрзина откривања, енергија100–1000 ms за равнотежу
Advertising Channels37, 38, 39Поузданост откривањаСва 3 канала обавезно
Tx Power−20 – +10 dBmДаљина, сметње0 dBm за унутрашњост, +4 dBm за споља
Advertising Timeout0 – 180 секундиТрајање рекламе0 (бесконачно) за beacon-е

Структура рекламног пакета

BLE рекламни пакет има ограничење од 31 бајта за advertising PDU и још 31 бајт за scan response. Унутар пакета, подаци су организовани у AD Structure (Advertising Data Structure) формату: свако поље има тип (1 бајт), дужину (1 бајт) и вредност.

Најчешће коришћени AD Type: Flags (0x01) — режими повезивања и откривања, Local Name (0x08 или 0x09) — име уређаја, Service UUID List (0x02–0x07) — листа UUID сервиса, Manufacturer Specific Data (0xFF) — подаци произвођача. Правилно паковање података у 31-бајтни пакет важан је задатак програмера уграђених уређаја.

За уређаје који треба да пренесу више података, постоји extended advertising (BLE 5.0+), који повећава величину рекламног пакета на 251 бајт и додаје нове типове пакета. Extended advertising такође подржава канале са кодирањем (coded PHY) за повећање домета до 1 km на отвореном простору.

При пројектовању рекламног пакета узмите у обзир: што је више података у advertising пакету, већа је вероватноћа колизије са другим уређајима. За брзо откривање препоручује се постављање само критичних података (Service UUID) у advertising PDU, а додатних података — у scan response.

Peripheral као GATT сервер

GATT сервер на Peripheral-у садржи све сервисе и карактеристике које Central може открити и са којима може да интерагује. Након повезивања, Central открива сервисе (discover services), затим карактеристике (discover characteristics) и интерагује са њима путем GATT протокола.

Peripheral као GATT сервер мора исправно обрађивати захтеве од Central-а: читање (read request), писање (write request), обавештења (notification) и потврђена обавештења (indication). Сваки захтев пролази кроз GATT табелу, где сваком атрибуту (сервису, карактеристици, дескриптору) одговара Handle — 16-битна адреса.

Програмер Peripheral-а одређује права приступа за сваки атрибут: само читање, само писање, читање и писање, са шифровањем или без. За поверљиве податке (личне информације, медицински параметри) препоручује се обавезно шифровање кроз MITM Protection.

Peripheral у iOS-у: CBPeripheralManager

CBPeripheralManager — класа Core Bluetooth за имплементацију улоге Peripheral на iOS-у. Управља GATT сервером, објављује сервисе и карактеристике, обрађује захтеве од Central-а. За разлику од CBCentralManager-а, CBPeripheralManager не скенира — само рекламира и опслужује везе.

Главни кораци имплементације Peripheral на iOS-у: иницијализација CBPeripheralManager-а, додавање сервиса путем add, покретање рекламе путем startAdvertising, обрада захтева од Central-а преко делегата 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 дозвољава Peripheral-у да ради у позадинском режиму када је присутан кључ bluetooth-peripheral у Background Modes-у. У позадини, iOS може да рекламира са ограниченим скупом података и да опслужује везе. За дуготрајну рекламу (више од 180 секунди) користите опцију CBAdvertisementDataWaitForResponseFromCentral ради уштеде енергије.

Peripheral у Android-у: BluetoothLeAdvertiser

Android пружа BluetoothLeAdvertiser за рад у улози Peripheral (од API 21). API омогућава покретање рекламе са подесивим параметрима: снага предајника, интервал рекламе, подаци пакета. Android такође подржава extended advertising (BLE 5.0) на компатибилним уређајима.

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
    );
}

На Android-у подршка за Peripheral зависи од произвођача и верзије ОС. Не подржавају сви уређаји BluetoothLeAdvertiser — проверавајте путем adapter.isMultipleAdvertisementSupported(). Од Android 10, за рад у улози Peripheral потребна је дозвола BLUETOOTH_ADVERTISE, као и runtime захтев за апликације са target SDK 31+.

Енергетска ефикасност Peripheral-а

Енергетска ефикасност — кључна предност BLE-а, а Peripheral игра главну улогу у томе. Уређај може радити на CR2032 батерији (220 mAh) више од годину дана захваљујући оптимизованој потрошњи енергије. Већину времена Peripheral проводи у режиму спавања са искљученом рекламом, будећи се само ради слања рекламног пакета или обраде захтева од Central-а.

Потрошња енергије Peripheral-а у различитим режимима: режим спавања (deep sleep) — 1–5 µA, idle са укљученим тајмером — 10–50 µA, advertising — 5–15 mA (за време слања пакета), connected — 5–10 mA (за време connection event-а). При advertising interval-у од 1000 ms и трајању пакета од 4 ms, просечна струја износи око 50–100 µA.

Према Texas Instruments Application Report (SWRA478, 2024), оптимизација advertising interval-а са 100 ms на 1000 ms смањује просечну потрошњу енергије за 90%. Додатна уштеда се постиже коришћењем slave latency (прескакање connection event-а), смањењем Tx Power на кратким удаљеностима и искључивањем рекламе након повезивања (connectable advertising).

Често постављана питања

Може ли Peripheral да иницира слање података?

Да, кроз механизам обавештења (Notify/Indicate). Иако је иницијатор везе увек Central, након повезивања Peripheral може слати податке путем GATT обавештења без експлицитног захтева од Central-а. За то Central мора претходно да се претплати путем CCCD-а.

Колико дуго Peripheral може да рекламира?

Трајање рекламе није ограничено спецификацијом, али је у пракси ограничено енергијом батерије. На iOS-у, Peripheral може да рекламира у позадини највише 180 секунди по сесији без додатних подешавања. На Android-у, реклама може радити неограничено, али значајно скраћује време рада на батерију.

Како смањити потрошњу енергије Peripheral-а без губитка функционалности?

Повећајте advertising interval (препоручује се 500–1000 ms), користите slave latency за прескакање connection event-а, искључите рекламу након повезивања и изаберите минималну Tx Power довољну за стабилну комуникацију на потребној удаљености.

Шта је non-connectable advertising и чему служи?

Non-connectable advertising — режим у којем Peripheral рекламира, али не прихвата захтеве за повезивање. Користи се за beacon-е који само емитују податке (на пример, идентификатор продавнице) без успостављања двосмерне везе. Штеди енергију у поређењу са connectable advertising-ом.

Који подаци се могу пренети у рекламном пакету (31 бајт)?

У 31 бајт може се укључити: заставице (3 бајта), име уређаја (до 28 бајта у скраћеном облику), листа UUID сервиса (2–16 бајта по UUID-у), подаци произвођача (до 26 бајта). Оптимална стратегија — ставити UUID сервиса у advertising PDU за филтрирање, а пуно име — у scan response.

Резиме

  • Peripheral — BLE GATT сервер који рекламира своје сервисе и чека повезивање од Central-а ради размене података.
  • Рекламни пакети се преносе на каналима 37, 38, 39 са интервалом од 20 ms до 10.24 s и ограничени су на 31 бајт података.
  • Peripheral чува сервисе и карактеристике у GATT табели, пружајући Central-у приступ подацима кроз читање, писање и обавештења.
  • На iOS-у, Peripheral се имплементира кроз CBPeripheralManager, на Android-у — кроз BluetoothLeAdvertiser са GATT сервером.
  • Потрошња енергије Peripheral-а у режиму спавања износи 1–5 µA, што омогућава рад до годину дана на CR2032 батерији.
  • Оптимизација advertising interval-а и slave latency-ја може смањити потрошњу енергије до 90% без губитка функционалности.
  • Правилна структура рекламног пакета и GATT сервера одређује компатибилност, брзину откривања и ефикасност BLE уређаја.

Развићемо мобилну апликацију под кључ

IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.

Разговарајте о пројекту

Прочитајте такође