Central — is een apparaat in de Bluetooth Low Energy-architectuur dat het scannen initieert, een verbinding tot stand brengt en de gegevensuitwisseling met randapparaten beheert. In de context van mobiele ontwikkeling is Central een smartphone of tablet op iOS of Android die verbinding maakt met BLE-sensoren, fitnesstrackers en slimme accessoires. Volgens Bluetooth Core Specification 5.4 (2023) kan Central tot 7 gelijktijdige verbindingen met verschillende Peripheral ondersteunen, hoewel de werkelijke beperking afhangt van de chipfabrikant en de OS-versie. Core Bluetooth op iOS en android.bluetooth.le op Android bieden een volledige API voor het beheren van de Central-rol.
Belangrijkste punten
Central — is een GATT-client in de Bluetooth Low Energy-architectuur die alle communicatie initieert. In tegenstelling tot Peripheral, dat passief wacht op verbinding en zijn diensten adverteert, scant Central actief de ether, detecteert advertentiepakketten en initieert de verbinding.
Het asymmetrische Central-Peripheral-model is een fundamenteel kenmerk van BLE. Central beheert de interactielogica: hij beslist met welk apparaat verbinding te maken, welke diensten te onderzoeken, welke kenmerken te lezen en te schrijven. Peripheral vervult de rol van dataserver — slaat diensten en kenmerken op, maar initieert geen verbindingen.
Volgens Bluetooth Core Specification 5.4 (2023) kan een apparaat tegelijkertijd Central en Peripheral zijn (dual role). Een smartphone kan bijvoorbeeld Central zijn voor een fitnessarmband en Peripheral voor een andere smartphone die bestanden overdraagt. Gelijktijdig werken in beide rollen verhoogt echter het energieverbruik en de complexiteit van verbindingsbeheer.
In het ecosysteem van mobiele ontwikkeling is de Central-rol het meest voorkomende scenario. Een app op een smartphone zoekt naar BLE-apparaten (sensoren, hoofdtelefoons, armbanden), maakt er verbinding mee en ontvangt gegevens. De ontwikkelaar gebruikt de API van het besturingssysteem om met Central te werken: CBCentralManager in iOS, BluetoothLeScanner en BluetoothGatt in Android.
Scannen — is de eerste fase van Central's werk. Het apparaat luistert naar BLE-radiokanalen (37, 38, 39) om advertentiepakketten te detecteren die periodiek door Peripheral worden verzonden. Elk advertentiepakket bevat de apparaatnaam, een lijst met service-UUID's en gebruikersgegevens.
Central kan in twee scanmodi werken: passive scanning (alleen ontvangen van advertentiepakketten) en active scanning (verzenden van een scan-aanvraag om aanvullende gegevens te verkrijgen via scan response). Passive scanning bespaart energie, maar geeft minder informatie. Active scanning maakt het mogelijk om volledige gegevens van het advertentiepakket te verkrijgen, inclusief de apparaatnaam en de volledige lijst met diensten.
Filteren op UUID — een belangrijke optimalisatie. Central kan alleen apparaten met een specifieke Service UUID scannen en de andere negeren. Dit bespaart niet alleen energie, maar vereenvoudigt ook de applicatielogica: de delegate ontvangt alleen relevante apparaten.
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
]
)
}
}
}
Verbindingsbeheer — de belangrijkste verantwoordelijkheid van Central. Na detectie van een geschikte Peripheral initieert Central de verbinding. Een BLE-verbinding wordt tot stand gebracht via een verbindingsopbouwprocedure, die parameteruitwisseling omvat: connection interval, slave latency en supervision timeout.
Connection interval bepaalt hoe vaak Central en Peripheral na de verbinding gegevens uitwisselen. Het interval kan variëren van 7.5 ms tot 4 seconden. Hoe korter het interval, hoe hoger de bandbreedte, maar ook het energieverbruik. Slave latency stelt Peripheral in staat om verschillende verbindingsgebeurtenissen over te slaan om energie te besparen. Supervision timeout — de maximale tijd zonder antwoord waarna de verbinding als verloren wordt beschouwd.
Central is verantwoordelijk voor het verbreken van de verbinding na voltooiing van de gegevensuitwisseling. BLE-apparaten houden de verbinding meestal niet permanent — Central maakt verbinding, ontvangt gegevens en verbreekt de verbinding. Dit is een standaardpatroon voor IoT-sensoren: Central scant, vindt een temperatuursensor, maakt verbinding, leest de waarde en verbreekt de verbinding.
| Parameter | Bereik | Doel | Aanbeveling |
|---|---|---|---|
| Connection Interval | 7.5 ms – 4 s | Frequentie van gegevensuitwisseling | 30–50 ms voor streams, 1–4 s voor zeldzame gegevens |
| Slave Latency | 0–499 gebeurtenissen | Overslaan van gebeurtenissen door Peripheral | 4–10 voor energiebesparing van de sensor |
| Supervision Timeout | 100 ms – 32 s | Timeout voor verbindingsverlies | 6–10 seconden voor de meeste scenario's |
| MTU | 23–517 bytes | ATT-pakketgrootte | Vraag het maximum bij verbinding |
Core Bluetooth — Apple's framework voor werken met BLE op iOS en macOS. De klasse CBCentralManager biedt de volledige API voor het implementeren van de Central-rol: scannen, verbinden, verbindingsbeheer. Werken met Central in iOS is gebaseerd op het delegate-model: CBCentralManagerDelegate ontvangt gebeurtenissen over statuswijzigingen, apparaatdetectie en verbindingsresultaten.
De belangrijkste stappen van Central in iOS: initialisatie van CBCentralManager, controleren van de Bluetooth-status, starten van scannen, verwerken van gedetecteerde apparaten via delegate, verbinden met geselecteerde Peripheral, detecteren van diensten en kenmerken, gegevensuitwisseling.
// Maak verbinding met gedetecteerde Peripheral
func centralManager(
_ central: CBCentralManager,
didDiscover peripheral: CBPeripheral,
advertisementData: [String: Any],
rssi RSSI: NSNumber
) {
// Bewaar verwijzing naar peripheral en maak verbinding
discoveredPeripheral = peripheral
central.connect(peripheral, options: nil)
}
// Succesvolle verbinding
func centralManager(
_ central: CBCentralManager,
didConnect peripheral: CBPeripheral
) {
peripheral.delegate = self
peripheral.discoverServices(nil)
}
iOS beperkt BLE-werking op de achtergrond: in de achtergrondmodus kan de app alleen scannen met specifieke sleutels in Info.plist, en verbonden apparaten kunnen Central op de hoogte stellen van gegevenswijzigingen. Voor kritieke applicaties (medische apparaten) gebruikt u Background Modes met de sleutel bluetooth-central.
Android biedt de BluetoothLeScanner-API voor het scannen van BLE-apparaten en BluetoothGatt voor verbindingsbeheer. Vanaf Android 5.0 (API 21) heeft BluetoothLeScanner de verouderde startLeScan vervangen. De API vereist de machtigingen BLUETOOTH, BLUETOOTH_ADMIN en ACCESS_FINE_LOCATION (of ACCESS_BACKGROUND_LOCATION voor Android 10+).
import android.bluetooth.le.*;
import android.bluetooth.*;
private BluetoothLeScanner scanner;
private BluetoothGatt bluetoothGatt;
// Scan configureren
ScanSettings settings = new ScanSettings.Builder()
.setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY)
.build();
// Scannen starten
scanner.startScan(null, settings, new ScanCallback() {
@Override
public void onScanResult(
int callbackType,
ScanResult result
) {
BluetoothDevice device = result.getDevice();
// Verbinding maken met apparaat
bluetoothGatt = device.connectGatt(
context, false, gattCallback
);
}
});
Op Android is het belangrijk om rekening te houden met scanbeperkingen: vanaf Android 7 (API 24) kan scannen niet vaker dan 5 keer per 30 seconden worden gestart in apps die geen Location gebruiken. Android 12+ vereist de machtigingen BLUETOOTH_SCAN, BLUETOOTH_CONNECT en ADVERTISE, evenals runtime-aanvraag van deze machtigingen.
Het energieverbruik van Central is hoger dan dat van Peripheral vanwege de noodzaak om continu de radiokanalen te scannen. Central ontvangt gegevens via BLE-pakketten, verwerkt ze, beheert verbindingen en voert vaak berekeningen uit op de applicatieprocessor. Volgens Bluetooth SIG verbruikt scannen tussen 30 mA en 100 mA, afhankelijk van de modus.
Er zijn verschillende energiebesparende strategieën voor Central. Interval scannen — de meest efficiënte methode: Central scant in korte vensters (scan window) met lange pauzes (scan interval). Bijvoorbeeld met scan window 30 ms en scan interval 1000 ms wordt het energieverbruik met 97% verminderd in vergelijking met continu scannen.
Extra optimalisatie — filteren op UUID. Central verwerkt sneller alleen relevante advertentiepakketten en negeert de andere. Dit vermindert de processorbelasting en verlengt de batterijduur van het apparaat. Het wordt ook aanbevolen om het scannen onmiddellijk te stoppen na detectie van het gewenste apparaat en de verbinding niet langer dan nodig te behouden.
Veelgestelde vragen
Ja, BLE ondersteunt dual role: een apparaat kan tegelijkertijd Central zijn voor sommige apparaten en Peripheral voor andere. Een smartphone leest bijvoorbeeld gegevens van een sensor (als Central) en adverteert tegelijkertijd zijn eigen dienst (als Peripheral) om gegevens naar een ander apparaat te verzenden.
De BLE-specificatie definieert een limiet van 7 verbindingen voor één Central. In de praktijk hangt de beperking af van de chipfabrikant: Nordic nRF52840-chips ondersteunen tot 20 verbindingen, en sommige budget Bluetooth-adapter — niet meer dan 3–4.
De redenen kunnen verschillend zijn: de sensor adverteert niet (niet in advertising-modus), het UUID-filter is te streng, Bluetooth op de smartphone is uitgeschakeld, de vereiste machtigingen ontbreken (Location op Android), of de sensor is buiten bereik (aanbevolen tot 10 meter binnenshuis).
Niet noodzakelijk. Voor veel scenario's wordt het connect-and-read-patroon gebruikt: Central scant, maakt verbinding, leest de benodigde gegevens en verbreekt de verbinding. Permanente verbinding is alleen nodig voor streamgegevens (pols, ECG) of real-time apparaatbediening.
Gebruik interval scannen met een verhouding van scan window 30–50 ms en scan interval 500–1000 ms. Filter apparaten op UUID om alleen relevante advertentiepakketten te verwerken. Stop het scannen onmiddellijk na detectie van de gewenste Peripheral.
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