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 (подвійна роль). Наприклад, смартфон може бути Central для фітнес-браслета та Peripheral для іншого смартфона, що передає файли. Однак одночасна робота в обох ролях збільшує енергоспоживання та складність керування з'єднаннями.

В екосистемі мобільної розробки роль Central — найпоширеніший сценарій. Додаток на смартфоні шукає BLE-пристрої (датчики, навушники, браслети), підключається до них та отримує дані. Розробник використовує API операційної системи для роботи з Central: CBCentralManager в iOS, BluetoothLeScanner та BluetoothGatt в Android.

Процес сканування пристроїв

Сканування — це перший етап роботи Central. Пристрій прослуховує радіоканали BLE (37, 38, 39) для виявлення рекламних пакетів, які періодично надсилають Peripheral. Кожен рекламний пакет містить назву пристрою, список UUID сервісів та користувацькі дані.

Central може працювати в двох режимах сканування: пасивне сканування (тільки прийом рекламних пакетів) та активне сканування (надсилання запиту на сканування для отримання додаткових даних через відповідь на сканування). Пасивне сканування економить енергію, але дає менше інформації. Активне сканування дозволяє отримати повні дані рекламного пакета, включаючи назву пристрою та повний список сервісів.

Фільтрація за UUID — важлива оптимізація. Central може сканувати лише пристрої з певним Service UUID, ігноруючи решту. Це не лише економить енергію, але й спрощує логіку додатка: делегат отримує лише релевантні пристрої.

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-з'єднання встановлюється через процедуру встановлення з'єднання, яка включає обмін параметрами: інтервал з'єднання, затримка підлеглого та тайм-аут нагляду.

Інтервал з'єднання визначає, як часто Central і Peripheral обмінюються даними після підключення. Інтервал може бути від 7,5 мс до 4 секунд. Чим коротший інтервал, тим вища пропускна здатність, але більше енергоспоживання. Затримка підлеглого дозволяє Peripheral пропускати кілька подій з'єднання для економії енергії. Тайм-аут нагляду — максимальний час без відповіді, після якого з'єднання вважається втраченим.

Central відповідає за розрив з'єднання після завершення обміну даними. BLE-пристрої зазвичай не тримають з'єднання постійно — Central підключається, отримує дані та відключається. Це стандартний патерн для IoT-датчиків: Central сканує, знаходить датчик температури, підключається, читає значення та відключається.

ПараметрДіапазонПризначенняРекомендація
Інтервал з'єднання7,5 ms – 4 sЧастота обміну даними30–50 ms для потоків, 1–4 s для рідкісних даних
Затримка підлеглого0–499 подійПропуск подій Peripheral4–10 для економії енергії датчика
Тайм-аут нагляду100 ms – 32 sТайм-аут втрати зв'язку6–10 секунд для більшості сценаріїв
MTU23–517 байтРозмір ATT-пакетаЗапитати максимальний при підключенні

Central в iOS: Core Bluetooth

Core Bluetooth — фреймворк Apple для роботи з BLE на iOS та macOS. Клас CBCentralManager надає повний API для реалізації ролі Central: сканування, підключення, керування з'єднаннями. Робота з Central в iOS базується на делегатній моделі: CBCentralManagerDelegate отримує події зміни стану, виявлення пристроїв та результатів підключення.

Основні кроки роботи Central в iOS: ініціалізація CBCentralManager, перевірка стану Bluetooth, запуск сканування, обробка виявлених пристроїв через делегат, підключення до вибраного 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 про зміни даних. Для критичних додатків (медичні пристрої) використовуйте Фонові режими з ключем 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 секунд у додатках, які не використовують місцезнаходження. Android 12+ вимагає дозволів BLUETOOTH_SCAN, BLUETOOTH_CONNECT та ADVERTISE, а також запит цих дозволів під час виконання.

Енергоспоживання Central

Енергоспоживання Central вище, ніж у Peripheral, через необхідність постійно сканувати радіоканали. Central отримує дані по BLE-пакетах, обробляє їх, керує з'єднаннями та часто виконує обчислення на процесорі додатка. За даними Bluetooth SIG, сканування споживає від 30 мА до 100 мА залежно від режиму.

Існує кілька стратегій економії енергії для Central. Інтервальне сканування — найефективніший метод: Central сканує короткими вікнами (вікно сканування) з довгими паузами (інтервал сканування). Наприклад, при вікні сканування 30 мс та інтервалі сканування 1000 мс енергоспоживання знижується на 97% порівняно з безперервним скануванням.

Додаткова оптимізація — фільтрація за UUID. Central швидше обробляє лише релевантні рекламні пакети, ігноруючи решту. Це знижує навантаження на процесор і збільшує час автономної роботи пристрою. Також рекомендується вимикати сканування одразу після виявлення потрібного пристрою та не тримати з'єднання довше необхідного.

Часті запитання

Чи може смартфон бути одночасно Central і Peripheral?

Так, BLE підтримує подвійну роль: пристрій може одночасно бути Central для одних пристроїв і Peripheral для інших. Наприклад, смартфон читає дані з датчика (як Central) і одночасно рекламує власний сервіс (як Peripheral) для передачі даних іншому пристрою.

Скільки пристроїв може одночасно обслуговувати Central?

Специфікація BLE визначає ліміт у 7 з'єднань для одного Central. На практиці обмеження залежить від виробника чіпа: чіпи Nordic nRF52840 підтримують до 20 з'єднань, а деякі бюджетні Bluetooth-адаптери — не більше 3–4.

Чому Central не виявляє мій BLE-датчик?

Причини можуть бути різними: датчик не рекламується (не в режимі advertising), фільтр за UUID надто суворий, Bluetooth на смартфоні вимкнено, відсутні необхідні дозволи (місцезнаходження на Android) або датчик поза радіусом дії (рекомендується до 10 метрів у приміщенні).

Чи потрібно тримати з'єднання з BLE-пристроєм постійно?

Не обов'язково. Для багатьох сценаріїв використовується патерн підключити-та-читати: Central сканує, підключається, читає необхідні дані та розриває з'єднання. Постійне з'єднання потрібне лише для потокових даних (пульс, ЕКГ) або керування пристроєм у реальному часі.

Як зменшити енергоспоживання Central при скануванні?

Використовуйте інтервальне сканування з вікном сканування 30–50 мс та інтервалом сканування 500–1000 мс. Фільтруйте пристрої за UUID, щоб обробляти лише релевантні рекламні пакети. Вимикайте сканування одразу після виявлення потрібного Peripheral.

Підсумки

  • Central — активний учасник BLE-з'єднання, який ініціює сканування, підключення та керування обміном даними.
  • Процес сканування включає прийом рекламних пакетів на каналах 37, 38, 39 з можливістю фільтрації за Service UUID.
  • Після виявлення Peripheral Central встановлює з'єднання з налаштовуваними параметрами — інтервал з'єднання, затримка підлеглого, тайм-аут нагляду.
  • У мобільній розробці Central реалізується через CBCentralManager (iOS) або BluetoothLeScanner + BluetoothGatt (Android).
  • Один Central може одночасно керувати до 7 з'єднаннями у стандартній конфігурації Bluetooth.
  • Енергоспоживання Central можна оптимізувати інтервальним скануванням та фільтрацією UUID для збільшення часу автономної роботи.
  • Правильне керування життєвим циклом з'єднання — від виявлення до розриву — визначає ефективність BLE-додатка.

Ми розробимо мобільний застосунок під ключ

IT Sectr створює застосунки для iOS та Android для стартапів і бізнесу з 2017 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.

Обговорити проект

Читайте також