Central — BLE'deki rolü ve cihazları nasıl taradığı

Yazar: IT Sectr Yayınlanma: 2026-07-15 Okuma süresi: 8 dk

Central, Bluetooth Low Energy mimarisinde taramayı başlatan, bağlantı kuran ve çevresel cihazlarla veri alışverişini yöneten bir cihazdır. Mobil geliştirme bağlamında Central, iOS veya Android'deki BLE sensörlerine, fitness takip cihazlarına ve akıllı aksesuarlara bağlanan bir akıllı telefon veya tablettir. Bluetooth Core Specification 5.4'e (2023) göre Central, aynı anda 7 farklı Peripheral ile eşzamanlı bağlantıyı destekleyebilir, ancak gerçek sınırlama çip üreticisine ve işletim sistemi sürümüne bağlıdır. iOS'ta Core Bluetooth ve Android'de android.bluetooth.le, Central rolünü yönetmek için eksiksiz bir API sağlar.

Önemli noktalar

  • Central, tarama, bağlantı ve çevre birimleriyle veri alışverişini yöneten aktif bir BLE cihazıdır.
  • Tarama reklam paketleri aracılığıyla gerçekleştirilir — Central, enerji tasarrufu için cihazları Service UUID'ye göre filtreleyebilir.
  • Tek bir Central, farklı Peripheral ile aynı anda 7 bağlantıya kadar destekleyebilir (uygulamaya bağlıdır).
  • Mobil geliştirmede Central, Core Bluetooth (iOS) veya android.bluetooth.le (Android) kullanan bir akıllı telefondur.
  • Central rolü, sürekli tarama ve veri işleme nedeniyle Peripheral'dan daha fazla enerji tüketir.

BLE'de Central nedir?

Central, Bluetooth Low Energy mimarisinde tüm iletişimi başlatan bir GATT istemcisidir. Bağlantıları pasif olarak bekleyen ve hizmetlerini reklam eden Peripheral'ın aksine, Central aktif olarak ortamı tarar, reklam paketlerini keşfeder ve bağlantıları başlatır.

Asimetrik Central-Peripheral modeli, BLE'nin temel bir özelliğidir. Central, etkileşim mantığını yönetir: hangi cihaza bağlanacağına, hangi hizmetleri keşfedeceğine ve hangi özellikleri okuyup yazacağına karar verir. Peripheral bir veri sunucusu olarak çalışır — hizmetleri ve özellikleri depolar ancak bağlantıları başlatmaz.

Bluetooth Core Specification 5.4'e (2023) göre, bir cihaz aynı anda Central ve Peripheral (çift rol) olabilir. Örneğin, bir akıllı telefon fitness bandı için Central ve dosya aktaran başka bir akıllı telefon için Peripheral olabilir. Ancak, her iki rolde aynı anda çalışmak, güç tüketimini ve bağlantı yönetimi karmaşıklığını artırır.

Mobil geliştirme ekosisteminde Central rolü en yaygın senaryodur. Akıllı telefondaki bir uygulama BLE cihazlarını (sensörler, kulaklıklar, bantlar) arar, onlara bağlanır ve veri alır. Geliştirici, Central ile çalışmak için işletim sistemi API'sini kullanır: iOS'ta CBCentralManager, Android'de BluetoothLeScanner ve BluetoothGatt.

Cihaz tarama süreci

Tarama, Central'ın çalışmasının ilk aşamasıdır. Cihaz, Peripheral'ın periyodik olarak gönderdiği reklam paketlerini algılamak için BLE radyo kanallarında (37, 38, 39) dinler. Her reklam paketi, cihaz adını, Service UUID listesini ve özel verileri içerir.

Central iki tarama modunda çalışabilir: pasif tarama (yalnızca reklam paketlerini alma) ve aktif tarama (tarama yanıtı aracılığıyla ek veri almak için tarama isteği gönderme). Pasif tarama enerji tasarrufu sağlar ancak daha az bilgi verir. Aktif tarama, cihaz adı ve eksiksiz hizmet listesi dahil olmak üzere reklam paketinin tam verilerini almayı sağlar.

UUID'ye göre filtreleme önemli bir optimizasyondur. Central, yalnızca belirli bir Service UUID'ye sahip cihazları tarayabilir ve geri kalanını yok sayabilir. Bu yalnızca enerji tasarrufu sağlamakla kalmaz, aynı zamanda uygulama mantığını da basitleştirir: temsilci yalnızca ilgili cihazları alır.

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
                ]
            )
        }
    }
}

Bağlantı yönetimi

Bağlantı yönetimi, Central'ın temel sorumluluğudur. Uygun bir Peripheral keşfettikten sonra Central bir bağlantı başlatır. BLE bağlantısı, bağlantı aralığı, slave gecikmesi ve denetim zaman aşımı gibi parametre alışverişini içeren bir bağlantı kurma prosedürü aracılığıyla kurulur.

