Central — ce este, rolul în BLE și cum scanează dispozitive

Autor: IT Sectr Publicat: 2026-07-15 Timp de citire: 8 min

Central — este un dispozitiv în arhitectura Bluetooth Low Energy care inițiază scanarea, stabilește conexiunea și gestionează schimbul de date cu dispozitivele periferice. În contextul dezvoltării mobile, Central este un smartphone sau tabletă pe iOS sau Android care se conectează la senzori BLE, trackere de fitness și accesorii inteligente. Conform Bluetooth Core Specification 5.4 (2023), Central poate suporta simultan până la 7 conexiuni cu diferite Peripheral, deși limitarea reală depinde de producătorul cipului și versiunea sistemului de operare. Core Bluetooth pe iOS și android.bluetooth.le pe Android oferă API complet pentru gestionarea rolului Central.

Principalele puncte

  • Central — dispozitiv activ BLE care scanează, se conectează și gestionează schimbul cu perifericele.
  • Scanarea se realizează prin pachete de publicitate — Central poate filtra dispozitivele după Service UUID pentru economisirea energiei.
  • Un Central poate suporta simultan până la 7 conexiuni cu diferite Peripheral (depinde de implementare).
  • În dezvoltarea mobilă, Central este un smartphone care utilizează Core Bluetooth (iOS) sau android.bluetooth.le (Android).
  • Rolul Central consumă mai multă energie decât Peripheral din cauza scanării continue și procesării datelor.

Ce este Central în BLE?

Central — este un client GATT în arhitectura Bluetooth Low Energy care inițiază toate comunicările. Spre deosebire de Peripheral, care așteaptă pasiv conexiunea și își publică serviciile, Central scanează activ canalul, detectează pachetele de publicitate și inițiază conexiunea.

Modelul asimetric Central-Peripheral este o caracteristică fundamentală a BLE. Central gestionează logica interacțiunii: decide la ce dispozitiv să se conecteze, ce servicii să investigheze, ce caracteristici să citească și să scrie. Peripheral îndeplinește rolul de server de date — stochează servicii și caracteristici, dar nu inițiază conexiuni.

Conform Bluetooth Core Specification 5.4 (2023), un dispozitiv poate fi simultan Central și Peripheral (dual role). De exemplu, un smartphone poate fi Central pentru o brățară fitness și Peripheral pentru un alt smartphone care transferă fișiere. Cu toate acestea, funcționarea simultană în ambele roluri crește consumul de energie și complexitatea gestionării conexiunilor.

În ecosistemul dezvoltării mobile, rolul Central este cel mai frecvent scenariu. Aplicația pe smartphone caută dispozitive BLE (senzori, căști, brățări), se conectează la ele și primește date. Dezvoltatorul utilizează API-ul sistemului de operare pentru a lucra cu Central: CBCentralManager în iOS, BluetoothLeScanner și BluetoothGatt în Android.

Procesul de scanare a dispozitivelor

Scanarea — este prima etapă de lucru a Central. Dispozitivul ascultă canalele radio BLE (37, 38, 39) pentru a detecta pachetele de publicitate trimise periodic de Peripheral. Fiecare pachet de publicitate conține numele dispozitivului, lista UUID-urilor serviciilor și date personalizate.

Central poate funcționa în două moduri de scanare: passive scanning (doar recepționarea pachetelor de publicitate) și active scanning (trimiterea unei cereri de scanare pentru a obține date suplimentare prin scan response). Passive scanning economisește energie, dar oferă mai puține informații. Active scanning permite obținerea datelor complete ale pachetului de publicitate, inclusiv numele dispozitivului și lista completă a serviciilor.

Filtrarea după UUID — o optimizare importantă. Central poate scana doar dispozitivele cu un anumit Service UUID, ignorându-le pe celelalte. Aceasta nu doar economisește energie, ci și simplifică logica aplicației: delegate primește doar dispozitivele relevante.

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

Gestionarea conexiunilor

Gestionarea conexiunilor — responsabilitatea principală a Central. După detectarea unui Peripheral potrivit, Central inițiază conexiunea. Conexiunea BLE se stabilește prin procedura de stabilire a conexiunii, care include schimbul de parametri: connection interval, slave latency și supervision timeout.

