Advertising (reclame) — is een mechanisme in Bluetooth Low Energy waarmee een Peripheral-apparaat zijn aanwezigheid meldt door korte datapakketten te verzenden op drie speciale kanalen (37, 38, 39). Bluetooth Core Specification 5.4 (2023) definieert twee soorten reclame: connectable — het apparaat is klaar voor verbinding, en non-connectable — gebruikt door bakens (Beacon) die alleen gegevens verzenden zonder een bidirectionele verbinding tot stand te brengen. Reclameparameters — interval van 20 ms tot 10.24 s, zendvermogen van -20 tot +10 dBm en pakkettype — beinvloeden direct de detectiesnelheid van het apparaat en het energieverbruik, wat cruciaal is bij de ontwikkeling van IoT-apparaten op batterijvoeding.
Belangrijkste punten
Advertising (reclame) — is het proces van periodieke verzending van korte datapakketten waarmee een BLE-apparaat zijn aanwezigheid en beschikbaarheid aankondigt. In tegenstelling tot klassieke Bluetooth, waarbij het zoeken naar apparaten seconden duurt, maakt BLE advertising detectie van het apparaat mogelijk in milliseconden met minimaal energieverbruik.
BLE-architectuur verdeelt apparaten in twee rollen: Peripheral (adverteert) en Central (scant). Peripheral verzendt advertising-pakketten, en Central scant het kanaal en beslist over verbinding. Dit asymmetrische model is een belangrijk voordeel van BLE: het adverterende apparaat verbruikt alleen energie voor het verzenden van korte pakketten, niet voor continu luisteren naar het kanaal.
Het advertising-proces bestaat uit drie fasen: advertising event (verzenden van het pakket op alle drie kanalen), scan request/response (optionele uitwisseling met Central) en connection request (initieren van verbinding door Central). Elke fase wordt beheerd door de Bluetooth Controller op Link Layer-niveau.
BLE gebruikt 40 kanalen in de 2.4 GHz-band, waarvan 37 (2402 MHz), 38 (2426 MHz) en 39 (2480 MHz) exclusief zijn toegewezen voor advertising. Drie kanalen zijn een compromis tussen detectiebetrouwbaarheid en bandbreedte: een kanaal kan bezet zijn door Wi-Fi of andere storingen, maar het apparaat wordt gedetecteerd op de andere twee.
Kanaal 37 bevindt zich naast Wi-Fi-kanaal 1, kanaal 39 naast Wi-Fi-kanaal 6, en kanaal 38 ligt ertussenin, in de zone met minimale storing. De keuze voor drie kanalen garandeert dat het apparaat wordt gedetecteerd, zelfs in omstandigheden met dichte radiobeloopting — bijvoorbeeld in een winkelcentrum met tientallen Wi-Fi-toegangspunten.
Peripheral verzendt het advertising-pakket sequentieel op alle drie kanalen — dit wordt een advertising event genoemd. Het centrale apparaat scant een kanaal per keer en schakelt ertussen volgens het algoritme dat in de Bluetooth Controller is geimplementeerd. De kans op detectie tijdens een advertising event zonder collisies is bijna 100%.
Bluetooth Core Specification definieert verschillende soorten advertising PDU (Protocol Data Unit), elk met hun eigen doel. De belangrijkste types: ADV_IND (connectable undirected advertising) — standaard reclame met verbindingsmogelijkheid, ADV_NONCONN_IND (non-connectable undirected advertising) — alleen reclame zonder verbinding, ADV_SCAN_IND (scannable undirected advertising) — ondersteunt scan request, ADV_DIRECT_IND (directed advertising) — reclame voor een specifieke Central.
ADV_IND — het meest voorkomende type, gebruikt in de meeste BLE-apparaten. Na ontvangst van ADV_IND kan Central een connection request sturen en een verbinding tot stand brengen. ADV_NONCONN_IND wordt gebruikt door bakens (Beacon): het apparaat adverteert maar accepteert geen verbindingsverzoeken — alleen eenrichtingsdatatransmissie.
| PDU-type | Beschrijving | Verbinding | Scan response |
|---|---|---|---|
| ADV_IND | Standaard reclame | Ja | Ja |
| ADV_DIRECT_IND | Reclame voor specifieke Central | Ja | Nee |
| ADV_NONCONN_IND | Zonder verbinding (bakens) | Nee | Nee |
| ADV_SCAN_IND | Met scan-ondersteuning | Ja | Ja |
| ADV_EXT_IND | Extended advertising (BLE 5.0) | Ja | Ja |
ADV_DIRECT_IND bevat het adres van de doel-Central, waardoor snel een verbinding kan worden gemaakt zonder te wachten op scannen. Wordt gebruikt wanneer apparaten elkaar al kennen — bijvoorbeeld bij het opnieuw verbinden met een eerder gekoppelde smartphone. Dit type vermindert het energieverbruik omdat er geen reclame op alle kanalen nodig is.
Advertising interval — is de tijd tussen opeenvolgende advertising events. De specificatie staat een interval toe van 20 ms tot 10.24 s met een stap van 0.625 ms. Het werkelijke interval wordt berekend als de som van een vaste waarde en een willekeurige vertraging (0–10 ms), wat de kans op collisies tussen meerdere adverterende apparaten vermindert.
De keuze van het interval is een balans tussen detectiesnelheid en energieverbruik. Bij een interval van 20 ms wordt het apparaat gedetecteerd binnen 20–30 ms, maar de gemiddelde stroom is ongeveer 1–2 mA. Bij een interval van 1000 ms duurt detectie tot 1 seconde, maar de gemiddelde stroom daalt tot 50–100 µA. Voor de meeste IoT-apparaten is het aanbevolen interval 200–1000 ms.
Volgens Texas Instruments Application Report SWRA478 (2024) vermindert het verhogen van het advertising interval van 100 ms naar 1000 ms het energieverbruik met 90%. Als het apparaat geen onmiddellijke detectie vereist (bijvoorbeeld een temperatuursensor die eenmaal per minuut gegevens verzendt), is het optimale interval 1000–2000 ms.
Een extra parameter — advertising timeout — de maximale tijd dat het apparaat adverteert. In iOS schakelt Peripheral automatisch de reclame uit na 180 seconden in de achtergrondmodus. In Android bestaat een dergelijke beperking niet, maar fabrikanten kunnen eigen limieten toevoegen.
Scan Response — is een extra datapakket (tot 31 bytes) dat Peripheral verzendt als antwoord op een scan request van Central. Het scan request wordt door Central verzonden na ontvangst van het advertising-pakket, als het meer informatie nodig heeft voor de verbinding. Scan Response vereist geen extra reclame — het wordt alleen op verzoek verzonden, wat het kanaal spaart.
Typische gegevensverdeling: in advertising PDU (31 bytes) worden vlaggen (3 bytes), service-UUID's (2–16 bytes) en fabrikantgegevens (resterende bytes) geplaatst. In scan response wordt de volledige apparaatnaam (tot 28 bytes) en extra UUID's of TX Power Level verzonden. Deze verdeling stelt Central in staat om apparaten snel op UUID te filteren zonder scan response te lezen.
Houd bij het ontwerpen van het advertising-pakket rekening met: als alle 31 bytes bezet zijn in advertising PDU, kan Central niet bepalen of het apparaat scan response ondersteunt. Het wordt aanbevolen om ten minste 3–5 bytes vrij te laten in advertising PDU om de scan response-mogelijkheid aan te geven.
Extended Advertising (BLE 5.0) — is een uitbreiding van het reclame-mechanisme die de grootte van het advertising-pakket vergroot van 31 naar 251 bytes en nieuwe pakkettypes toevoegt. Extended Advertising ondersteunt ook coded PHY voor het vergroten van het communicatiebereik tot 1 km in open terrein en periodieke reclame (Periodic Advertising) voor synchronisatie van meerdere Central-apparaten.
Belangrijkste innovaties: ADV_EXT_IND — extended advertising PDU die tot 251 bytes aan gegevens in een enkel pakket kan verzenden. Extended Advertising gebruikt de primaire kanalen (37, 38, 39) alleen om aan te geven op welk secundair kanaal (0–36) de volledige gegevens worden verzonden. Dit vermindert de belasting van de reclamekanalen en verhoogt de totale systeembandbreedte.
Periodic Advertising — een extra mechanisme waarbij Peripheral gegevens verzendt op secundaire kanalen met een vast interval, en Central kan synchroniseren met deze sequentie. Wordt gebruikt voor diensten die regelmatige gegevensupdates vereisen — bijvoorbeeld audiotransmissie of real-time sensoruitlezingen.
| Parameter | BLE-standaard | Extended BLE 5.0 |
|---|---|---|
| Max. pakketgrootte | 31 bytes | 251 bytes |
| Kanalen | Alleen 37, 38, 39 | + secundair 0–36 |
| Bereik | Tot 100 m | Tot 1000 m (coded PHY) |
| Snelheid | 1 Mbps | 125 kbps – 2 Mbps |
| Periodiek | Nee | Ja |
iOS (Core Bluetooth) biedt CBPeripheralManager voor het beheren van reclame. Advertising-parameters worden ingesteld via het woordenboek advertisementData met de sleutels CBAdvertisementDataLocalNameKey (apparaatnaam), CBAdvertisementDataServiceUUIDsKey (service-UUID's), CBAdvertisementDataTxPowerLevelKey (vermogen). iOS beheert automatisch het advertising interval en staat handmatige instelling niet toe.
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) biedt meer gedetailleerde controle. Beschikbaar: AdvertiseSettings — instelling van modus (LOW_POWER, BALANCED, LOW_LATENCY), zendvermogen en interval; AdvertiseData — pakketgegevens. Android ondersteunt extended advertising (BLE 5.0) op compatibele apparaten, maar het aandeel van dergelijke apparaten op de markt is ongeveer 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
);
Houd bij het ontwikkelen van een cross-platform BLE-applicatie rekening met de verschillen: iOS staat geen directe controle over het advertising interval toe, maar garandeert stabiele werking op alle apparaten; Android biedt volledige controle, maar fragmentatie van versies en fabrikanten kan tot incompatibiliteit leiden. Het wordt aanbevolen om advertising te testen op echte apparaten van beide platforms.
Veelgestelde vragen
Connectable advertising (ADV_IND) stelt Central in staat om een bidirectionele verbinding met het apparaat tot stand te brengen. Non-connectable (ADV_NONCONN_IND) — alleen eenrichtingsdatatransmissie, gebruikt door bakens (Beacon) voor het uitzenden van een identifier zonder verbindingsmogelijkheid.
Het standaard advertising-pakket — 31 bytes, scan response — nog eens 31 bytes. Extended Advertising (BLE 5.0+) verhoogt de limiet naar 251 bytes door gebruik te maken van secundaire kanalen voor gegevensoverdracht.
Voor de meeste IoT-apparaten wordt 500–1000 ms aanbevolen. Als snelle detectie vereist is (bijvoorbeeld voor het verbinden van een hoofdtelefoon) — 20–50 ms. Voor sensoren met zeldzame gegevensverzending — 1000–2000 ms om energie te besparen.
Drie kanalen (37, 38, 39) zijn een compromis tussen detectiebetrouwbaarheid en bandbreedte. Een kanaal kan bezet zijn door Wi-Fi, maar het apparaat wordt gedetecteerd op de andere twee. Kanaal 38 bevindt zich in de zone met minimale storing tussen Wi-Fi-kanalen.
Advertising is de belangrijkste energieverbruiker in BLE. Bij een interval van 1000 ms is de gemiddelde stroom 50–100 µA, waardoor het apparaat een jaar kan werken op een CR2032-batterij. Bij een interval van 20 ms stijgt de stroom naar 1–2 mA, waardoor de werktijd wordt teruggebracht tot enkele weken.
Samenvatting
We ontwikkelen een mobiele applicatie turnkey
IT Sectr creëert sinds 2017 iOS- en Android-applicaties voor startups en bedrijven. We adviseren u en stellen de beste oplossing voor.
Lees ook