Advertising em BLE: o que é, formatos de pacotes e mecanismos de publicidade

Autor: IT Sectr Publicado: 2026-07-15 Tempo de leitura: 11 min

Advertising (publicidade) é um mecanismo em Bluetooth Low Energy através do qual um dispositivo Peripheral anuncia sua presença transmitindo pacotes curtos de dados em três canais dedicados (37, 38, 39). A Bluetooth Core Specification 5.4 (2023) define dois tipos de publicidade: connectable — o dispositivo está pronto para conexão, e non-connectable — usado por balizas (Beacon) que apenas transmitem dados sem estabelecer comunicação bidirecional. Os parâmetros de publicidade — intervalo de 20 ms a 10.24 s, potência do transmissor de -20 a +10 dBm e tipo de pacote — afetam diretamente a velocidade de deteção do dispositivo e seu consumo de energia, o que é crítico no desenvolvimento de dispositivos IoT alimentados por bateria.

Principais conclusões

  • Advertising é o mecanismo principal de deteção de dispositivos BLE que opera em três canais dedicados 37, 38 e 39.
  • O pacote de publicidade padrão está limitado a 31 bytes de dados; extended advertising (BLE 5.0) aumenta o limite para 251 bytes.
  • Connectable advertising permite que o Central conecte ao dispositivo; non-connectable é apenas transmissão unidirecional (balizas).
  • O intervalo de publicidade afeta o consumo de energia: com intervalo de 1000 ms, a corrente média é 10 vezes menor do que com 100 ms.
  • Scan response permite transmitir 31 bytes adicionais de dados em resposta a uma solicitação do Central.

O que é Advertising em BLE?

Advertising (publicidade) é o processo de transmissão periódica de pacotes curtos de dados através do qual um dispositivo BLE anuncia sua presença e disponibilidade. Ao contrário do Bluetooth clássico, onde a deteção de dispositivos leva segundos, o advertising BLE permite detetar um dispositivo em milissegundos consumindo energia mínima.

A arquitetura BLE divide os dispositivos em duas funções: Peripheral (anuncia) e Central (escaneia). O Peripheral envia pacotes de advertising, enquanto o Central escaneia o ar e decide se conecta. Este modelo assimétrico é uma vantagem chave do BLE: o dispositivo anunciante gasta energia apenas no envio de pacotes curtos, não em ouvir o ar constantemente.

O processo de advertising consiste em três etapas: advertising event (envio do pacote em todos os três canais), scan request/response (troca opcional com o Central) e connection request (iniciação da conexão pelo Central). Cada etapa é gerenciada pelo Bluetooth Controller no nível da Link Layer.

Canais de publicidade e sua função

BLE usa 40 canais na banda de 2,4 GHz, dos quais 37 (2402 MHz), 38 (2426 MHz) e 39 (2480 MHz) são dedicados exclusivamente à publicidade. Três canais representam um compromisso entre fiabilidade de deteção e capacidade de throughput: um canal pode estar ocupado por Wi-Fi ou outras interferências, mas o dispositivo será detetado nos outros dois.

O canal 37 está perto do canal Wi-Fi 1, o canal 39 está perto do canal Wi-Fi 6, e o canal 38 está entre eles, na zona de interferência mínima. A escolha de três canais garante que o dispositivo seja detetado mesmo em ambientes de rádio densos — por exemplo, num centro comercial com dezenas de pontos de acesso Wi-Fi.

O Peripheral envia o pacote de advertising sequencialmente em todos os três canais — isto é chamado de advertising event. O dispositivo central escaneia um canal de cada vez, alternando entre eles de acordo com um algoritmo implementado no Bluetooth Controller. A probabilidade de deteção dentro de um advertising event na ausência de colisões é próxima de 100%.

Tipos de pacotes de publicidade

Bluetooth Core Specification define vários tipos de PDU de advertising (Protocol Data Unit), cada um com seu propósito. Os principais tipos são: ADV_IND (connectable undirected advertising) — publicidade padrão com capacidade de conexão, ADV_NONCONN_IND (non-connectable undirected advertising) — apenas publicidade sem conexão, ADV_SCAN_IND (scannable undirected advertising) — suporta scan request, ADV_DIRECT_IND (directed advertising) — publicidade para um Central específico.

ADV_IND é o tipo mais comum usado na maioria dos dispositivos BLE. Ao receber ADV_IND, o Central pode enviar um connection request e estabelecer uma conexão. ADV_NONCONN_IND é usado em balizas (Beacon): o dispositivo anuncia mas não aceita pedidos de conexão — apenas transmissão unidirecional de dados.

