Bluetooth и BLE: какво е това, разликата между Classic и Low Energy и как работи

Автор: IT Sectr Публикувано: 2026-03-24 Време за четене: 12 мин

undefined

Главно

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

Какво са Bluetooth и BLE?

Bluetooth — е стандарт за безжична персонална мрежа (WPAN), работещ в ISM лента 2,4 GHz и предназначен за комуникация между устройства на разстояние до 100 метра. Спецификацията IEEE 802.15.1 определя физичното и MAC ниво, а стекът на Bluetooth SIG определя профилите на по-високо ниво за конкретни сценарии: аудио слушалки (HSP), пренос на файлове (OPP), клавиатурен вход (HID).

Стандартът се раздели на два клона от версия 4.0 (2010 г.): Bluetooth Classic (BR/EDR) и 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 MHz и адаптивна честотна модулация (AFH), осигуряваща устойчивост на смътките от Wi-Fi.

ПараметърBluetooth Classic (BR/EDR)Bluetooth Low Energy (BLE)
Скорост на пренос1–3 Mbit/s (EDR)125 kbit/s – 2 Mbit/s (LE 2M PHY)
Пиков ток10–30 mA5–15 mA
Време на излъчване~100 ms~3 ms
ТопологияPiconet (1 master, до 7 slave)Broadcaster / Observer / Peripheral / Central
ПрофилиHFP, A2DP, HSP, SPP, OPPБазирани на GATT (HRS, BLS, CTS и др.)
Типични устройстваСлушалки, висящи, автомобилни hands-free комплектиФитнес гривни, етикети, пулсометри, IoT сензори
СъвместимостНе е съвместим с BLE на физично нивоДвумодовите чипове подкрепят и двата стека

BLE 5.x добави LE Coded PHY за увеличаване на обхвата до 1 km (на открито) и LE Audio с кодек LC3 — новата версия постепенно залича границата между Classic и BLE в аудио сценариите.

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

Стекът на BLE е разделен на три нива: Controller (физично и линково ниво), 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 ms; колкото по-често е обмяната, толкова по-голяма е пропускната способност и консумацията на енергия.

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 ms при connection interval 30 ms.

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 байта полезно товар: флагове, TX power level, локално име, UUID на услугите, данни, специфични за производителя. Това е достатъчно за предаване на показанията на сензорите без установяване на връзка — режим Connectionless (тип Broadcaster). За непрекъснато предаване на данни (напр. температура ведъж минута) се използва връзка с connection interval до 1000 ms.

На мобилната платформа сканирането се запуска чрез 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 обект. Параметрите на връзката (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 ms на Android и 100–250 ms на 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 периферия и на двете платформи.

Често задавани въпроси

undefined

Bluetooth Classic (BR/EDR) е предназначен за непрекъснато потоково предаване — аудио обаждания, музика, пренос на файлове. BLE е оптимизиран за къси пакети данни с минимална консумация на енергия — сензори, етикети, фитнес трекери. Classic консумира 10–30 mA, BLE 5–15 mA при пик.

undefined

На физично ниво те не са съвместими — различна модулация и канална карта. Повечето от съвременните чипове обаче са двумодови (dual-mode) и изпълняват и двата стека. Смартфон с двумодов чип може едновременно да комуникира с Classic слушалки и BLE трекер.

undefined

Connection interval е времевият интервал между два пакета данни в установена връзка. Стойността варира от 7,5 ms до 4 секунди. Колкото по-малък е интервалът, толкова по-голяма е пропускната способност и консумацията на енергия. За температурен сензор ведъж минута се използва интервал от 1000 ms.

undefined

Pairing е процесът на обмяна на ключове за криптиране между Central и Peripheral. BLE подкрепя три метода: Just Works (без потвърждение), Passkey Entry (въвеждане на PIN на екрана) и OOB (обмяна чрез NFC или QR). След pairing, устройствата запазват ключовете (bonding) и при повторно свързване не изискват повторна аутентикация.

undefined

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

Заключение

  • Bluetooth — WPAN стандарт в лента 2,4 GHz, разделен на Classic (BR/EDR) и Low Energy (BLE) от версия 4.0
  • Bluetooth Classic осигурява скорост до 3 Mbit/s и се използва за аудио слушалки и пренос на файлове
  • BLE е оптимизиран за ниска консумация (5–15 mA) и се използва в 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 г. Ще ви консултираме и ще предложим най-доброто решение.

Обсъдете проекта

Прочетете също