Bluetooth та BLE: що це таке, відмінність Classic від Low Energy та як працює

Автор: IT Sectr Опубліковано: 2026-03-24 Час читання: 12 хв

Bluetooth та Bluetooth Low Energy — стандарти бездротового зв'язку для передачі даних на короткі відстані. Bluetooth Classic (BR/EDR) забезпечує стабільний потоковий канал для аудіо та файлів, а BLE оптимізований для енергоефективної роботи з датчиками та периферією. За даними Bluetooth SIG, 2025, щорічно відвантажується понад 5 мільярдів пристроїв з підтримкою BLE — стандарт став основою IoT, носимось електроніки та мобільних аксесуарів.

Головне

  • Bluetooth Classic — стандарт BR/EDR для безперервної передачі аудіо та даних зі швидкістю до 3 Мбіт/с та енергоспоживанням 10–30 мА
  • Bluetooth Low Energy — протокол для переривчастої передачі малих обсягів даних з піковим струмом 5–15 мА та часом життя від батарейки до кількох років
  • GATT-профіль — єдина модель клієнт-сервер, що визначає, як мобільний додаток читає характеристики периферійного пристрою
  • Advertising — механізм, при якому BLE-пристрій періодично надсилає пакети-маячки для виявлення центральним пристроєм (смартфоном)
  • iOS та Android — платформи використовують різні API (Core Bluetooth та android.bluetooth), але обидві підтримують GATT — код переносимий з мінімальними правками

Що таке Bluetooth та BLE?

Bluetooth — це стандарт бездротової персональної мережі (WPAN), що працює в ISM-діапазоні 2.4 ГГц та призначений для зв'язку пристроїв на відстані до 100 метрів. Специфікація IEEE 802.15.1 визначає фізичний та MAC-рівні, а стек Bluetooth SIG — профілі верхнього рівня для конкретних сценаріїв: аудіогарнітури (HSP), передачі файлів (OPP), введення з клавіатури (HID).

Стандарт розділився на дві гілки з версії 4.0 (2010 рік): Bluetooth Classic (BR/EDR — Basic Rate / Enhanced Data Rate) та Bluetooth Low Energy (BLE, раніше Bluetooth Smart). Classic орієнтований на безперервні потоки — аудіодзвінки, музику, файли. BLE створений для застосунків, де дані передаються короткими пакетами з паузами в десятки секунд або хвилин — пульсометри, мітки, датчики температури.

За даними Bluetooth SIG (2025), 99% нових смартфонів підтримують обидві версії, а екосистема BLE налічує понад 15 типів профілів від Blood Pressure до Environmental Sensing.

Bluetooth Classic vs BLE: порівняльна характеристика

Вибір між Classic та BLE визначається сценарієм: для потокової передачі аудіо підходить тільки Classic, для опитування датчика раз на годину — тільки BLE. BR/EDR використовує 79 каналів з кроком 1 МГц та адаптивну частотну модуляцію (AFH), забезпечуючи стійкість до перешкод Wi-Fi.

ПараметрBluetooth Classic (BR/EDR)Bluetooth Low Energy (BLE)
Швидкість передачі1–3 Мбіт/с (EDR)125 кбіт/с – 2 Мбіт/с (LE 2M PHY)
Піковий струм10–30 мА5–15 мА
Час виходу в ефір~100 мс~3 мс
ТопологіяPiconet (1 master, до 7 slaves)Broadcaster / Observer / Peripheral / Central
ПрофіліHFP, A2DP, HSP, SPP, OPPGATT-основані (HRS, BLS, CTS та ін.)
Типові пристроїГарнітури, колонки, автомобільні hands-freeФітнес-браслети, мітки, пульсометри, IoT-сенсори
СумісністьНе сумісний з BLE на фізичному рівніДворежимні чіпи підтримують обидва стеки

BLE 5.x додав LE Coded PHY для збільшення дальності до 1 км (на відкритій місцевості) та LE Audio з LC3-кодеком — нова версія поступово розмиває межу між Classic та BLE для аудіосценаріїв.

Архітектура BLE: Controller, Host та Application

Стек BLE розділений на три рівні: Controller (фізичний та link-рівні), Host (L2CAP, ATT, GATT, Security Manager) та Application (реалізація профілю в додатку). Такий поділ дозволяє виробнику чіпа реалізувати Controller у firmware, а розробнику мобільного додатку — працювати тільки з GATT-абстракціями.

Link Layer (LL) керує часом ефіру: пристрій перемикається між станами Standby, Advertising, Scanning, Initiating та Connection. У Connected-стані Central та Peripheral домовляються про connection interval — частоту, з якою обмінюються пакетами даних. Типовий інтервал — 7.5–1000 мс; чим частіше обмін, тим вища пропускна здатність та більше енергоспоживання.

