Central — o que é, seu papel no BLE e como escaneia dispositivos

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

Central é um dispositivo na arquitetura Bluetooth Low Energy que inicia o escaneamento, estabelece uma conexão e gerencia a troca de dados com dispositivos periféricos. No contexto do desenvolvimento mobile, Central é um smartphone ou tablet com iOS ou Android que se conecta a sensores BLE, rastreadores fitness e acessórios inteligentes. De acordo com Bluetooth Core Specification 5.4 (2023), o Central pode suportar simultaneamente até 7 conexões simultâneas com diferentes Periféricos, embora a limitação real dependa do fabricante do chip e da versão do SO. Core Bluetooth no iOS e android.bluetooth.le no Android fornecem uma API completa para gerenciar o papel Central.

Principais pontos

  • Central é um dispositivo BLE ativo que escaneia, conecta e gerencia a troca com periféricos.
  • O escaneamento é feito através de pacotes de publicidade — Central pode filtrar dispositivos por UUID de serviço para economizar energia.
  • Um único Central pode suportar simultaneamente até 7 conexões com diferentes Periféricos (depende da implementação).
  • No desenvolvimento mobile, Central é um smartphone usando Core Bluetooth (iOS) ou android.bluetooth.le (Android).
  • O papel Central consome mais energia que o Periférico devido ao escaneamento constante e processamento de dados.

O que é Central no BLE?

Central é um cliente GATT na arquitetura Bluetooth Low Energy que inicia todas as comunicações. Ao contrário do Periférico, que espera passivamente por conexões e anuncia seus serviços, o Central escaneia ativamente o ar, descobre pacotes de publicidade e inicia conexões.

O modelo assimétrico Central-Periférico é uma característica fundamental do BLE. O Central gerencia a lógica de interação: decide a qual dispositivo se conectar, quais serviços explorar e quais características ler e escrever. Periférico atua como um servidor de dados — armazena serviços e características, mas não inicia conexões.

De acordo com a Bluetooth Core Specification 5.4 (2023), um dispositivo pode ser simultaneamente Central e Periférico (papel duplo). Por exemplo, um smartphone pode ser Central para uma pulseira fitness e Periférico para outro smartphone transferindo arquivos. No entanto, a operação simultânea em ambos os papéis aumenta o consumo de energia e a complexidade do gerenciamento de conexões.

No ecossistema de desenvolvimento mobile, o papel Central é o cenário mais comum. Um aplicativo em um smartphone procura por dispositivos BLE (sensores, fones de ouvido, pulseiras), conecta-se a eles e recebe dados. O desenvolvedor usa a API do sistema operacional para trabalhar com Central: CBCentralManager no iOS, BluetoothLeScanner e BluetoothGatt no Android.

Processo de escaneamento de dispositivos

Escaneamento é o primeiro estágio da operação do Central. O dispositivo escuta nos canais de rádio BLE (37, 38, 39) para detectar pacotes de publicidade que os Periféricos enviam periodicamente. Cada pacote de publicidade contém o nome do dispositivo, uma lista de UUIDs de serviço e dados personalizados.

O Central pode operar em dois modos de escaneamento: escaneamento passivo (apenas recebendo pacotes de publicidade) e escaneamento ativo (enviando uma solicitação de escaneamento para obter dados adicionais via resposta de escaneamento). O escaneamento passivo economiza energia, mas fornece menos informação. O escaneamento ativo permite obter dados completos do pacote de publicidade, incluindo o nome do dispositivo e a lista completa de serviços.

A filtragem por UUID é uma otimização importante. O Central pode escanear apenas dispositivos com um UUID de serviço específico, ignorando os demais. Isso não apenas economiza energia, mas também simplifica a lógica do aplicativo: o delegado recebe apenas dispositivos relevantes.

swift
import CoreBluetooth

class BLECentralManager: NSObject, CBCentralManagerDelegate {

    private var centralManager: CBCentralManager!

    override init() {
        super.init()
        centralManager = CBCentralManager(
            delegate: self,
            queue: nil
        )
    }

    func centralManagerDidUpdateState(_ central: CBCentralManager) {
        if central.state == .poweredOn {
            central.scanForPeripherals(
                withServices: nil,
                options: [
                    CBCentralManagerScanOptionAllowDuplicatesKey: false
                ]
            )
        }
    }
}

