Bluetooth en BLE: wat is het, verschil tussen Classic en Low Energy en hoe het werkt

Auteur: IT Sectr Gepubliceerd: 2026-03-24 Leestijd: 12 min

Bluetooth en Bluetooth Low Energy zijn draadloze communicatiestandaarden voor gegevensoverdracht over korte afstanden. Bluetooth Classic (BR/EDR) biedt een stabiel streamkanaal voor audio en bestanden, terwijl BLE is geoptimaliseerd voor energiezuinig werken met sensoren en randapparatuur. Volgens Bluetooth SIG, 2025 worden er jaarlijks meer dan 5 miljard apparaten met BLE-ondersteuning verzonden — de standaard is de basis geworden van IoT, draagbare elektronica en mobiele accessoires.

Belangrijkste punten

  • Bluetooth Classic — BR/EDR-standaard voor continue verzending van audio en gegevens met snelheden tot 3 Mbit/s en stroomverbruik 10–30 mA
  • Bluetooth Low Energy — protocol voor intermitterende verzending van kleine hoeveelheden gegevens met piekstroom 5–15 mA en batterijduur tot enkele jaren
  • GATT-profiel — uniform klant-servermodel dat bepaalt hoe de mobiele app de kenmerken van het randapparaat leest
  • Advertising — mechanisme waarbij het BLE-apparaat periodiek bakenpakketten uitzendt voor detectie door het centrale apparaat (smartphone)
  • iOS en Android — platforms gebruiken verschillende API's (Core Bluetooth en android.bluetooth), maar beide ondersteunen GATT — code is overdraagbaar met minimale aanpassingen

Wat zijn Bluetooth en BLE?

Bluetooth — is een draadloos persoonlijk netwerk (WPAN) dat werkt in de ISM 2,4 GHz-band en bedoeld is voor communicatie tussen apparaten tot 100 meter. IEEE 802.15.1 specificeert de fysieke en MAC-laag, en de Bluetooth SIG-stack definieert profielen op hoger niveau voor specifieke scenario's: audio-headsets (HSP), bestandsoverdracht (OPP), toetsenbordinvoer (HID).

De standaard splitste zich vanaf versie 4.0 (2010) in twee takken: Bluetooth Classic (BR/EDR) en Bluetooth Low Energy (BLE, voorheen Bluetooth Smart). Classic is bedoeld voor continue streams — audioprogesprekken, muziek, bestanden. BLE is gemaakt voor toepassingen waar gegevens in korte pakketten worden verzonden met pauzes van tientallen seconden of minuten — hartslagmeters, tags, temperatuursensoren.

Volgens Bluetooth SIG (2025) ondersteunt 99% van de nieuwe smartphones beide versies en omvat het BLE-ecosysteem meer dan 15 profieltypen van Blood Pressure tot Environmental Sensing.

Bluetooth Classic vs BLE: vergelijkende kenmerken

De keuze tussen Classic en BLE hangt af van het scenario: voor audiostreaming is alleen Classic geschikt, voor een sensor die eenmaal per uur wordt uitgelezen — alleen BLE. BR/EDR gebruikt 79 kanalen met een stap van 1 MHz en adaptieve frequentiemodulatie (AFH), wat weerstand biedt tegen Wi-Fi-storing.

ParameterBluetooth Classic (BR/EDR)Bluetooth Low Energy (BLE)
Transmissiesnelheid1–3 Mbit/s (EDR)125 kbit/s – 2 Mbit/s (LE 2M PHY)
Piekstroom10–30 mA5–15 mA
Zendtijd~100 ms~3 ms
TopologiePiconet (1 master, tot 7 slaves)Broadcaster / Observer / Peripheral / Central
ProfielenHFP, A2DP, HSP, SPP, OPPGATT-gebaseerd (HRS, BLS, CTS enz.)
Typische apparatenHeadsets, luidsprekers, auto hands-free setsFitnessbandjes, tags, hartslagmeters, IoT-sensoren
CompatibiliteitNiet compatibel met BLE op fysiek niveauDual-mode chips ondersteunen beide stacks

BLE 5.x voegde LE Coded PHY toe voor bereik tot 1 km (buiten) en LE Audio met LC3-codec — de nieuwe versie vervaagt geleidelijk de grens tussen Classic en BLE in audioscenario's.

BLE-architectuur: Controller, Host en Application

De BLE-stack is verdeeld in drie lagen: Controller (fysieke en link-laag), Host (L2CAP, ATT, GATT, Security Manager) en Application (profilimplementatie in de app). Deze scheiding stelt de chipproducent in staat de Controller in firmware te implementeren en de mobiele ontwikkelaar alleen met GATT-abstracties te werken.

Link Layer (LL) beheert de zendtijd: het apparaat schakelt tussen Standby, Advertising, Scanning, Initiating en Connection. In Connected-toestand komen Central en Peripheral overeen over connection interval — de frequentie van gegevensuitwisseling. Typisch interval is 7,5–1000 ms; hoe frequenter de uitwisseling, hoe hoger de bandbreedte en het energieverbruik.