Connection interval determină cât de des Central și Peripheral fac schimb de date după conectare. Intervalul poate fi de la 7.5 ms până la 4 secunde. Cu cât intervalul este mai scurt, cu atât lățimea de bandă este mai mare, dar consumul de energie este mai ridicat. Slave latency permite Peripheral să sară peste câteva evenimente de conexiune pentru economisirea energiei. Supervision timeout — timpul maxim fără răspuns, după care conexiunea este considerată pierdută.

Central este responsabil pentru întreruperea conexiunii după finalizarea schimbului de date. Dispozitivele BLE de obicei nu mențin conexiunea permanent — Central se conectează, primește date și se deconectează. Acesta este un model standard pentru senzorii IoT: Central scanează, găsește un senzor de temperatură, se conectează, citește valoarea și se deconectează.

ParametruIntervalScopRecomandare
Connection Interval7.5 ms – 4 sFrecvența schimbului de date30–50 ms pentru fluxuri, 1–4 s pentru date rare
Slave Latency0–499 evenimenteOmiteri de evenimente de către Peripheral4–10 pentru economisirea energiei senzorului
Supervision Timeout100 ms – 32 sTimeout de pierdere a conexiunii6–10 secunde pentru majoritatea scenariilor
MTU23–517 bytesDimensiunea pachetului ATTSolicită maximul la conectare

Central în iOS: Core Bluetooth

Core Bluetooth — framework-ul Apple pentru lucrul cu BLE pe iOS și macOS. Clasa CBCentralManager oferă API-ul complet pentru implementarea rolului Central: scanare, conectare, gestionare conexiuni. Lucrul cu Central în iOS se bazează pe modelul delegate: CBCentralManagerDelegate primește evenimente de schimbare a stării, detectare a dispozitivelor și rezultate ale conexiunii.

Pașii principali de lucru cu Central în iOS: inițializarea CBCentralManager, verificarea stării Bluetooth, pornirea scanării, procesarea dispozitivelor detectate prin delegate, conectarea la Peripheral-ul selectat, detectarea serviciilor și caracteristicilor, schimbul de date.

swift
// Conectare la Peripheral-ul detectat
func centralManager(
    _ central: CBCentralManager,
    didDiscover peripheral: CBPeripheral,
    advertisementData: [String: Any],
    rssi RSSI: NSNumber
) {
    // Păstrează referința la peripheral și conectează-te
    discoveredPeripheral = peripheral
    central.connect(peripheral, options: nil)
}

// Conexiune reușită
func centralManager(
    _ central: CBCentralManager,
    didConnect peripheral: CBPeripheral
) {
    peripheral.delegate = self
    peripheral.discoverServices(nil)
}

iOS limitează funcționarea BLE în fundal: în modul fundal, aplicația poate scana doar cu anumite chei în Info.plist, iar dispozitivele conectate pot notifica Central despre modificări de date. Pentru aplicații critice (dispozitive medicale) utilizați Background Modes cu cheia bluetooth-central.

Central în Android: BluetoothLeScanner

Android oferă API-ul BluetoothLeScanner pentru scanarea dispozitivelor BLE și BluetoothGatt pentru gestionarea conexiunilor. Începând cu Android 5.0 (API 21), BluetoothLeScanner a înlocuit învechitul startLeScan. API-ul necesită permisiunile BLUETOOTH, BLUETOOTH_ADMIN și ACCESS_FINE_LOCATION (sau ACCESS_BACKGROUND_LOCATION pentru Android 10+).

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

private BluetoothLeScanner scanner;
private BluetoothGatt bluetoothGatt;

// Configurează scanarea
ScanSettings settings = new ScanSettings.Builder()
    .setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY)
    .build();

// Pornește scanarea
scanner.startScan(null, settings, new ScanCallback() {
    @Override
    public void onScanResult(
            int callbackType,
            ScanResult result
    ) {
        BluetoothDevice device = result.getDevice();
        // Conectare la dispozitiv
        bluetoothGatt = device.connectGatt(
            context, false, gattCallback
        );
    }
});

Pe Android este important să se țină cont de limitările de scanare: începând cu Android 7 (API 24), scanarea nu poate fi pornită mai des de 5 ori la 30 de secunde în aplicațiile care nu utilizează Location. Android 12+ necesită permisiunile BLUETOOTH_SCAN, BLUETOOTH_CONNECT și ADVERTISE, precum și solicitarea acestora la runtime.