Gerenciamento de conexões

Gerenciamento de conexões é a responsabilidade chave do Central. Após descobrir um Periférico adequado, o Central inicia uma conexão. Uma conexão BLE é estabelecida através de um procedimento de estabelecimento de conexão que inclui troca de parâmetros: intervalo de conexão, latência escrava e tempo de supervisão.

O intervalo de conexão determina com que frequência Central e Periférico trocam dados após a conexão. O intervalo pode variar de 7.5 ms a 4 segundos. Quanto menor o intervalo, maior a taxa de transferência, mas também maior o consumo de energia. Latência escrava permite que o Periférico ignore vários eventos de conexão para economizar energia. O tempo de supervisão é o tempo máximo sem resposta após o qual a conexão é considerada perdida.

O Central é responsável por encerrar a conexão após a conclusão da troca de dados. Dispositivos BLE normalmente não mantêm uma conexão permanente — o Central conecta-se, obtém dados e desconecta-se. Este é um padrão comum para sensores IoT: o Central escaneia, encontra um sensor de temperatura, conecta-se, lê o valor e desconecta-se.

ParâmetroIntervaloFinalidadeRecomendação
Intervalo de conexão7.5 ms – 4 sFrequência de troca de dados30–50 ms para streaming, 1–4 s para dados esporádicos
Latência escrava0–499 eventosIgnorar eventos do Periférico4–10 para economia de energia do sensor
Tempo de supervisão100 ms – 32 sTempo limite de perda de conexão6–10 segundos para a maioria dos cenários
MTU23–517 bytesTamanho do pacote ATTSolicitar o máximo na conexão

Central no iOS: Core Bluetooth

Core Bluetooth é o framework da Apple para trabalhar com BLE no iOS e macOS. A classe CBCentralManager fornece a API completa para implementar o papel Central: escaneamento, conexão, gerenciamento de conexões. O trabalho com Central no iOS é baseado em um modelo de delegado: CBCentralManagerDelegate recebe eventos de mudança de estado, descoberta de dispositivos e resultados de conexão.

As principais etapas para Central no iOS: inicializar CBCentralManager, verificar o estado do Bluetooth, iniciar o escaneamento, lidar com dispositivos descobertos via delegado, conectar-se ao Periférico selecionado, descobrir serviços e características, trocar dados.

swift
// Conectar ao Peripheral descoberto
func centralManager(
    _ central: CBCentralManager,
    didDiscover peripheral: CBPeripheral,
    advertisementData: [String: Any],
    rssi RSSI: NSNumber
) {
    // Manter referência ao periférico e conectar
    discoveredPeripheral = peripheral
    central.connect(peripheral, options: nil)
}

// Conexão bem-sucedida
func centralManager(
    _ central: CBCentralManager,
    didConnect peripheral: CBPeripheral
) {
    peripheral.delegate = self
    peripheral.discoverServices(nil)
}

O iOS limita o trabalho BLE em segundo plano: em segundo plano, um aplicativo só pode escanear com chaves específicas no Info.plist, e dispositivos conectados podem notificar o Central sobre mudanças de dados. Para aplicações críticas (dispositivos médicos), use Modos em segundo plano com a chave bluetooth-central.

Central no Android: BluetoothLeScanner

Android fornece a API BluetoothLeScanner para escanear dispositivos BLE e BluetoothGatt para gerenciamento de conexões. A partir do Android 5.0 (API 21), o BluetoothLeScanner substituiu o obsoleto startLeScan. A API requer permissões BLUETOOTH, BLUETOOTH_ADMIN e ACCESS_FINE_LOCATION (ou ACCESS_BACKGROUND_LOCATION para Android 10+).

java
import android.bluetooth.le.*;
import android.bluetooth.*;

private BluetoothLeScanner scanner;
private BluetoothGatt bluetoothGatt;

// Configurar escaneamento
ScanSettings settings = new ScanSettings.Builder()
    .setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY)
    .build();

// Iniciar escaneamento
scanner.startScan(null, settings, new ScanCallback() {
    @Override
    public void onScanResult(
            int callbackType,
            ScanResult result
    ) {
        BluetoothDevice device = result.getDevice();
        // Conectar ao dispositivo
        bluetoothGatt = device.connectGatt(
            context, false, gattCallback
        );
    }
});

