Central — шта је, улога у BLE-у и како скенира уређаје

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

Central — је уређај у архитектури Bluetooth Low Energy који покреће скенирање, успоставља везу и управља разменом података са периферним уређајима. У контексту мобилног развоја, Central је паметни телефон или таблет на iOS-у или Android-у који се повезује са BLE сензорима, фитнес тракерима и паметним додацима. Према Bluetooth Core Specification 5.4 (2023), Central може истовремено да подржава до 7 веза са различитим Peripheral-има, иако стварно ограничење зависи од произвођача чипа и верзије оперативног система. Core Bluetooth на iOS-у и android.bluetooth.le на Android-у пружају потпуни API за управљање улогом Central.

Главне тачке

  • Central — активни BLE уређај који скенира, повезује се и управља разменом са периферијом.
  • Скенирање се врши путем рекламних пакета — Central може да филтрира уређаје по Service UUID ради уштеде енергије.
  • Један Central може истовремено да подржава до 7 веза са различитим Peripheral-има (зависи од имплементације).
  • У мобилном развоју, Central је паметни телефон који користи Core Bluetooth (iOS) или android.bluetooth.le (Android).
  • Улога Central троши више енергије од Peripheral због сталног скенирања и обраде података.

Шта је Central у BLE-у?

Central — је GATT клијент у архитектури Bluetooth Low Energy који покреће сву комуникацију. За разлику од Peripheral-а који пасивно чека везу и рекламира своје услуге, Central активно скенира етар, открива рекламне пакете и покреће везу.

Асиметрични модел Central-Peripheral је основна карактеристика BLE-а. Central управља логиком интеракције: одлучује ком уређају да се повеже, које услуге да истражи, које карактеристике да чита и пише. Peripheral обавља улогу сервера података — чува услуге и карактеристике, али не покреће везе.

Према Bluetooth Core Specification 5.4 (2023), уређај може истовремено да буде Central и Peripheral (dual role). На пример, паметни телефон може бити Central за фитнес наруквицу и Peripheral за други телефон који преноси датотеке. Међутим, истовремени рад у обе улоге повећава потрошњу енергије и сложеност управљања везама.

У екосистему мобилног развоја, улога Central је најчешћи сценарио. Апликација на паметном телефону тражи BLE уређаје (сензоре, слушалице, наруквице), повезује се са њима и прима податке. Програмер користи API оперативног система за рад са Central-ом: CBCentralManager у iOS-у, BluetoothLeScanner и BluetoothGatt у Android-у.

Процес скенирања уређаја

Скенирање — је прва фаза рада Central-а. Уређај ослушкује BLE радио канале (37, 38, 39) ради откривања рекламних пакета које периодично шаљу Peripheral-и. Сваки рекламни пакет садржи име уређаја, листу UUID услуга и корисничке податке.

Central може да ради у два режима скенирања: passive scanning (само пријем рекламних пакета) и active scanning (слање захтева за скенирањем ради добијања додатних података путем scan response-а). Passive scanning штеди енергију, али даје мање информација. Active scanning омогућава добијање комплетних података рекламног пакета, укључујући име уређаја и комплетну листу услуга.

Филтрирање по UUID-у — важна оптимизација. Central може да скенира само уређаје са одређеним Service UUID-ом, игноришући остале. Ово не само да штеди енергију, већ и поједностављује логику апликације: delegate прима само релевантне уређаје.

swift
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
                ]
            )
        }
    }
}

Управљање везама

Управљање везама — кључна одговорност Central-а. Након откривања одговарајућег Peripheral-а, Central покреће везу. BLE веза се успоставља кроз процедуру успостављања везе, која укључује размену параметара: connection interval, slave latency и supervision timeout.

Connection interval одређује колико често Central и Peripheral размењују податке након повезивања. Интервал може бити од 7.5 ms до 4 секунде. Што је интервал краћи, то је већа пропусна моћ, али и потрошња енергије. Slave latency омогућава Peripheral-у да прескочи неколико догађаја везе ради уштеде енергије. Supervision timeout — максимално време без одговора, након чега се веза сматра изгубљеном.

Central је одговоран за прекид везе након завршетка размене података. BLE уређаји обично не држе везу стално — Central се повезује, добија податке и прекида везу. Ово је стандардни образац за IoT сензоре: Central скенира, проналази сензор температуре, повезује се, чита вредност и прекида везу.

ПараметарОпсегНаменаПрепорука
Connection Interval7.5 ms – 4 sУчесталост размене података30–50 ms за токове, 1–4 s за ретке податке
Slave Latency0–499 догађајаПрескакање догађаја од стране Peripheral-а4–10 за уштеду енергије сензора
Supervision Timeout100 ms – 32 sТimeout губитка везе6–10 секунди за већину сценарија
MTU23–517 бајтоваВеличина ATT пакетаЗатражити максимални при повезивању

Central у iOS-у: Core Bluetooth

Core Bluetooth — Apple-ов оквир за рад са BLE-ом на iOS-у и macOS-у. Класа CBCentralManager пружа потпуни API за имплементацију улоге Central: скенирање, повезивање, управљање везама. Рад са Central-ом у iOS-у се заснива на моделу delegate-а: CBCentralManagerDelegate прима догађаје промене стања, откривања уређаја и резултата повезивања.

Главни кораци рада Central-а у iOS-у: иницијализација CBCentralManager-а, провера Bluetooth стања, покретање скенирања, обрада откривених уређаја кроз delegate, повезивање са изабраним Peripheral-ом, откривање услуга и карактеристика, размена података.