Security Manager (SM) implementeert AES-128-versleuteling met sleuteluitwisseling via pairing. Er zijn drie modi: Just Works (zonder PIN), Passkey Entry (6-cijferige code op het scherm) en OOB (NFC of QR). Voor draagbare apparaten wordt meestal Just Works gebruikt, voor medische — OOB met extra verificatie.

Volgens Bluetooth Core Specification 5.4 (2023) duurt het opzetten van een beveiligde verbinding in LE Secure Connections-modus niet langer dan 300 ms bij een connection interval van 30 ms.

GATT-profiel: services, kenmerken en descriptoren

Het ATT-protocol (Attribute Protocol) — het basistransportmodel waarin de server (randapparaat) attributen opslaat en de client (smartphone) ze leest of schrijft. GATT (Generic Attribute Profile) bouwt een hiërarchie bovenop ATT: Service → Characteristic → Descriptor.

Elke service is een logische groep kenmerken die één functie van het apparaat beschrijft: Heart Rate Service (UUID 0x180D) bevat de Heart Rate Measurement-karakteristiek (UUID 0x2A37) met Descriptor Client Characteristic Configuration (0x2902) die meldingen beheert. De ontwikkelaar krijgt de lijst met services via discoverServices(), vindt de gewenste karakteristiek op UUID en abonneert zich op meldingen.

BLE gebruikt 16-bits UUID's voor gestandaardiseerde Bluetooth SIG-services en 128-bits UUID's voor aangepaste services. Een tracker-hoesje kan bijvoorbeeld de service A000-… definiëren met een karakteristiek voor het laadniveau van de eigen batterij.

Voorbeeld van werken met GATT in Kotlin (Android)

kotlin
private val gattCallback = object BluetoothGattCallback() {
    override fun onServicesDiscovered(
        gatt: BluetoothGatt, status: Int
    ) {
        val service = gatt.getService(UUID.fromString("0000180d-0000-1000-8000-00805f9b34fb"))
        val char = service?.getCharacteristic(
            UUID.fromString("00002a37-0000-1000-8000-00805f9b34fb")
        )
        gatt.setCharacteristicNotification(char, true)
    }

    override fun onCharacteristicChanged(
        gatt: BluetoothGatt, char: BluetoothGattCharacteristic
    ) {
        val heartRate = char.getIntValue(BluetoothGattCharacteristic.FORMAT_UINT8, 1)
        updateUi("Hartslag: $heartRate bpm")
    }
}

In het voorbeeld vindt de app de Heart Rate-service via het standaard Bluetooth SIG-UUID, krijgt de hartslagmeetkarakteristiek en abonneert zich op de meldingen — bij elke verandering van de hartslag stuurt het randapparaat gegevens zonder expliciet verzoek van Central.

Advertising, scannen en verbinding maken

Advertising — het sleutelmechanisme van BLE waarbij het Peripheral-apparaat periodiek uitzendpakketten (advertising PDUs) verzendt op drie primaire kanalen (37, 38, 39). Het centrale apparaat scant deze kanalen, ontvangt de advertising-gegevens en kan een verbinding initiëren.

Het advertising-pakket bevat tot 31 bytes aan nuttige lading: flags, TX power level, lokale naam, service-UUID's, fabrikantspecifieke gegevens. Dit is voldoende voor sensoruitlezingen zonder verbinding — Connectionless-modus (Broadcaster-type). Voor continue gegevensverzending (bijv. temperatuur elke minuut) wordt een verbinding gebruikt met connection interval tot 1000 ms.

Op het mobiele platform wordt scannen gestart via startScan() (Android) of scanForPeripherals() (iOS). Filteren op service-UUID bespaart energie — de app krijgt alleen een callback voor interessante tags of sensoren.

Voorbeeld van BLE-apparaten scannen in Swift (iOS)

swift
import CoreBluetooth

class ScannerViewController: UIViewController {
    private var centralManager: CBCentralManager!

    override func viewDidLoad() {
        centralManager = CBCentralManager(
            delegate: self, queue: nil
        )
    }

    func centralManagerDidUpdateState(central: CBCentralManager) {
        if central.state == .poweredOn {
            centralManager.scanForPeripherals(
                withServices: nil, options: nil
            )
        }
    }

    func centralManager(
        central: CBCentralManager,
        didDiscover peripheral: CBPeripheral,
        advertisementData: [String : Any],
        rssi RSSI: NSNumber
    ) {
        if let name = advertisementData[CBAdvertisementDataLocalNameKey] {
            print("Apparaat gevonden: \(name)")
        }
    }
}

Na detectie roept Central connect() aan met het CBPeripheral-object. De verbindingsparameters (interval, latency, supervision timeout) worden op Link Layer-niveau onderhandeld — de ontwikkelaar beheert ze niet direct, maar kan beïnvloeden via requestConnectionPriority op Android.

Bluetooth LE in mobiele ontwikkeling: Core Bluetooth en android.bluetooth

