Advertising (реклама) — то je механизам у Bluetooth Low Energy помоћу кога уређај Peripheral објављује своје присуство, шаљући кратке пакете података на три додијељена канала (37, 38, 39). Bluetooth Core Specification 5.4 (2023) дефинише два типа рекламе: connectable — уређај је спреман за повезивање, и non-connectable — користе га маяци (Beacon) који само преносе податке без успостављања двосмјерног повезивања. Параметри рекламе — интервал од 20 ms до 10.24 s, снага предајника од -20 до +10 dBm и тип пакета — директно утичу на брзину откривања уређаја и његову потрошњу енергије, што је критично важно при развоју IoT уређаја са батеријским напајањем.
Главно
Advertising (реклама) — то je процес периодичног слања кратких пакета података путем којих BLE уређај објављује своје присуство и доступност. За разлику од класичног Bluetooth-а, гдје претрага уређаја траје секундама, BLE advertising омогућава откривање уређаја за милисекунде, уз минималну потрошњу енергије.
BLE архитектура дијели уређаје на двије улоге: Peripheral (оглашава се) и Central (скенира). Peripheral шаље advertising пакете, а Central скенира канал и доноси одлуку о повезивању. Овај асиметрични модел је кључна предност BLE-а: уређај који се оглашава троши енергију само на слање кратких пакета, а не на стално ослушкивање канала.
Процес advertising-а састоји се од три фазе: advertising event (слање пакета на сва три канала), scan request/response (опционална размјена са Central-ом) и connection request (иницирање повезивања од стране Central-а). Сваку фазу управља Bluetooth Controller на нивоу Link Layer-а.
BLE користи 40 канала у опсегу 2.4 GHz, од којих су 37 (2402 MHz), 38 (2426 MHz) и 39 (2480 MHz) додијељени искључиво за advertising. Три канала су компромис измјеђу поузданости откривања и пропусног опсега: један канал може бити заузет Wi-Fi-јем или другим сметњама, али уређај ће бити откривен на друга два.
Канал 37 се налази поред Wi-Fi канала 1, канал 39 — поред Wi-Fi канала 6, а канал 38 се налази измјеђу њих, у зони минималних сметњи. Избор три канала гарантује да ће уређај бити откривен чак и у условима густог радио саобраћаја — на примјер, у тржном центру са десетинама Wi-Fi приступних тачака.
Peripheral шаље advertising пакет секвенцијално на сва три канала — то се назива advertising event. Централни уређај скенира по један канал, пребацујући се измјеђу њих према алгоритму имплементираном у Bluetooth Controller-у. Вјероватноћа откривања током једног advertising event-а у одсуству колизија је близу 100%.
Bluetooth Core Specification дефинише неколико типова advertising PDU (Protocol Data Unit), сваки са својом намјеном. Главни типови: ADV_IND (connectable undirected advertising) — стандардна реклама са могућношћу повезивања, ADV_NONCONN_IND (non-connectable undirected advertising) — само реклама без повезивања, ADV_SCAN_IND (scannable undirected advertising) — подржава scan request, ADV_DIRECT_IND (directed advertising) — реклама за одређени Central.
ADV_IND — најчешћи тип, користи се у већини BLE уређаја. По пријему ADV_IND, Central може послати connection request и успоставити везу. ADV_NONCONN_IND користе маяци (Beacon): уређај се оглашава, али не прихвата захтјеве за повезивање — само једносмјерни пренос података.
| Тип PDU | Опис | Повезивање | Scan response |
|---|---|---|---|
| ADV_IND | Стандардна реклама | Да | Да |
| ADV_DIRECT_IND | Реклама за одређени Central | Да | Не |
| ADV_NONCONN_IND | Без повезивања (маяци) | Не | Не |
| ADV_SCAN_IND | Са подршком за скенирање | Да | Да |
| ADV_EXT_IND | Extended advertising (BLE 5.0) | Да | Да |
ADV_DIRECT_IND садржи адресу циљног Central-а, што омогућава брзо успостављање везе без чекања на скенирање. Користи се када уређаји већ „знају” један другог — на примјер, након поновног повезивања са претходно упареним паметним телефоном. Овај тип смањује потрошњу енергије јер не захтијева рекламу на свим каналима.
Advertising interval — то je вријеме измјеђу узастопних advertising event-ова. Спецификација дозвољава интервал од 20 ms до 10.24 s са кораком од 0.625 ms. Стварни интервал се израчунава као збир фиксне вриједности и случајног кашњења (0–10 ms), што смањује вјероватноћу колизија измјеђу више уређаја који се оглашавају.
Избор интервала је баланс измјеђу брзине откривања и потрошње енергије. При интервалу од 20 ms, уређај ће бити откривен за 20–30 ms, али просјечна струја ће бити око 1–2 mA. При интервалу од 1000 ms — откривање ће трајати до 1 секунде, али просјечна струја ће пасти на 50–100 µA. За већину IoT уређаја препоручени интервал је 200–1000 ms.
Према Texas Instruments Application Report SWRA478 (2024), повећање advertising интервала са 100 ms на 1000 ms смањује потрошњу енергије за 90%. Ако уређај не захтијева тренутно откривање (на примјер, сензор температуре који шаље податке једном у минуту), оптимални интервал је 1000–2000 ms.
Додатни параметар — advertising timeout — максимално вријеме током којег се уређај оглашава. У iOS-у, Peripheral аутоматски искључује рекламу након 180 секунди у позадинском режиму. На Android-у такво ограничење не постоји, али произвођачи могу додати сопствена ограничења.
Scan Response — то je додатни пакет података (до 31 бајта) који Peripheral шаље као одговор на scan request од Central-а. Scan request шаље Central након пријема advertising пакета, ако му је потребно више информација прије повезивања. Scan Response не захтијева додатну рекламу — шаље се само на захтјев, штедећи канал.
Типична расподјела података: у advertising PDU (31 бајт) смјештају се заставице (3 бајта), UUID-ови услуга (2–16 бајтова) и подаци произвођача (преостали бајтови). У scan response-у преноси се пуно име уређаја (до 28 бајтова) и додатни UUID-ови или TX Power Level. Ова подјела омогућава Central-у да брзо филтрира уређаје по UUID-у без читања scan response-а.
При пројектовању advertising пакета узмите у обзир: ако је свих 31 бајтова заузето у advertising PDU-у, Central неће моћи да утврди да ли уређај подржава scan response. Препоручује се оставити најмање 3–5 бајтова слободних у advertising PDU-у за означавање могућности scan response-а.
Extended Advertising (BLE 5.0) — то je проширење механизма рекламе које повећава величину advertising пакета са 31 на 251 бајт и додаје нове типове пакета. Extended Advertising такође подржава coded PHY за повећање домета комуникације до 1 km на отвореном простору и периодичну рекламу (Periodic Advertising) за синхронизацију више Central-а.
Главне новине: ADV_EXT_IND — extended advertising PDU који може да преноси до 251 бајта података у једном пакету. Extended Advertising користи примарне канале (37, 38, 39) само за означавање на којем секундарном каналу (0–36) се преносе комплетни подаци. Ово смањује оптерећење рекламних канала и повећава укупан пропусни опсег система.
Periodic Advertising — додатни механизам при којем Peripheral шаље податке на секундарним каналима са фиксним интервалом, а Central се може синхронизовати са овом секвенцом. Користи се за услуге које захтијевају редовно ажурирање података — на примјер, пренос звука или очитавања сензора у реалном времену.
| Параметар | Стандардни BLE | Extended BLE 5.0 |
|---|---|---|
| Макс. величина пакета | 31 бајт | 251 бајт |
| Канали | Само 37, 38, 39 | + секундарни 0–36 |
| Домет | До 100 m | До 1000 m (coded PHY) |
| Брзина | 1 Mbps | 125 kbps – 2 Mbps |
| Periodic | Не | Да |
iOS (Core Bluetooth) пружа CBPeripheralManager за управљање рекламом. Параметри advertising-а се постављају путем рјечника advertisementData са кључевима CBAdvertisementDataLocalNameKey (име уређаја), CBAdvertisementDataServiceUUIDsKey (UUID-ови услуга), CBAdvertisementDataTxPowerLevelKey (снага). iOS аутоматски управља advertising интервалом и не дозвољава ручно подешавање.
import CoreBluetooth
class AdvertiserManager: NSObject, CBPeripheralManagerDelegate {
private var peripheralManager: CBPeripheralManager!
func startBLEAdvertising() {
let data: [String: Any] = [
CBAdvertisementDataLocalNameKey: "BLE Beacon",
CBAdvertisementDataServiceUUIDsKey: [
CBUUID("180F")
],
CBAdvertisementDataIsConnectable: true
]
peripheralManager.startAdvertising(data)
}
}
Android (BluetoothLeAdvertiser) пружа детаљнију контролу. Доступни су: AdvertiseSettings — подешавање режима (LOW_POWER, BALANCED, LOW_LATENCY), снаге предајника и интервала; AdvertiseData — подаци пакета. Android подржава extended advertising (BLE 5.0) на компатибилним уређајима, али је удио таквих уређаја на тржишту око 30–40%.
BluetoothLeAdvertiser advertiser =
BluetoothAdapter.getDefaultAdapter()
.getBluetoothLeAdvertiser();
AdvertiseSettings settings = new AdvertiseSettings.Builder()
.setAdvertiseMode(
AdvertiseSettings.ADVERTISE_MODE_LOW_POWER
)
.setTxPowerLevel(
AdvertiseSettings.ADVERTISE_TX_POWER_MEDIUM
)
.build();
AdvertiseData data = new AdvertiseData.Builder()
.setIncludeDeviceName(true)
.addServiceUuid(new ParcelUuid(
UUID.fromString(
"0000180F-0000-1000-8000-00805F9B34FB"
)
))
.build();
advertiser.startAdvertising(
settings, data, advertiseCallback
);
При развоју међуплатформске BLE апликације узмите у обзир разлике: iOS не дозвољава директно управљање advertising интервалом, али гарантује стабилан рад на свим уређајима; Android пружа потпуну контролу, али фрагментација верзија и произвођача може довести до некомпатибилности. Препоручује се тестирање advertising-а на стварним уређајима обије платформе.
Често постављана питања
Connectable advertising (ADV_IND) омогућава Central-у да успостави двосмјерну везу са уређајем. Non-connectable (ADV_NONCONN_IND) — само једносмјерни пренос података, користе га маяци (Beacon) за емитовање идентификатора без могућности повезивања.
Стандардни advertising пакет — 31 бајт, scan response — још 31 бајт. Extended Advertising (BLE 5.0+) повећава лимит на 251 бајт коришћењем секундарних канала за пренос података.
За већину IoT уређаја препоручује се 500–1000 ms. Ако је потребно брзо откривање (на примјер, за повезивање слушалица) — 20–50 ms. За сензоре са ријетким слањем података — 1000–2000 ms ради уштеде енергије.
Три канала (37, 38, 39) су компромис измјеђу поузданости откривања и пропусног опсега. Један канал може бити заузет Wi-Fi-јем, али уређај ће бити откривен на друга два. Канал 38 се налази у зони минималних сметњи измјеђу Wi-Fi канала.
Advertising је главни потрошач енергије у BLE-у. При интервалу 1000 ms просјечна струја износи 50–100 µA, што омогућава уређају да ради годину дана на CR2032 батерији. При интервалу од 20 ms струја расте на 1–2 mA, смањујући вријеме рада на неколико седмица.
Закључак
Развићемо мобилну апликацију под кључ
IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.
Прочитајте такође