Bağlantı aralığı, bağlantıdan sonra Central ve Peripheral'ın ne sıklıkta veri alışverişi yapacağını belirler. Aralık 7,5 ms ile 4 saniye arasında olabilir. Aralık ne kadar kısa olursa, verim o kadar yüksek olur, ancak güç tüketimi de o kadar yüksek olur. Slave gecikmesi, Peripheral'ın enerji tasarrufu için birden fazla bağlantı olayını atlamasına olanak tanır. Denetim zaman aşımı, yanıt alınamayan maksimum süredir ve bu sürenin sonunda bağlantının kaybolduğu varsayılır.

Central, veri alışverişi tamamlandıktan sonra bağlantıyı sonlandırmaktan sorumludur. BLE cihazları genellikle kalıcı bir bağlantıyı sürdürmez — Central bağlanır, verileri alır ve bağlantıyı keser. Bu, IoT sensörleri için standart bir modeldir: Central tarar, bir sıcaklık sensörü bulur, bağlanır, değeri okur ve bağlantıyı keser.

ParametreAralıkAmaçÖneri
Bağlantı aralığı7,5 ms – 4 sVeri alışveriş sıklığıAkış için 30–50 ms, seyrek veri için 1–4 s
Slave gecikmesi0–499 olayPeripheral olaylarını atlamaSensör enerji tasarrufu için 4–10
Denetim zaman aşımı100 ms – 32 sBağlantı kaybı zaman aşımıÇoğu senaryo için 6–10 saniye
MTU23–517 baytATT paket boyutuBağlantıda maksimumu isteyin

iOS'ta Central: Core Bluetooth

Core Bluetooth, iOS ve macOS'ta BLE ile çalışmak için Apple'ın framework'üdür. CBCentralManager sınıfı, Central rolünü uygulamak için eksiksiz API sağlar: tarama, bağlantı, bağlantı yönetimi. iOS'ta Central ile çalışma, bir temsilci modeline dayanır: CBCentralManagerDelegate, durum değişikliği, cihaz keşfi ve bağlantı sonuçları olaylarını alır.

iOS'ta Central için ana adımlar: CBCentralManager'ı başlatma, Bluetooth durumunu kontrol etme, taramayı başlatma, temsilci aracılığıyla keşfedilen cihazları işleme, seçilen Peripheral'a bağlanma, hizmetleri ve özellikleri keşfetme, veri alışverişi yapma.

swift
// Keşfedilen Peripheral'a bağlan
func centralManager(
    _ central: CBCentralManager,
    didDiscover peripheral: CBPeripheral,
    advertisementData: [String: Any],
    rssi RSSI: NSNumber
) {
    // Peripheral referansını koru ve bağlan
    discoveredPeripheral = peripheral
    central.connect(peripheral, options: nil)
}

// Başarılı bağlantı
func centralManager(
    _ central: CBCentralManager,
    didConnect peripheral: CBPeripheral
) {
    peripheral.delegate = self
    peripheral.discoverServices(nil)
}

iOS, arka plan BLE çalışmasını sınırlar: arka planda, bir uygulama yalnızca Info.plist'teki belirli anahtarlarla tarayabilir ve bağlı cihazlar Central'a veri değişikliklerini bildirebilir. Kritik uygulamalar (tıbbi cihazlar) için bluetooth-central anahtarıyla Arka Plan Modları'nı kullanın.

Android'de Central: BluetoothLeScanner

Android, BLE cihazlarını taramak için BluetoothLeScanner API'sini ve bağlantı yönetimi için BluetoothGatt'ı sağlar. Android 5.0'dan (API 21) itibaren BluetoothLeScanner, kullanımdan kaldırılan startLeScan'ın yerini almıştır. API, BLUETOOTH, BLUETOOTH_ADMIN ve ACCESS_FINE_LOCATION izinlerini (Android 10+ için ACCESS_BACKGROUND_LOCATION) gerektirir.

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

private BluetoothLeScanner scanner;
private BluetoothGatt bluetoothGatt;

// Taramayı yapılandır
ScanSettings settings = new ScanSettings.Builder()
    .setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY)
    .build();

// Taramayı başlat
scanner.startScan(null, settings, new ScanCallback() {
    @Override
    public void onScanResult(
            int callbackType,
            ScanResult result
    ) {
        BluetoothDevice device = result.getDevice();
        // Cihaza bağlan
        bluetoothGatt = device.connectGatt(
            context, false, gattCallback
        );
    }
});