Tipo PDUDescriçãoConexãoScan response
ADV_INDPublicidade padrãoSimSim
ADV_DIRECT_INDPublicidade para um Central específicoSimNão
ADV_NONCONN_INDSem conexão (balizas)NãoNão
ADV_SCAN_INDCom suporte de scanSimSim
ADV_EXT_INDExtended advertising (BLE 5.0)SimSim

ADV_DIRECT_IND contém o endereço do Central alvo, permitindo estabelecer conexão rapidamente sem esperar pela escaneação. É usado quando os dispositivos já se “conhecem” — por exemplo, após reconectar a um smartphone previamente emparelhado. Este tipo reduz o consumo de energia pois não requer publicidade em todos os canais.

Intervalo de publicidade e consumo de energia

Advertising interval é o tempo entre advertising events sucessivos. A especificação permite um intervalo de 20 ms a 10,24 s com passo de 0,625 ms. O intervalo real é calculado como a soma de um valor fixo e um atraso aleatório (0–10 ms), o que reduz a probabilidade de colisões entre múltiplos dispositivos anunciantes.

Escolher o intervalo é um equilíbrio entre velocidade de deteção e consumo de energia. Com intervalo de 20 ms, o dispositivo será detetado em 20–30 ms, mas a corrente média será de cerca de 1–2 mA. Com intervalo de 1000 ms, a deteção levará até 1 segundo, mas a corrente média cairá para 50–100 µA. Para a maioria dos dispositivos IoT, o intervalo recomendado é 200–1000 ms.

De acordo com Texas Instruments Application Report SWRA478 (2024), aumentar o intervalo de advertising de 100 ms para 1000 ms reduz o consumo de energia em 90%. Se o dispositivo não requer deteção instantânea (por exemplo, um sensor de temperatura que transmite dados uma vez por minuto), o intervalo ideal é 1000–2000 ms.

Um parâmetro adicional é advertising timeout — o tempo máximo durante o qual o dispositivo anuncia. No iOS, o Peripheral desativa automaticamente a publicidade após 180 segundos em segundo plano. No Android não existe tal limitação, mas os fabricantes podem adicionar seus próprios limites.

Scan Response: dados adicionais

Scan Response é um pacote de dados adicional (até 31 bytes) que o Peripheral envia em resposta a um scan request do Central. O scan request é enviado pelo Central após receber o pacote de advertising se precisar de mais informações antes de conectar. O Scan Response não requer advertising adicional — é enviado apenas mediante solicitação, economizando espaço no ar.

Distribuição típica de dados: o advertising PDU (31 bytes) contém flags (3 bytes), UUIDs de serviço (2–16 bytes) e dados do fabricante (bytes restantes). O scan response transporta o nome completo do dispositivo (até 28 bytes) e UUIDs adicionais ou TX Power Level. Esta separação permite ao Central filtrar rapidamente dispositivos por UUID sem ler o scan response.

Ao projetar o pacote de advertising, lembre-se: se todos os 31 bytes estiverem ocupados no advertising PDU, o Central não conseguirá determinar se o dispositivo suporta scan response. Recomenda-se deixar pelo menos 3–5 bytes livres no advertising PDU para indicar a capacidade de scan response.

Extended Advertising em BLE 5.0

Extended Advertising (BLE 5.0) é uma extensão do mecanismo de publicidade que aumenta o tamanho do pacote de advertising de 31 para 251 bytes e adiciona novos tipos de pacotes. Extended Advertising também suporta coded PHY para estender o alcance de comunicação até 1 km em áreas abertas e publicidade periódica (Periodic Advertising) para sincronizar múltiplos Centrais.

Principais inovações: ADV_EXT_IND — PDU de advertising estendido que pode transmitir até 251 bytes de dados num único pacote. Extended Advertising usa os canais primários (37, 38, 39) apenas para indicar em qual canal secundário (0–36) os dados completos são transmitidos. Isto reduz a carga nos canais de publicidade e aumenta a capacidade total do sistema.

Periodic Advertising é um mecanismo adicional no qual o Peripheral envia dados em canais secundários com um intervalo fixo, e o Central pode sincronizar com esta sequência. É usado para serviços que requerem atualizações regulares de dados — por exemplo, transmissão de áudio ou leituras de sensores em tempo real.

