Advertising в BLE: какво е, формати на пакети и механизми на рекламата

Автор: IT Sectr Публикувано: 2026-07-15 Време за четене: 11 мин

Advertising (реклама) — е механизъм в 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 — основният механизъм за откриване на BLE устройства, работещ на три отделни канала 37, 38 и 39.
  • Стандартният рекламен пакет е ограничен до 31 байта данни, extended advertising (BLE 5.0) увеличава лимита до 251 байта.
  • Connectable advertising позволява на Central да се свърже с устройството, non-connectable — само еднопосочно предаване (маяци).
  • Интервалът на реклама влияе върху консумацията на енергия: при интервал 1000 ms средният ток е 10 пъти по-нисък, отколкото при 100 ms.
  • Scan response позволява предаване на допълнителни 31 байта данни в отговор на запитване от Central.

Какво е Advertising в BLE?

Advertising (реклама) — е процесът на периодично изпращане на кратки пакети данни, чрез който 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_INDExtended advertising (BLE 5.0)ДаДа

ADV_DIRECT_IND съдържа адреса на целевия Central, което позволява бързо установяване на връзка без изчакване на сканиране. Използва се, когато устройствата вече се „познават" — например след повторно свързване към предварително сдвоен смартфон. Този тип намалява консумацията на енергия, тъй като не изисква реклама на всички канали.

Интервал на реклама и консумация на енергия

Advertising interval — е времето между последователните advertising events. Спецификацията допуска интервал от 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 interval от 100 ms на 1000 ms намалява консумацията на енергия с 90%. Ако устройството не изисква незабавно откриване (например сензор за температура, който изпраща данни веднъж на минута), оптималният интервал е 1000–2000 ms.

Допълнителен параметър — advertising timeout — максималното време, през което устройството рекламира. В iOS, Peripheral автоматично изключва рекламата след 180 секунди във фонов режим. В Android няма такова ограничение, но производителите могат да добавят свои лимити.

Scan Response: допълнителни данни

Scan Response — е допълнителен пакет данни (до 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

Extended Advertising (BLE 5.0) — е разширение на механизма за реклама, което увеличава размера на 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 Mbps125 kbps – 2 Mbps
PeriodicНеДа

Настройка на реклама в iOS и Android

iOS (Core Bluetooth) предоставя CBPeripheralManager за управление на рекламата. Параметрите на advertising се задават чрез речника advertisementData с ключове CBAdvertisementDataLocalNameKey (име на устройството), CBAdvertisementDataServiceUUIDsKey (UUID на услуги), CBAdvertisementDataTxPowerLevelKey (мощност). iOS автоматично управлява advertising interval и не позволява ръчно задаване.

swift
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%.

java
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 interval, но гарантира стабилна работа на всички устройства; Android предоставя пълен контрол, но фрагментацията на версии и производители може да доведе до несъвместимост. Препоръчва се тестване на advertising на реални устройства от двете платформи.

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

Каква е разликата между connectable и non-connectable advertising?

Connectable advertising (ADV_IND) позволява на Central да установи двупосочна връзка с устройството. Non-connectable (ADV_NONCONN_IND) — само еднопосочно предаване на данни, използвано от маяци (Beacon) за излъчване на идентификатор без възможност за свързване.

Колко байта могат да се предадат в рекламен пакет?

Стандартният advertising пакет — 31 байта, scan response — още 31 байта. Extended Advertising (BLE 5.0+) увеличава лимита до 251 байта чрез използване на вторични канали за предаване на данни.

Кой advertising interval да избера за IoT устройство?

За повечето IoT устройства се препоръчва 500–1000 ms. Ако е необходимо бързо откриване (например за свързване на слушалки) — 20–50 ms. За сензори с рядко изпращане на данни — 1000–2000 ms за пестене на енергия.

Защо BLE използва три рекламни канала?

Три канала (37, 38, 39) са компромис между надеждност на откриване и честотна лента. Един канал може да бъде зает от Wi-Fi, но устройството ще бъде открито на другите два. Канал 38 се намира в зоната на минимални смущения между Wi-Fi каналите.

Как advertising влияе на живота на батерията?

Advertising е основният консуматор на енергия в BLE. При интервал 1000 ms средният ток е 50–100 µA, което позволява на устройството да работи една година на батерия CR2032. При интервал 20 ms токът нараства до 1–2 mA, намалявайки времето на работа до няколко седмици.

Обобщение

  • Advertising — механизъм за откриване на BLE устройства, работещ на три канала (37, 38, 39) с размер на пакета до 31 байта.
  • Съществуват пет типа advertising PDU: ADV_IND, ADV_DIRECT_IND, ADV_NONCONN_IND, ADV_SCAN_IND и ADV_EXT_IND за BLE 5.0.
  • Интервалът на реклама варира от 20 ms до 10.24 s и пряко влияе върху скоростта на откриване и консумацията на енергия.
  • Scan Response предоставя допълнителни 31 байта данни при поискване от Central без увеличаване на консумацията на енергия на Peripheral.
  • Extended Advertising (BLE 5.0) увеличава пакета до 251 байта и поддържа обхват до 1 km чрез coded PHY.
  • В iOS advertising се управлява чрез CBPeripheralManager, в Android — чрез BluetoothLeAdvertiser с подробни настройки.
  • Правилният избор на advertising interval и тип пакет определя енергийната ефективност и времето за автономна работа на BLE устройството.

Ще разработим мобилно приложение под ключ

IT Sectr създава iOS и Android приложения за стартъпи и бизнеси от 2017 г. Ще ви консултираме и ще предложим най-доброто решение.

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

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