Android'de tarama kısıtlamalarını dikkate almak önemlidir: Android 7'den (API 24) itibaren, konum kullanmayan uygulamalarda tarama 30 saniyede 5 defadan fazla başlatılamaz. Android 12+, BLUETOOTH_SCAN, BLUETOOTH_CONNECT ve ADVERTISE izinlerinin yanı sıra bu izinlerin çalışma zamanı talebini gerektirir.

Central'ın güç tüketimi

Central'ın güç tüketimi, radyo kanallarını sürekli tarama ihtiyacı nedeniyle Peripheral'dan daha yüksektir. Central, BLE paketlerini alır, işler, bağlantıları yönetir ve genellikle uygulama işlemcisinde hesaplamalar yapar. Bluetooth SIG'ye göre, tarama moduna bağlı olarak 30 mA ile 100 mA arasında enerji tüketir.

Central için birkaç enerji tasarrufu stratejisi vardır. Aralıklı tarama en etkili yöntemdir: Central, uzun duraklamalarla (tarama aralığı) kısa pencerelerde (tarama penceresi) tarar. Örneğin, 30 ms'lik bir tarama penceresi ve 1000 ms'lik bir tarama aralığı ile sürekli taramaya kıyasla güç tüketimi %97 oranında azalır.

Ek bir optimizasyon da UUID filtrelemesidir. Central, yalnızca ilgili reklam paketlerini daha hızlı işler ve gerisini yok sayar. Bu, CPU yükünü azaltır ve cihazın pil ömrünü uzatır. Ayrıca, istenen cihaz bulunur bulunmaz taramayı durdurmanız ve bağlantıyı gerekenden daha uzun süre tutmamanız önerilir.

Sıkça sorulan sorular

Bir akıllı telefon aynı anda Central ve Peripheral olabilir mi?

Evet, BLE çift rolü destekler: bir cihaz aynı anda bazı cihazlar için Central ve diğerleri için Peripheral olabilir. Örneğin, bir akıllı telefon bir sensörden veri okur (Central olarak) ve aynı anda başka bir cihaza veri iletmek için kendi hizmetini reklam eder (Peripheral olarak).

Bir Central aynı anda kaç cihaza hizmet verebilir?

BLE spesifikasyonu, tek bir Central için 7 bağlantı sınırı tanımlar. Pratikte, sınırlama çip üreticisine bağlıdır: Nordic nRF52840 yongaları 20 bağlantıya kadar desteklerken, bazı ucuz Bluetooth adaptörleri 3–4'ten fazlasını desteklemez.

Central'ım neden BLE sensörümü algılamıyor?

Nedenler farklı olabilir: sensör reklam yapmıyor (reklam modunda değil), UUID filtresi çok katı, akıllı telefonda Bluetooth kapalı, gerekli izinler eksik (Android'de konum) veya sensör menzil dışında (iç mekanda 10 metreye kadar önerilir).

Bir BLE cihazıyla bağlantıyı sürekli tutmak gerekli mi?

Her zaman gerekli değildir. Birçok senaryo için bağlan-ve-oku modeli kullanılır: Central tarar, bağlanır, gerekli verileri okur ve bağlantıyı keser. Sürekli bağlantı yalnızca akış verileri (nabız, EKG) veya gerçek zamanlı cihaz kontrolü için gereklidir.

Tarama sırasında Central'ın güç tüketimi nasıl azaltılır?

30–50 ms'lik tarama penceresi ve 500–1000 ms'lik tarama aralığı ile aralıklı tarama kullanın. Yalnızca ilgili reklam paketlerini işlemek için cihazları UUID'ye göre filtreleyin. İstenen Peripheral'ı bulur bulmaz taramayı durdurun.

Özet

  • Central, tarama, bağlantı ve veri alışverişi yönetimini başlatan BLE bağlantısının aktif bir katılımcısıdır.
  • Tarama süreci, Service UUID'ye göre filtreleme yeteneği ile kanal 37, 38, 39'da reklam paketlerinin alınmasını içerir.
  • Bir Peripheral keşfedildikten sonra Central, yapılandırılabilir parametrelerle (bağlantı aralığı, slave gecikmesi, denetim zaman aşımı) bir bağlantı kurar.
  • Mobil geliştirmede Central, CBCentralManager (iOS) veya BluetoothLeScanner + BluetoothGatt (Android) aracılığıyla uygulanır.
  • Tek bir Central, standart Bluetooth yapılandırmasında aynı anda 7 bağlantıya kadar yönetebilir.
  • Central'ın güç tüketimi, pil ömrünü uzatmak için aralıklı tarama ve UUID filtreleme yoluyla optimize edilebilir.
  • Keşiften bağlantı kesmeye kadar uygun bağlantı yaşam döngüsü yönetimi, bir BLE uygulamasının verimliliğini belirler.

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