Bluetooth и Bluetooth Low Energy су стандарди бежичне комуникације за пренос података на кратким растојањима. Bluetooth Classic (BR/EDR) обезбеђује стабилан проточни канал за аудио и датотеке, а BLE је оптимизован за енергетски ефикасан рад са сензорима и периферијом. Према подацима Bluetooth SIG, 2025, годишње се испоручи више од 5 милијарди уређаја са подршком за BLE — стандард је постао основа IoT, носиве електронике и мобилних додатака.
Главно
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.
Избор између 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 mA | 5–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 (L2CAP, ATT, GATT, Security Manager) и Application (имплементација профила у апликацији). Ово раздвајање омогућава произвођачу чипа да имплементира Controller у фирмверу, а програмеру мобилне апликације да ради само са 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 интервалу од 30 ms.
Протокол 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-… са карактеристиком за пренос нивоа напуњености своје батерије.
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 — кључни механизам BLE-а при којем Peripheral уређај периодично шаље емисионе пакете (advertising PDUs) на три примарна канала (37, 38, 39). Централни уређај скенира ове канале, прима advertising податке и може иницирати везу.
Advertising пакет садржи до 31 бајт корисног терета: заставице, TX power level, локално име, UUID сервиса, податке произвођача. Ово је довољно за пренос очитавања сензора без успостављања везе — Connectionless режим (Broadcaster тип). За континуирани пренос података (нпр. температуре једном у минуту) користи се веза са connection интервалом до 1000 ms.
На мобилној платформи, скенирање се покреће преко startScan() (Android) или scanForPeripherals() (iOS). Филтрирање по UUID-у сервиса штеди енергију — апликација добија callback само за интересантне ознаке или сензоре.
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-у.
Обе мобилне платформе пружају нативне API-је за рад са BLE. Core Bluetooth (iOS) користи делегатски приступ: централни менаџер покреће операције, а периферни објекат извештава о резултатима преко делегатских метода. android.bluetooth (Android) је изграђен на callback интерфејсима и подржава паралелне GATT операције са више уређаја.
Кључне разлике између платформи:
Према Bluetooth SIG тестовима (2024), време BLE повезивања паметног телефона са фитнес наруквицом је у просеку 150–300 ms на Android-у и 100–250 ms на iOS-у — разлика је последица политика управљања радио модулом.
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 (BR/EDR) је намењен непрекидном проточном преносу — аудио позиви, музика, пренос датотека. BLE је оптимизован за кратке пакете података са минималном потрошњом — сензори, ознаке, фитнес трацкери. Classic троши 10–30 mA, BLE 5–15 mA у вршном режиму.
На физичком нивоу нису компатибилни — различита модулација и мапа канала. Међутим, већина савремених чипова су дворежимски (dual-mode) и имплементирају оба стека. Паметни телефон са дворежимским чипом може истовремено да комуницира са Classic слушалицом и BLE трацкером.
Connection interval је временски размак између два пакета података у успостављеној вези. Вредност варира од 7,5 ms до 4 секунде. Што је мањи интервал, већи су пропусни опсег и потрошња енергије. За сензор температуре једном у минуту користи се интервал од 1000 ms.
Pairing је процес размене кључева за шифровање између Central и Peripheral уређаја. BLE подржава три метода: Just Works (без потврде), Passkey Entry (унос PIN-а на екрану) и OOB (размена преко NFC или QR). Након pairing-а, уређаји чувају кључеве (bonding) и при поновном повезивању не захтевају поновну аутентификацију.
Најчешћи: Heart Rate Profile (0x180D) за пулсометре, Blood Pressure Profile (0x1810) за тонометре, Environmental Sensing (0x181A) за сензоре температуре и влажности, Battery Service (0x180F) за ниво напуњености, Device Information (0x180A) за модел и серијски број.
Закључци
Развићемо мобилну апликацију под кључ
IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.
Прочитајте такође