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-based (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 года. Мы проконсультируем вас и предложим наилучшее решение.

Обсудить проект

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