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, 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.
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.
| Parametre | Bluetooth 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 mA | 5–15 mA |
| Yayın süresi | ~100 ms | ~3 ms |
| Topoloji | Piconet (1 ana, 7'ye kadar bağımlı) | Broadcaster / Observer / Peripheral / Central |
| Profiller | HFP, A2DP, HSP, SPP, OPP | GATT tabanlı (HRS, BLS, CTS, vb.) |
| Tipik cihazlar | Kulaklıklar, hoparlörler, araç eller serbest | Fitness takipçileri, etiketler, kalp atış hızı monitörleri, IoT sensörleri |
| Uyumluluk | Fiziksel 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 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.
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.
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, 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.
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.
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:
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.
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 (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.
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.
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.
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.
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
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.
Ayrıca okuyun