Beide mobiele platforms bieden native API's voor BLE. Core Bluetooth (iOS) gebruikt een gedelegeerde aanpak: de centrale manager start bewerkingen en het randapparaat rapporteert resultaten via gedelegeerde methoden. android.bluetooth (Android) is gebouwd op callback-interfaces en ondersteunt parallelle GATT-bewerkingen met meerdere apparaten.

Belangrijkste verschillen tussen platforms:

  • iOS — ondersteunt tot 7 gelijktijdige verbindingen; BLE-achtergrondmodus vereist UIBackgroundModes = bluetooth-central; na het verlaten van de achtergrond kan het systeem callbacks enkele minuten vertragen
  • Android — geen vaste verbindingslimiet (geheugenbeperking); vereist BLUETOOTH_SCAN- en BLUETOOTH_CONNECT-machtigingen (Android 12+); foreground service nodig voor betrouwbaar scannen op de achtergrond
  • Flutter — flutter_blue_plus-pakket abstraheert platform-API's met een uniforme Dart-interface: code voor scannen en GATT-bewerkingen is identiek op beide platforms

Volgens Bluetooth SIG-tests (2024) bedraagt de BLE-verbindingstijd van een smartphone met een fitnessband gemiddeld 150–300 ms op Android en 100–250 ms op iOS — het verschil wordt veroorzaakt door het radiofrequentiebeheerbeleid.

Voorbeeld van BLE-verbinding in Dart (Flutter)

dart
import 'package:flutter_blue_plus/flutter_blue_plus.dart';

class BleService {
  final FlutterBluePlus fbp = FlutterBluePlus();

  Future<void> scanAndConnect(String deviceName) async {
    await fbp.startScan(timeout: Duration(seconds: 15));

    await for (final result in fbp.scanResults) {
      if (result.device.advName == deviceName) {
        await fbp.stopScan();
        await result.device.connect();
        break;
      }
    }
  }
}

De Flutter-ontwikkelaar krijgt een uniforme API-interface, waaronder flutter_blue_plus aanroepen vertaalt naar native android.bluetooth of Core Bluetooth. Deze aanpak verkort de ontwikkelingstijd voor apps die met BLE-randapparatuur werken op beide platforms.

Veelgestelde vragen

Wat is het verschil tussen Bluetooth Classic en BLE?

Bluetooth Classic (BR/EDR) is bedoeld voor continue streaming — audioprogesprekken, muziek, bestandsoverdracht. BLE is geoptimaliseerd voor korte gegevenspakketten met minimaal energieverbruik — sensoren, tags, fitnesstrackers. Classic verbruikt 10–30 mA, BLE 5–15 mA in piek.

Zijn Bluetooth Classic en BLE compatibel met elkaar?

Op fysiek niveau zijn ze niet compatibel — andere modulatie en kanaalkaart. De meeste moderne chips zijn echter dual-mode en implementeren beide stacks. Een smartphone met een dual-mode chip kan tegelijkertijd communiceren met een Classic-headset en een BLE-tracker.

Wat is connection interval in BLE?

Connection interval is de tijd tussen twee gegevenspakketten in een bestaande verbinding. De waarde varieert van 7,5 ms tot 4 seconden. Hoe kleiner het interval, hoe hoger de bandbreedte en het energieverbruik. Voor een temperatuursensor eenmaal per minuut wordt een interval van 1000 ms gebruikt.

Hoe werkt pairing in BLE?

Pairing is het proces van sleuteluitwisseling tussen Central en Peripheral. BLE ondersteunt drie methoden: Just Works (zonder bevestiging), Passkey Entry (PIN invoeren op het scherm) en OOB (uitwisseling via NFC of QR). Na pairing slaan apparaten de sleutels op (bonding) en bij hernieuwde verbinding vragen ze niet opnieuw om authenticatie.

Welke BLE-profielen worden gebruikt in mobiele apps?

De meest voorkomende: Heart Rate Profile (0x180D) voor hartslagmeters, Blood Pressure Profile (0x1810) voor bloeddrukmeters, Environmental Sensing (0x181A) voor temperatuur- en vochtigheidssensoren, Battery Service (0x180F) voor laadniveau, Device Information (0x180A) voor model en serienummer.

Samenvatting

  • Bluetooth — WPAN-standaard in de 2,4 GHz-band, gesplitst in Classic (BR/EDR) en Low Energy (BLE) vanaf versie 4.0
  • Bluetooth Classic biedt snelheden tot 3 Mbit/s en wordt gebruikt voor audio-headsets en bestandsoverdracht
  • BLE is geoptimaliseerd voor laag energieverbruik (5–15 mA) en wordt gebruikt in IoT, fitnessbandjes en sensoren
  • GATT-profiel organiseert gegevens in de hiërarchie Service → Characteristic → Descriptor met uitwisseling via het ATT-protocol
  • Advertising stelt randapparaten in staat gegevens te verzenden zonder verbinding op drie primaire kanalen
  • iOS (Core Bluetooth) en Android (android.bluetooth) bieden native API's met verschillende benaderingen van achtergrondwerk en machtigingen
  • Flutter (flutter_blue_plus) verenigt platform-API's in een uniforme Dart-interface voor cross-platform ontwikkeling

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.

Bespreek het project

Lees ook