Security Manager (SM) реалізує шифрування AES-128 з обміном ключами через протокол pairing. Розрізняють три режими: Just Works (без введення PIN), Passkey Entry (6-значний код на екрані) та OOB (NFC або QR). Для носимих пристроїв зазвичай використовується Just Works, для медичних — OOB з додатковою верифікацією.

За даними Bluetooth Core Specification 5.4 (2023), час встановлення захищеного з'єднання в режимі LE Secure Connections не перевищує 300 мс при connection interval 30 мс.

GATT-профіль: сервіси, характеристики та дескриптори

Протокол ATT (Attribute Protocol) — базова транспортна модель, в якій сервер (периферійний пристрій) зберігає атрибути, а клієнт (смартфон) читає або записує їх. GATT (Generic Attribute Profile) надбудовує над ATT ієрархію: Service → Characteristic → Descriptor.

Кожен сервіс — це логічна група характеристик, що описує одну функцію пристрою: Heart Rate Service (UUID 0x180D) містить характеристику Heart Rate Measurement (UUID 0x2A37) з Descriptor Client Characteristic Configuration (0x2902), що керує нотифікаціями. Розробник мобільного додатку отримує список сервісів через discoverServices(), потім знаходить потрібну характеристику за UUID та підписується на сповіщення.

BLE використовує 16-бітні UUID для стандартизованих сервісів Bluetooth SIG та 128-бітні UUID для кастомних сервісів виробника. Наприклад, чохол-трекер може визначити сервіс A000-… з характеристикою для передачі рівня заряду своєї батареї.

Приклад роботи з GATT на Kotlin (Android)

kotlin
private val gattCallback = object BluetoothGattCallback() {
    override fun onServicesDiscovered(
        gatt: BluetoothGatt, status: Int
    ) {
        val service = gatt.getService(UUID.fromString("0000180d-0000-1000-8000-00805f9b34fb"))
        val char = service?.getCharacteristic(
            UUID.fromString("00002a37-0000-1000-8000-00805f9b34fb")
        )
        gatt.setCharacteristicNotification(char, true)
    }

    override fun onCharacteristicChanged(
        gatt: BluetoothGatt, char: BluetoothGattCharacteristic
    ) {
        val heartRate = char.getIntValue(BluetoothGattCharacteristic.FORMAT_UINT8, 1)
        updateUi("Пульс: $heartRate уд/мин")
    }
}

У прикладі додаток знаходить сервіс Heart Rate за стандартним UUID Bluetooth SIG, отримує характеристику вимірювання пульсу та підписується на її нотифікації — при кожній зміні пульсу периферійний пристрій надсилає дані без явного запиту від Central.

Advertising, сканування та встановлення з'єднання

Advertising — ключовий механізм BLE, при якому Peripheral-пристрій періодично надсилає широкомовні пакети (advertising PDUs) на трьох первинних каналах (37, 38, 39). Центральний пристрій сканує ці канали, отримує advertising-дані та може ініціювати з'єднання.

Advertising-пакет містить до 31 байта корисного навантаження: flags, TX power level, local name, UUID сервісів, manufacturer-specific data. Цього достатньо для передачі показників датчика без встановлення з'єднання — режим Connectionless (Broadcaster-тип). Для постійної передачі даних (наприклад, температури раз на хвилину) використовується з'єднання з connection interval до 1000 мс.

На мобільній платформі сканування запускається через startScan() (Android) або scanForPeripherals() (iOS). Фільтрація за UUID сервісу дозволяє не витрачати енергію на обробку всіх видимих пристроїв — додаток отримує callback тільки для цікавих міток або датчиків.

Приклад сканування BLE-пристроїв на Swift (iOS)

swift
import CoreBluetooth

class ScannerViewController: UIViewController {
    private var centralManager: CBCentralManager!

    override func viewDidLoad() {
        centralManager = CBCentralManager(
            delegate: self, queue: nil
        )
    }

    func centralManagerDidUpdateState(central: CBCentralManager) {
        if central.state == .poweredOn {
            centralManager.scanForPeripherals(
                withServices: nil, options: nil
            )
        }
    }

    func centralManager(
        central: CBCentralManager,
        didDiscover peripheral: CBPeripheral,
        advertisementData: [String : Any],
        rssi RSSI: NSNumber
    ) {
        if let name = advertisementData[CBAdvertisementDataLocalNameKey] {
            print("Найдено устройство: \(name)")
        }
    }
}

Після виявлення пристрою Central викликає connect(), передаючи об'єкт CBPeripheral. Connection-параметри (interval, latency, supervision timeout) узгоджуються на рівні Link Layer — розробник не керує ними безпосередньо, але може впливати через requestConnectionPriority на Android.

Bluetooth LE в мобільній розробці: Core Bluetooth та android.bluetooth

