Bluetooth ve BLE: Nedir, Classic ve Low Energy arasındaki fark ve nasıl çalışır

Yazar: IT Sectr Yayınlanma: 2026-03-24 Okuma süresi: 12 dk

Bluetooth ve Bluetooth Low Energy, kısa mesafelerde veri iletimi için kablosuz iletişim standartlarıdır. Bluetooth Classic (BR/EDR), ses ve dosyalar için kararlı bir akış kanalı sağlarken BLE, sensörler ve çevre birimleriyle enerji verimli çalışma için optimize edilmiştir. Bluetooth SIG, 2025'e göre, yılda 5 milyardan fazla BLE destekli cihaz sevk edilmektedir — standart IoT, giyilebilir elektronik ve mobil aksesuarların temeli haline gelmiştir.

Önemli Noktalar

  • Bluetooth Classic — 3 Mbit/s'e kadar hız ve 10–30 mA güç tüketimiyle sürekli ses ve veri iletimi için BR/EDR standardı
  • Bluetooth Low Energy — 5–15 mA tepe akımı ve birkaç yıla kadar pil ömrüyle küçük veri hacimlerinin kesintili iletimi için protokol
  • GATT Profili — bir mobil uygulamanın çevre birimi cihazının özelliklerini nasıl okuyacağını tanımlayan birleşik istemci-sunucu modeli
  • Advertising — bir BLE cihazının merkezi cihaz (akıllı telefon) tarafından keşfedilmek için periyodik olarak işaretçi paketleri gönderdiği mekanizma
  • iOS ve Android — platformlar farklı API'ler (Core Bluetooth ve android.bluetooth) kullanır, ancak her ikisi de GATT'ı destekler — kod minimum değişiklikle taşınabilir

Bluetooth ve BLE Nedir?

Bluetooth, 2.4 GHz ISM bandında çalışan, 100 metreye kadar mesafelerde cihaz iletişimi için tasarlanmış kablosuz kişisel alan ağı (WPAN) standardıdır. IEEE 802.15.1 spesifikasyonu fiziksel ve MAC katmanlarını tanımlarken, Bluetooth SIG yığını belirli senaryolar için üst düzey profiller tanımlar: ses kulaklıkları (HSP), dosya aktarımı (OPP), klavye girişi (HID).

Standart, sürüm 4.0'dan (2010) itibaren iki kola ayrılmıştır: Bluetooth Classic (BR/EDR — Basic Rate / Enhanced Data Rate) ve Bluetooth Low Energy (BLE, eski adıyla Bluetooth Smart). Classic sürekli akışlar — sesli aramalar, müzik, dosyalar için tasarlanmıştır. BLE, verilerin on saniye veya dakikalarca aralıklarla kısa paketler halinde iletildiği uygulamalar için oluşturulmuştur — kalp atış hızı monitörleri, etiketler, sıcaklık sensörleri.

Bluetooth SIG'e (2025) göre, yeni akıllı telefonların %99'u her iki sürümü de desteklemektedir ve BLE ekosistemi, Blood Pressure'dan Environmental Sensing'e kadar 15'ten fazla profil türü içermektedir.

Bluetooth Classic vs BLE: Karşılaştırma

Classic ve BLE arasındaki seçim senaryoya bağlıdır: ses akışı için yalnızca Classic uygundur, saatte bir sensörü yoklamak için — yalnızca BLE. BR/EDR, 1 MHz aralıklı 79 kanal ve uyarlanabilir frekans atlamalı (AFH) kullanarak Wi-Fi parazitine karşı direnç sağlar.