No Android, é importante considerar as restrições de escaneamento: a partir do Android 7 (API 24), o escaneamento não pode ser iniciado mais de 5 vezes por 30 segundos em aplicativos que não usam localização. Android 12+ requer permissões BLUETOOTH_SCAN, BLUETOOTH_CONNECT e ADVERTISE, bem como solicitações em tempo de execução dessas permissões.

Consumo de energia do Central

O consumo de energia do Central é maior que o do Periférico devido à necessidade de escanear constantemente os canais de rádio. O Central recebe pacotes BLE, processa-os, gerencia conexões e frequentemente realiza cálculos no processador do aplicativo. De acordo com Bluetooth SIG, o escaneamento consome entre 30 mA e 100 mA dependendo do modo.

Existem várias estratégias de economia de energia para o Central. Escaneamento por intervalo é o método mais eficaz: o Central escaneia em janelas curtas (janela de escaneamento) com pausas longas (intervalo de escaneamento). Por exemplo, com uma janela de escaneamento de 30 ms e um intervalo de escaneamento de 1000 ms, o consumo de energia é reduzido em 97% em comparação com o escaneamento contínuo.

Uma otimização adicional é a filtragem por UUID. O Central processa apenas pacotes de publicidade relevantes mais rapidamente, ignorando os demais. Isso reduz a carga da CPU e aumenta a vida útil da bateria do dispositivo. Também é recomendado parar o escaneamento imediatamente após encontrar o dispositivo desejado e não manter a conexão por mais tempo que o necessário.

Perguntas frequentes

Um smartphone pode ser Central e Periférico ao mesmo tempo?

Sim, BLE suporta papel duplo: um dispositivo pode ser simultaneamente Central para alguns dispositivos e Periférico para outros. Por exemplo, um smartphone lê dados de um sensor (como Central) e simultaneamente anuncia seu próprio serviço (como Periférico) para transmitir dados a outro dispositivo.

Quantos dispositivos um Central pode atender simultaneamente?

A especificação BLE define um limite de 7 conexões para um único Central. Na prática, a limitação depende do fabricante do chip: chips Nordic nRF52840 suportam até 20 conexões, enquanto alguns adaptadores Bluetooth baratos suportam no máximo 3–4.

Por que meu Central não está detectando meu sensor BLE?

As razões podem variar: o sensor não está anunciando (não está em modo de publicidade), o filtro UUID é muito restritivo, o Bluetooth está desligado no smartphone, permissões necessárias estão faltando (localização no Android), ou o sensor está fora do alcance (recomendado até 10 metros em ambientes fechados).

É necessário manter a conexão com um dispositivo BLE constantemente?

Não necessariamente. Para muitos cenários, o padrão conectar-e-ler é usado: o Central escaneia, conecta-se, lê os dados necessários e desconecta-se. Uma conexão constante é necessária apenas para dados em streaming (pulso, ECG) ou controle de dispositivo em tempo real.

Como reduzir o consumo de energia do Central durante o escaneamento?

Use escaneamento por intervalo com uma janela de escaneamento de 30–50 ms e um intervalo de escaneamento de 500–1000 ms. Filtre dispositivos por UUID para processar apenas pacotes de publicidade relevantes. Desative o escaneamento imediatamente após encontrar o Periférico desejado.

Resumo

  • Central é um participante ativo da conexão BLE que inicia o escaneamento, conexão e gerenciamento da troca de dados.
  • O processo de escaneamento envolve receber pacotes de publicidade nos canais 37, 38, 39 com capacidade de filtrar por UUID de serviço.
  • Após descobrir um Periférico, o Central estabelece uma conexão com parâmetros configuráveis — intervalo de conexão, latência escrava, tempo de supervisão.
  • No desenvolvimento mobile, o Central é implementado via CBCentralManager (iOS) ou BluetoothLeScanner + BluetoothGatt (Android).
  • Um único Central pode gerenciar simultaneamente até 7 conexões na configuração Bluetooth padrão.
  • O consumo de energia do Central pode ser otimizado através de escaneamento por intervalo e filtragem UUID para aumentar a vida útil da bateria.
  • O gerenciamento adequado do ciclo de vida da conexão — da descoberta à desconexão — determina a eficiência de uma aplicação 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