Обидві мобільні платформи надають нативні API для роботи з BLE. Core Bluetooth (iOS) використовує делегатний підхід: центральний менеджер ініціює операції, а периферійний об'єкт повідомляє про результати через делегатні методи. android.bluetooth (Android) побудований на callback-інтерфейсах та підтримує паралельні GATT-операції з кількома пристроями.

Ключові відмінності між платформами:

  • iOS — підтримує до 7 одночасних з'єднань; фоновий режим BLE вимагає запису UIBackgroundModes = bluetooth-central; після виходу з фону система може відкласти callback-и на кілька хвилин
  • Android — не має фіксованого ліміту з'єднань (обмеження по пам'яті); вимагає дозволів BLUETOOTH_SCAN та BLUETOOTH_CONNECT (Android 12+); foreground service необхідний для надійного сканування в фоні
  • Flutter — пакет flutter_blue_plus абстрагує платформенні API єдиним Dart-інтерфейсом: код для сканування та GATT-операцій ідентичний на обох платформах

За даними тестів Bluetooth SIG (2024), час з'єднання BLE смартфона з фітнес-браслетом становить в середньому 150–300 мс на Android та 100–250 мс на iOS — різниця обумовлена політиками управління радіочастотним модулем.

Приклад підключення BLE на Dart (Flutter)

dart
import 'package:flutter_blue_plus/flutter_blue_plus.dart';

class BleService {
  final FlutterBluePlus fbp = FlutterBluePlus();

  Future<void> scanAndConnect(String deviceName) async {
    await fbp.startScan(timeout: Duration(seconds: 15));

    await for (final result in fbp.scanResults) {
      if (result.device.advName == deviceName) {
        await fbp.stopScan();
        await result.device.connect();
        break;
      }
    }
  }
}

Flutter-розробник отримує єдиний API-інтерфейс, під капотом якого flutter_blue_plus транслює виклики в нативні android.bluetooth або Core Bluetooth. Такий підхід скорочує час розробки додатку для роботи з BLE-периферією на обох платформах.

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

У чому різниця між Bluetooth Classic та BLE?

Bluetooth Classic (BR/EDR) призначений для безперервної потокової передачі — аудіодзвінки, музика, передача файлів. BLE оптимізований для коротких пакетів даних з мінімальним енергоспоживанням — датчики, мітки, фітнес-трекери. Classic споживає 10–30 мА, BLE — 5–15 мА в піку.

Чи сумісні Bluetooth Classic та BLE між собою?

На фізичному рівні вони несумісні — різна модуляція та канальна карта. Однак більшість сучасних чіпів є дворежимними (dual-mode) та реалізують обидва стеки. Смартфон з дворежимним чипом може одночасно спілкуватися з Classic-гарнітурою та BLE-трекером.

Що таке connection interval в BLE?

Connection interval — проміжок часу між двома пакетами даних у встановленому з'єднанні. Значення варіюється від 7.5 мс до 4 секунд. Чим менший інтервал, тим вища пропускна здатність та більше енергоспоживання. Для датчика температури раз на хвилину використовується інтервал 1000 мс.

Як працює pairing в BLE?

Pairing — процес обміну ключами шифрування між Central та Peripheral. BLE підтримує три методи: Just Works (без підтвердження), Passkey Entry (введення PIN на екрані) та OOB (обмін через NFC або QR). Після pairing пристрої зберігають ключі (bonding) та при повторному з'єднанні не запитують повторну аутентифікацію.

Які BLE профілі використовуються в мобільних додатках?

Найпоширеніші: Heart Rate Profile (0x180D) для пульсометрів, Blood Pressure Profile (0x1810) для тонометрів, Environmental Sensing (0x181A) для датчиків температури та вологості, Battery Service (0x180F) для рівня заряду, Device Information (0x180A) для моделі та серійного номера.

Підсумки

  • Bluetooth — це стандарт WPAN в діапазоні 2.4 ГГц, розділений на Classic (BR/EDR) та Low Energy (BLE) з версії 4.0
  • Bluetooth Classic забезпечує швидкість до 3 Мбіт/с та застосовується для аудіогарнітур та передачі файлів
  • BLE оптимізований для малого енергоспоживання (5–15 мА) та використовується в IoT, фітнес-браслетах та датчиках
  • GATT-профіль організує дані в ієрархію Service → Characteristic → Descriptor з обміном через протокол ATT
  • Advertising дозволяє периферійним пристроям передавати дані без встановлення з'єднання на трьох первинних каналах
  • iOS (Core Bluetooth) та Android (android.bluetooth) надають нативні API з різними підходами до фонової роботи та дозволів
  • Flutter (flutter_blue_plus) об'єднує платформенні API єдиним Dart-інтерфейсом для крос-платформенної розробки

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

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

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

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