ParametreBluetooth Classic (BR/EDR)Bluetooth Low Energy (BLE)
Veri hızı1–3 Mbit/s (EDR)125 kbit/s – 2 Mbit/s (LE 2M PHY)
Tepe akımı10–30 mA5–15 mA
Yayın süresi~100 ms~3 ms
TopolojiPiconet (1 ana, 7'ye kadar bağımlı)Broadcaster / Observer / Peripheral / Central
ProfillerHFP, A2DP, HSP, SPP, OPPGATT tabanlı (HRS, BLS, CTS, vb.)
Tipik cihazlarKulaklıklar, hoparlörler, araç eller serbestFitness takipçileri, etiketler, kalp atış hızı monitörleri, IoT sensörleri
UyumlulukFiziksel seviyede BLE ile uyumlu değilÇift modlu çipler her iki yığını da destekler

BLE 5.x, 1 km'ye kadar (açık alanlarda) menzili artırmak için LE Coded PHY ve LC3 codec ile LE Audio ekledi — yeni sürüm, ses senaryoları için Classic ve BLE arasındaki sınırı giderek bulanıklaştırıyor.

BLE Mimarisi: Denetleyici, Ana Bilgisayar ve Uygulama

BLE yığını üç katmana ayrılmıştır: Denetleyici (Controller) (fiziksel ve bağlantı katmanları), Ana Bilgisayar (Host) (L2CAP, ATT, GATT, Güvenlik Yöneticisi) ve Uygulama (Application) (uygulamada profil uygulaması). Bu ayrım, çip üreticisinin Denetleyiciyi üretici yazılımında uygulamasına olanak tanırken, mobil uygulama geliştiricisi yalnızca GATT soyutlamalarıyla çalışır.

Bağlantı Katmanı (LL), yayın süresini yönetir: cihaz Standby, Advertising, Scanning, Initiating ve Connection durumları arasında geçiş yapar. Connected durumunda, Central ve Peripheral bir bağlantı aralığı (veri paketlerini değiştirme sıklığı) üzerinde anlaşır. Tipik bir aralık 7,5–1000 ms'dir; değişim ne kadar sık olursa, verim o kadar yüksek ve güç tüketimi o kadar fazla olur.

Güvenlik Yöneticisi (SM), eşleştirme protokolü aracılığıyla anahtar değişimi ile AES-128 şifrelemesini uygular. Üç mod vardır: Just Works (PIN girişi olmadan), Passkey Entry (ekranda 6 haneli kod) ve OOB (NFC veya QR). Giyilebilir cihazlar için genellikle Just Works kullanılır, tıbbi cihazlar için — ek doğrulama ile OOB.

Bluetooth Core Specification 5.4'e (2023) göre, LE Secure Connections modunda güvenli bağlantı kurma süresi, 30 ms bağlantı aralığında 300 ms'yi aşmaz.

GATT Profili: Hizmetler, Özellikler ve Tanımlayıcılar

ATT (Nitelik Protokolü), sunucunun (çevre birimi cihazı) nitelikleri depoladığı ve istemcinin (akıllı telefon) bunları okuduğu veya yazdığı temel taşıma modelidir. GATT (Genel Nitelik Profili), ATT üzerinde bir hiyerarşi oluşturur: Service → Characteristic → Descriptor.

Her hizmet, bir cihaz işlevini tanımlayan mantıksal bir özellik grubudur: Heart Rate Service (UUID 0x180D), bildirimleri kontrol eden bir Client Characteristic Configuration Tanımlayıcısına (0x2902) sahip Heart Rate Measurement özelliğini (UUID 0x2A37) içerir. Mobil uygulama geliştiricisi, discoverServices() aracılığıyla hizmetlerin listesini alır, ardından UUID'ye göre gerekli özelliği bulur ve bildirimlere abone olur.

BLE, standartlaştırılmış Bluetooth SIG hizmetleri için 16 bit UUID'ler ve özel üretici hizmetleri için 128 bit UUID'ler kullanır. Örneğin, bir takipçi kutusu, pil şarj seviyesini iletmek için bir özelliğe sahip A000-… hizmetini tanımlayabilir.

Kotlin'de (Android) GATT ile çalışma örneği

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("Nabız: $heartRate atım/dk")
    }
}

Örnekte, uygulama standart Bluetooth SIG UUID'si ile Heart Rate hizmetini bulur, kalp atış hızı ölçüm özelliğini alır ve bildirimlerine abone olur — kalp atış hızı her değiştiğinde, çevre birimi cihazı Central'dan açık bir istek olmadan veri gönderir.

Advertising, Tarama ve Bağlantı Kurulumu

Advertising, BLE'nin ana mekanizmasıdır ve bir Peripheral cihazının üç birincil kanalda (37, 38, 39) periyodik olarak yayın paketleri (advertising PDU'ları) göndermesidir. Merkezi cihaz bu kanalları tarar, advertising verilerini alır ve bir bağlantı başlatabilir.

Bir advertising paketi, 31 bayta kadar yük içerir: bayraklar, TX güç seviyesi, yerel ad, hizmet UUID'leri, üreticiye özel veriler. Bu, bağlantı kurmadan sensör okumalarını iletmek için yeterlidir — bağlantısız mod (Broadcaster türü). Sürekli veri iletimi için (örneğin, dakikada bir sıcaklık), 1000 ms'ye kadar bağlantı aralığına sahip bir bağlantı kullanılır.

Mobil platformlarda tarama, startScan() (Android) veya scanForPeripherals() (iOS) ile başlatılır. Hizmet UUID'sine göre filtreleme, görünür tüm cihazları işlemeyerek enerji tasarrufu sağlar — uygulama yalnızca ilgili etiketler veya sensörler için geri çağrı alır.

Swift'te (iOS) BLE cihazlarını tarama örneği

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("Cihaz bulundu: \(name)")
        }
    }
}

Bir cihazı keşfettikten sonra Central, CBPeripheral nesnesini ileterek connect() işlevini çağırır. Bağlantı parametreleri (aralık, gecikme, denetim zaman aşımı) Bağlantı Katmanı seviyesinde müzakere edilir — geliştirici bunları doğrudan yönetmez, ancak Android'de requestConnectionPriority aracılığıyla etkileyebilir.

Mobil Geliştirmede Bluetooth LE: Core Bluetooth ve android.bluetooth

Her iki mobil platform da BLE ile çalışmak için yerel API'ler sağlar. Core Bluetooth (iOS), bir temsilci yaklaşımı kullanır: merkezi yönetici işlemleri başlatır ve çevre birimi nesnesi, temsilci yöntemleri aracılığıyla sonuçları bildirir. android.bluetooth (Android), geri çağrı arayüzleri üzerine kurulmuştur ve birden çok cihazla paralel GATT işlemlerini destekler.