swift
// Повежи се са откривеним Peripheral-ом
func centralManager(
    _ central: CBCentralManager,
    didDiscover peripheral: CBPeripheral,
    advertisementData: [String: Any],
    rssi RSSI: NSNumber
) {
    // Задржи референцу на peripheral и повежи се
    discoveredPeripheral = peripheral
    central.connect(peripheral, options: nil)
}

// Успешно повезивање
func centralManager(
    _ central: CBCentralManager,
    didConnect peripheral: CBPeripheral
) {
    peripheral.delegate = self
    peripheral.discoverServices(nil)
}

iOS ограничава рад BLE-а у позадини: у позадинском режиму апликација може да скенира само са одређеним кључевима у Info.plist-у, а повезани уређаји могу да обавештавају Central о променама података. За критичне апликације (медицински уређаји) користите Background Modes са кључем bluetooth-central.

Central у Android-у: BluetoothLeScanner

Android пружа API BluetoothLeScanner за скенирање BLE уређаја и BluetoothGatt за управљање везама. Од Android 5.0 (API 21), BluetoothLeScanner је заменио застарели startLeScan. API захтева дозволе BLUETOOTH, BLUETOOTH_ADMIN и ACCESS_FINE_LOCATION (или ACCESS_BACKGROUND_LOCATION за Android 10+).

java
import android.bluetooth.le.*;
import android.bluetooth.*;

private BluetoothLeScanner scanner;
private BluetoothGatt bluetoothGatt;

// Подеси скенирање
ScanSettings settings = new ScanSettings.Builder()
    .setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY)
    .build();

// Покрени скенирање
scanner.startScan(null, settings, new ScanCallback() {
    @Override
    public void onScanResult(
            int callbackType,
            ScanResult result
    ) {
        BluetoothDevice device = result.getDevice();
        // Повежи се са уређајем
        bluetoothGatt = device.connectGatt(
            context, false, gattCallback
        );
    }
});

На Android-у је важно узети у обзир ограничења скенирања: од Android 7 (API 24), скенирање се не може покренути чешће од 5 пута у 30 секунди у апликацијама које не користе Location. Android 12+ захтева дозволе BLUETOOTH_SCAN, BLUETOOTH_CONNECT и ADVERTISE, као и runtime захтев ових дозвола.

Потрошња енергије Central-а

Потрошња енергије Central-а је већа од Peripheral-а због потребе за сталним скенирањем радио канала. Central прима податке путем BLE пакета, обрађује их, управља везама и често извршава прорачуне на процесору апликације. Према Bluetooth SIG-у, скенирање троши од 30 mA до 100 mA у зависности од режима.

Постоји неколико стратегија уштеде енергије за Central. Интервално скенирање — најефикаснији метод: Central скенира у кратким прозорима (scan window) са дугим паузама (scan interval). На пример, при scan window од 30 ms и scan interval од 1000 ms, потрошња енергије се смањује за 97% у поређењу са непрекидним скенирањем.

Додатна оптимизација — филтрирање по UUID-у. Central брже обрађује само релевантне рекламне пакете, игноришући остале. Ово смањује оптерећење процесора и повећава време рада уређаја на батерију. Такође се препоручује гашење скенирања одмах након откривања потребног уређаја и не држање везе дуже него што је потребно.

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

Може ли паметни телефон бити истовремено Central и Peripheral?

Да, BLE подржава dual role: уређај може истовремено бити Central за једне уређаје и Peripheral за друге. На пример, паметни телефон чита податке са сензора (као Central) и истовремено рекламира сопствену услугу (као Peripheral) за пренос података другом уређају.

Колико уређаја може истовремено да опслужује Central?

BLE спецификација дефинише ограничење од 7 веза за један Central. У пракси, ограничење зависи од произвођача чипа: Nordic nRF52840 чипови подржавају до 20 веза, а неки буџетски Bluetooth адаптери — не више од 3–4.

Зашто Central не открива мој BLE сензор?

Разлози могу бити различити: сензор не рекламира (није у advertising режиму), филтер по UUID-у је превише строг, Bluetooth на паметном телефону је искључен, недостају потребне дозволе (Location на Android-у) или је сензор ван домета (препоручује се до 10 метара у затвореном простору).

Да ли је потребно стално држати везу са BLE уређајем?

Не нужно. За многе сценарије користи се образац connect-and-read: Central скенира, повезује се, чита потребне податке и прекида везу. Стална веза је потребна само за токове података (пулс, ЕКГ) или управљање уређајем у реалном времену.

Како смањити потрошњу енергије Central-а приликом скенирања?

Користите интервално скенирање са односом scan window 30–50 ms и scan interval 500–1000 ms. Филтрирајте уређаје по UUID-у да бисте обрађивали само релевантне рекламне пакете. Искључите скенирање одмах након откривања потребног Peripheral-а.

Закључак

  • Central — активни учесник BLE везе који покреће скенирање, повезивање и управљање разменом података.
  • Процес скенирања укључује пријем рекламних пакета на каналима 37, 38, 39 са могућношћу филтрирања по Service UUID.
  • Након откривања Peripheral-а, Central успоставља везу са подесивим параметрима — connection interval, slave latency, supervision timeout.
  • У мобилном развоју, Central се имплементира кроз CBCentralManager (iOS) или BluetoothLeScanner + BluetoothGatt (Android).
  • Један Central може истовремено да управља до 7 веза у стандардној Bluetooth конфигурацији.
  • Потрошња енергије Central-а се може оптимизовати интервалним скенирањем и UUID филтрирањем за повећање трајања батерије.
  • Правилно управљање животним циклусом везе — од откривања до прекида — одређује ефикасност BLE апликације.

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

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

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

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