Consumul de energie al Central

Consumul de energie al Central este mai mare decât al Peripheral din cauza necesității de a scana constant canalele radio. Central primește date prin pachete BLE, le procesează, gestionează conexiunile și adesea execută calcule pe procesorul aplicației. Conform Bluetooth SIG, scanarea consumă între 30 mA și 100 mA în funcție de mod.

Există mai multe strategii de economisire a energiei pentru Central. Scanarea intervată — cea mai eficientă metodă: Central scanează în ferestre scurte (scan window) cu pauze lungi (scan interval). De exemplu, cu scan window de 30 ms și scan interval de 1000 ms, consumul de energie se reduce cu 97% comparativ cu scanarea continuă.

Optimizare suplimentară — filtrarea după UUID. Central procesează mai rapid doar pachetele de publicitate relevante, ignorându-le pe celelalte. Aceasta reduce încărcarea procesorului și mărește durata de funcționare a dispozitivului pe baterie. De asemenea, se recomandă oprirea scanării imediat după detectarea dispozitivului dorit și menținerea conexiunii doar cât este necesar.

Întrebări frecvente

Poate un smartphone să fie simultan Central și Peripheral?

Da, BLE suportă dual role: un dispozitiv poate fi simultan Central pentru unele dispozitive și Peripheral pentru altele. De exemplu, un smartphone citește date de la un senzor (ca Central) și în același timp își publică propriul serviciu (ca Peripheral) pentru a transmite date către alt dispozitiv.

Câte dispozitive poate deservi simultan un Central?

Specificația BLE definește o limită de 7 conexiuni pentru un singur Central. În practică, limitarea depinde de producătorul cipului: cipurile Nordic nRF52840 suportă până la 20 de conexiuni, iar unele adaptoare Bluetooth bugetare — nu mai mult de 3–4.

De ce Central nu detectează senzorul meu BLE?

Motivele pot fi diverse: senzorul nu face publicitate (nu este în modul advertising), filtrul după UUID este prea strict, Bluetooth-ul pe smartphone este oprit, lipsesc permisiunile necesare (Location pe Android) sau senzorul este în afara razei de acțiune (se recomandă până la 10 metri în interior).

Este necesar să menținem conexiunea cu dispozitivul BLE în mod constant?

Nu neapărat. Pentru multe scenarii se utilizează modelul connect-and-read: Central scanează, se conectează, citește datele necesare și întrerupe conexiunea. Conexiunea permanentă este necesară doar pentru date în flux (puls, EKG) sau controlul dispozitivului în timp real.

Cum se reduce consumul de energie al Central în timpul scanării?

Utilizați scanarea intervată cu raportul scan window 30–50 ms și scan interval 500–1000 ms. Filtrați dispozitivele după UUID pentru a procesa doar pachetele de publicitate relevante. Opriți scanarea imediat după detectarea Peripheral-ului dorit.

Rezumat

  • Central — participantul activ al conexiunii BLE care inițiază scanarea, conectarea și gestionarea schimbului de date.
  • Procesul de scanare include recepționarea pachetelor de publicitate pe canalele 37, 38, 39 cu posibilitatea de filtrare după Service UUID.
  • După detectarea Peripheral, Central stabilește conexiunea cu parametri configurabili — connection interval, slave latency, supervision timeout.
  • În dezvoltarea mobilă, Central este implementat prin CBCentralManager (iOS) sau BluetoothLeScanner + BluetoothGatt (Android).
  • Un Central poate gestiona simultan până la 7 conexiuni în configurația standard Bluetooth.
  • Consumul de energie al Central poate fi optimizat prin scanare intervată și filtrare UUID pentru a mări durata de funcționare pe baterie.
  • Gestionarea corectă a ciclului de viață al conexiunii — de la detectare la întrerupere — determină eficiența aplicației BLE.

Vom dezvolta o aplicație mobilă la cheie

IT Sectr creează aplicații iOS și Android pentru startup-uri și afaceri din 2017. Vă vom consilia și vă vom propune cea mai bună soluție.

Discutați proiectul

Citiți și