Platformlar arasındaki temel farklar:

  • iOS — 7'ye kadar eşzamanlı bağlantıyı destekler; arka plan BLE modu UIBackgroundModes = bluetooth-central gerektirir; ön plandan ayrıldıktan sonra sistem, geri çağrıları birkaç dakika geciktirebilir
  • Android — sabit bağlantı sınırı yoktur (bellekle sınırlıdır); BLUETOOTH_SCAN ve BLUETOOTH_CONNECT izinleri gerektirir (Android 12+); güvenilir arka plan taraması için bir ön plan hizmeti gereklidir
  • Flutter — flutter_blue_plus paketi, platform API'lerini birleşik bir Dart arayüzüyle soyutlar: tarama ve GATT işlemleri için kod her iki platformda da aynıdır

Bluetooth SIG testlerine (2024) göre, bir akıllı telefon ile fitness takipçisi arasındaki BLE bağlantı süresi Android'de ortalama 150–300 ms ve iOS'te 100–250 ms'dir — fark, radyo frekans modülü yönetim politikalarından kaynaklanmaktadır.

Dart'ta (Flutter) BLE bağlantısı örneği

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;
      }
    }
  }
}

Flutter geliştiricisi birleşik bir API arayüzü alır; perde arkasında flutter_blue_plus, çağrıları yerel android.bluetooth veya Core Bluetooth'a çevirir. Bu yaklaşım, her iki platformda BLE çevre birimleriyle çalışmak için uygulama geliştirme süresini azaltır.

Sıkça Sorulan Sorular

Bluetooth Classic ve BLE arasındaki fark nedir?

Bluetooth Classic (BR/EDR), sürekli akış — sesli aramalar, müzik, dosya aktarımı için tasarlanmıştır. BLE, minimum güç tüketimiyle kısa veri paketleri — sensörler, etiketler, fitness takipçileri için optimize edilmiştir. Classic 10–30 mA tüketir, BLE — zirvede 5–15 mA.

Bluetooth Classic ve BLE birbiriyle uyumlu mu?

Fiziksel seviyede uyumlu değillerdir — farklı modülasyon ve kanal haritası. Ancak, modern çiplerin çoğu çift modludur ve her iki yığını da uygular. Çift modlu çipe sahip bir akıllı telefon, aynı anda bir Classic kulaklık ve bir BLE takipçisi ile iletişim kurabilir.

BLE'de bağlantı aralığı nedir?

Bağlantı aralığı, kurulmuş bir bağlantıdaki iki veri paketi arasındaki süredir. Değer 7,5 ms ile 4 saniye arasında değişir. Aralık ne kadar kısa olursa, verim o kadar yüksek ve güç tüketimi o kadar fazla olur. Dakikada bir rapor veren bir sıcaklık sensörü için 1000 ms'lik bir aralık kullanılır.

BLE'de eşleştirme nasıl çalışır?

Eşleştirme, Central ve Peripheral arasında şifreleme anahtarlarının değişim sürecidir. BLE üç yöntemi destekler: Just Works (onay olmadan), Passkey Entry (ekranda PIN girişi) ve OOB (NFC veya QR ile değişim). Eşleştirmeden sonra cihazlar anahtarları saklar (bağlama) ve sonraki bağlantılarda yeniden kimlik doğrulama istemez.

Mobil uygulamalarda hangi BLE profilleri kullanılır?

En yaygın olanları: kalp atış hızı monitörleri için Heart Rate Profile (0x180D), tansiyon aletleri için Blood Pressure Profile (0x1810), sıcaklık ve nem sensörleri için Environmental Sensing (0x181A), şarj seviyesi için Battery Service (0x180F), model ve seri numarası için Device Information (0x180A).

Özet

  • Bluetooth, 2,4 GHz bandında bir WPAN standardıdır ve sürüm 4.0'dan itibaren Classic (BR/EDR) ve Low Energy (BLE) olarak ikiye ayrılmıştır
  • Bluetooth Classic, 3 Mbit/s'ye kadar hız sunar ve ses kulaklıkları ve dosya aktarımı için kullanılır
  • BLE, düşük güç tüketimi (5–15 mA) için optimize edilmiştir ve IoT, fitness takipçileri ve sensörlerde kullanılır
  • GATT Profili, verileri ATT protokolü aracılığıyla değişimle Service → Characteristic → Descriptor hiyerarşisinde düzenler
  • Advertising, çevre birimi cihazlarının üç birincil kanalda bağlantı kurmadan veri iletmesine olanak tanır
  • iOS (Core Bluetooth) ve Android (android.bluetooth), arka plan çalışması ve izinler için farklı yaklaşımlarla yerel API'ler sağlar
  • Flutter (flutter_blue_plus), çapraz platform geliştirme için tek bir Dart arayüzüyle platform API'lerini birleştirir

Anahtar teslim bir mobil uygulama geliştireceğiz

IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.

Projeyi tartış

Ayrıca okuyun