ParâmetroBLE padrãoExtended BLE 5.0
Tamanho máx. do pacote31 bytes251 bytes
CanaisApenas 37, 38, 39+ secundários 0–36
AlcanceAté 100 mAté 1000 m (coded PHY)
Velocidade1 Mbps125 kbps – 2 Mbps
PeriódicoNãoSim

Configuração de publicidade em iOS e Android

iOS (Core Bluetooth) fornece CBPeripheralManager para gerenciar a publicidade. Os parâmetros de advertising são definidos através do dicionário advertisementData com as chaves CBAdvertisementDataLocalNameKey (nome do dispositivo), CBAdvertisementDataServiceUUIDsKey (UUIDs de serviços), CBAdvertisementDataTxPowerLevelKey (potência). O iOS gerencia automaticamente o intervalo de advertising e não permite configurá-lo manualmente.

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) fornece um controle mais detalhado. Disponíveis: AdvertiseSettings — configuração de modo (LOW_POWER, BALANCED, LOW_LATENCY), potência do transmissor e intervalo; AdvertiseData — dados do pacote. O Android suporta extended advertising (BLE 5.0) em dispositivos compatíveis, mas a proporção desses dispositivos no mercado é de cerca de 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
);

Ao desenvolver uma aplicação BLE multiplataforma, considere as diferenças: o iOS não permite controlar o intervalo de advertising diretamente mas garante funcionamento estável em todos os dispositivos; o Android fornece controle total, mas a fragmentação de versões e fabricantes pode causar incompatibilidade. Recomenda-se testar o advertising em dispositivos reais de ambas as plataformas.

Perguntas frequentes

Qual a diferença entre advertising connectable e non-connectable?

Connectable advertising (ADV_IND) permite ao Central estabelecer uma conexão bidirecional com o dispositivo. Non-connectable (ADV_NONCONN_IND) é apenas transmissão unidirecional de dados, usado por balizas (Beacon) para transmitir um identificador sem possibilidade de conexão.

Quantos bytes podem ser transmitidos num pacote de publicidade?

O pacote de publicidade padrão é de 31 bytes, scan response são mais 31 bytes. Extended Advertising (BLE 5.0+) aumenta o limite para 251 bytes usando canais secundários para transmissão de dados.

Qual intervalo de advertising escolher para um dispositivo IoT?

Para a maioria dos dispositivos IoT, recomenda-se 500–1000 ms. Se for necessária deteção rápida (por exemplo, para conectar auscultadores), use 20–50 ms. Para sensores com transmissão de dados pouco frequente, use 1000–2000 ms para poupar energia.

Por que o BLE usa três canais de publicidade?

Três canais (37, 38, 39) representam um compromisso entre fiabilidade de deteção e capacidade de throughput. Um canal pode estar ocupado por Wi-Fi, mas o dispositivo será detetado nos outros dois. O canal 38 está na zona de interferência mínima entre os canais Wi-Fi.

Como a publicidade afeta a duração da bateria?

A publicidade é o principal consumidor de energia em BLE. Com intervalo de 1000 ms, a corrente média é de 50–100 µA, permitindo ao dispositivo funcionar durante um ano com uma bateria CR2032. Com intervalo de 20 ms, a corrente aumenta para 1–2 mA, reduzindo o tempo de funcionamento para várias semanas.

Resumo

  • Advertising é um mecanismo de deteção de dispositivos BLE que opera em três canais (37, 38, 39) com tamanho de pacote até 31 bytes.
  • Existem cinco tipos de PDU de advertising: ADV_IND, ADV_DIRECT_IND, ADV_NONCONN_IND, ADV_SCAN_IND e ADV_EXT_IND para BLE 5.0.
  • O intervalo de advertising varia de 20 ms a 10,24 s e afeta diretamente a velocidade de deteção e o consumo de energia do dispositivo.
  • Scan Response fornece 31 bytes adicionais de dados mediante solicitação do Central sem aumentar o consumo de energia do Peripheral.
  • Extended Advertising (BLE 5.0) aumenta o pacote para 251 bytes e suporta alcance até 1 km através de coded PHY.
  • No iOS, a publicidade é gerida através de CBPeripheralManager; no Android, através de BluetoothLeAdvertiser com configurações detalhadas.
  • A escolha correta do intervalo de advertising e do tipo de pacote determina a eficiência energética e a duração da bateria do dispositivo BLE.

Vamos desenvolver um aplicativo móvel chave na mão

A IT Sectr cria aplicativos para iOS e Android para startups e empresas desde 2017. Nós vamos aconselhá-lo e propor a melhor solução.

Discutir o projeto

Leia também