Central — Bluetooth Low Energy arxitekturasında skan etməni başladan, qoşulma yaradan və periferik cihazlarla məlumat mübadiləsini idarə edən cihazdır. Mobil tərtibat kontekstində Central — BLE sensorlarına, fitnes trekerlərinə və ağıllı aksesuarlara qoşulan iOS və ya Android smartfon və ya planşetdir. Bluetooth Core Specification 5.4 (2023) məlumatlarına görə, Central eyni anda 7 fərqli Peripheral-ə qədər qoşulma dəstəkləyə bilər, baxmayaraq ki, real məhdudiyyət çip istehsalçısından və OS versiyasından asılıdır. iOS-da Core Bluetooth və Android-də android.bluetooth.le Central rolunu idarə etmək üçün tam API təqdim edir.
Əsas məqamlar
Central — Bluetooth Low Energy arxitekturasında bütün rabitəni başladan GATT müştərisidir. Passiv olaraq qoşulmanı gözləyən və xidmətlərini reklam edən Peripheral-dən fərqli olaraq, Central aktiv şəkildə efiri skan edir, reklam paketlərini aşkarlayır və qoşulmanı başladır.
Asimmetrik Central-Peripheral modeli BLE-nin fundamental xüsusiyyətidir. Central qarşılıqlı əlaqə məntiqini idarə edir: hansı cihaza qoşulacağına, hansı xidmətləri araşdıracağına, hansı xarakteristikaları oxuyub yazacağına qərar verir. Peripheral məlumat serveri rolunu oynayır — xidmətləri və xarakteristikaları saxlayır, lakin qoşulmaları başlatmır.
Bluetooth Core Specification 5.4 (2023)-ə görə, cihaz eyni anda həm Central, həm də Peripheral ola bilər (dual role). Məsələn, smartfon fitnes bilərziyi üçün Central, fayl ötürən başqa smartfon üçün Peripheral ola bilər. Lakin hər iki rolda eyni vaxtda işləmək enerji sərfiyyatını və qoşulma idarəsinin mürəkkəbliyini artırır.
Mobil tərtibat ekosistemində Central rolu ən çox rast gəlinən ssenaridir. Smartfon proqramı BLE cihazlarını (sensorlar, qulaqlıqlar, bilərziklər) axtarır, onlara qoşulur və məlumat alır. Tərtibatçı Central ilə işləmək üçün əməliyyat sistemi API-sindən istifadə edir: iOS-da CBCentralManager, Android-də BluetoothLeScanner və BluetoothGatt.
Skan etmə — Central-ın işinin ilk mərhələsidir. Cihaz, Peripheral-lərin dövri olaraq göndərdiyi reklam paketlərini aşkarlamaq üçün BLE radiokanallarını (37, 38, 39) dinləyir. Hər bir reklam paketi cihazın adını, xidmət UUID siyahısını və istifadəçi məlumatlarını ehtiva edir.
Central iki skan etmə rejimində işləyə bilər: passive scanning (yalnız reklam paketlərinin qəbulu) və active scanning (scan response vasitəsilə əlavə məlumat almaq üçün scan request göndərilməsi). Passive scanning enerjiyə qənaət edir, lakin daha az məlumat verir. Active scanning cihazın adı və tam xidmət siyahısı daxil olmaqla reklam paketinin tam məlumatlarını əldə etməyə imkan verir.
UUID-ə görə filtrləmə — vacib optimallaşdırmadır. Central yalnız müəyyən Service UUID-si olan cihazları skan edə bilər, qalanlarını nəzərə almır. Bu təkcə enerjiyə qənaət etmir, həm də proqram məntiqini sadələşdirir: delegate yalnız uyğun cihazları alır.
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
]
)
}
}
}
Qoşulmaların idarə edilməsi — Central-ın əsas vəzifəsidir. Uyğun Peripheral aşkarlandıqdan sonra Central qoşulmanı başladır. BLE qoşulması connection establishment proseduru vasitəsilə qurulur, bura parametr mübadiləsi daxildir: connection interval, slave latency və supervision timeout.
Connection interval, qoşulmadan sonra Central və Peripheral-in nə qədər tez-tez məlumat mübadiləsi aparacağını müəyyən edir. Interval 7.5 ms-dən 4 saniyəyə qədər ola bilər. Interval nə qədər qısa olsa, ötürmə qabiliyyəti bir o qədər yüksək, lakin enerji sərfiyyatı da o qədər çox olar. Slave latency Peripheral-ə enerjiyə qənaət üçün bir neçə connection event-i buraxmağa imkan verir. Supervision timeout — cavab olmadan maksimum vaxt, bundan sonra qoşulma itirilmiş sayılır.
Central məlumat mübadiləsi başa çatdıqdan sonra qoşulmanın kəsilməsinə cavabdehdir. BLE cihazları adətən qoşulmanı daimi saxlamır — Central qoşulur, məlumat alır və ayrılır. Bu IoT sensorları üçün standart nümunədir: Central skan edir, temperatur sensorunu tapır, qoşulur, dəyəri oxuyur və ayrılır.
| Parametr | Range | Məqsəd | Tövsiyə |
|---|---|---|---|
| Connection Interval | 7.5 ms – 4 s | Məlumat mübadiləsi tezliyi | Axınlar üçün 30–50 ms, nadir məlumatlar üçün 1–4 s |
| Slave Latency | 0–499 hadisə | Peripheral tərəfindən hadisələrin buraxılması | Sensor enerjisinə qənaət üçün 4–10 |
| Supervision Timeout | 100 ms – 32 s | Əlaqə itkisi vaxt aşımı | Əksər ssenarilər üçün 6–10 saniyə |
| MTU | 23–517 bayt | ATT paket ölçüsü | Qoşulmada maksimumu tələb edin |
Core Bluetooth — Apple-ın iOS və macOS-da BLE ilə işləmək üçün freymvorkudur. CBCentralManager sinfi Central rolunu həyata keçirmək üçün tam API təmin edir: skan etmə, qoşulma, qoşulmaların idarə edilməsi. iOS-da Central ilə iş delegate modelinə əsaslanır: CBCentralManagerDelegate vəziyyət dəyişikliyi, cihaz aşkarlanması və qoşulma nəticələri hadisələrini alır.
iOS-da Central ilə işin əsas addımları: CBCentralManager-in işə salınması, Bluetooth vəziyyətinin yoxlanması, skan etmənin başladılması, aşkarlanan cihazların delegate vasitəsilə emalı, seçilmiş Peripheral-ə qoşulma, xidmət və xarakteristikaların aşkarlanması, məlumat mübadiləsi.
// Aşkarlanmış Peripheral-ə qoşul
func centralManager(
_ central: CBCentralManager,
didDiscover peripheral: CBPeripheral,
advertisementData: [String: Any],
rssi RSSI: NSNumber
) {
// Peripheral-ə istinadı saxla və qoşul
discoveredPeripheral = peripheral
central.connect(peripheral, options: nil)
}
// Uğurlu qoşulma
func centralManager(
_ central: CBCentralManager,
didConnect peripheral: CBPeripheral
) {
peripheral.delegate = self
peripheral.discoverServices(nil)
}
iOS BLE-nin fon işini məhdudlaşdırır: fon rejimində proqram yalnız Info.plist-də müəyyən açarlarla skan edə bilər, qoşulmuş cihazlar isə Central-a məlumat dəyişiklikləri barədə bildiriş göndərə bilər. Kritik proqramlar (tibbi cihazlar) üçün bluetooth-central açarı ilə Background Modes istifadə edin.
Android BLE cihazlarını skan etmək üçün BluetoothLeScanner API-sini və qoşulmaları idarə etmək üçün BluetoothGatt təqdim edir. Android 5.0-dan (API 21) başlayaraq BluetoothLeScanner köhnəlmiş startLeScan-ı əvəz etmişdir. API BLUETOOTH, BLUETOOTH_ADMIN və ACCESS_FINE_LOCATION (və ya Android 10+ üçün ACCESS_BACKGROUND_LOCATION) icazələrini tələb edir.
import android.bluetooth.le.*;
import android.bluetooth.*;
private BluetoothLeScanner scanner;
private BluetoothGatt bluetoothGatt;
// Skan etməni konfiqurasiya et
ScanSettings settings = new ScanSettings.Builder()
.setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY)
.build();
// Skan etməyə başla
scanner.startScan(null, settings, new ScanCallback() {
@Override
public void onScanResult(
int callbackType,
ScanResult result
) {
BluetoothDevice device = result.getDevice();
// Cihaza qoşul
bluetoothGatt = device.connectGatt(
context, false, gattCallback
);
}
});
Android-də skan etmə məhdudiyyətlərini nəzərə almaq vacibdir: Android 7-dən (API 24) başlayaraq, Location istifadə etməyən proqramlarda skan etmə 30 saniyədə 5 dəfədən çox işə salına bilməz. Android 12+ BLUETOOTH_SCAN, BLUETOOTH_CONNECT və ADVERTISE icazələrini, həmçinin bu icazələrin runtime tələbini tələb edir.
Central-ın enerji sərfiyyatı radiokanalları daimi skan etmək zərurəti səbəbindən Peripheral-dən daha yüksəkdir. Central BLE paketləri ilə məlumat alır, onları emal edir, qoşulmaları idarə edir və tez-tez proqram prosessorunda hesablamalar aparır. Bluetooth SIG məlumatlarına görə, skan etmə rejimdən asılı olaraq 30 mA-dan 100 mA-dək enerji sərf edir.
Central üçün bir neçə enerjiyə qənaət strategiyası mövcuddur. Interval skan etmə — ən effektiv üsul: Central qısa pəncərələrdə (scan window) uzun fasilələrlə (scan interval) skan edir. Məsələn, scan window 30 ms və scan interval 1000 ms olduqda enerji sərfiyyatı fasiləsiz skan etmə ilə müqayisədə 97% azalır.
Əlavə optimallaşdırma — UUID-ə görə filtrləmə. Central yalnız uyğun reklam paketlərini emal edir, qalanlarını nəzərə almır. Bu prosessor yükünü azaldır və cihazın batareya iş müddətini artırır. Həmçinin tələb olunan cihaz aşkarlanan kimi skan etməni dərhal dayandırmaq və qoşulmanı lazımdan artıq saxlamamaq tövsiyə olunur.
Tez-tez verilən suallar
Bəli, BLE dual role dəstəkləyir: cihaz eyni anda bəzi cihazlar üçün Central, digərləri üçün Peripheral ola bilər. Məsələn, smartfon sensordan məlumat oxuyur (Central kimi) və eyni anda başqa cihaza məlumat ötürmək üçün öz xidmətini reklam edir (Peripheral kimi).
BLE spesifikasiyası bir Central üçün 7 qoşulma limiti müəyyən edir. Praktikada məhdudiyyət çip istehsalçısından asılıdır: Nordic nRF52840 çipləri 20 qoşulmaya qədər dəstəkləyir, bəzi büdcə Bluetooth adapterləri isə 3–4-dən çox dəstəkləmir.
Səbəblər müxtəlif ola bilər: sensor reklam etmir (advertising rejimində deyil), UUID filtri çox sərtdir, smartfonda Bluetooth söndürülüb, tələb olunan icazələr yoxdur (Android-də Location) və ya sensor əhatə dairəsindən kənardadır (qapalı məkanda 10 metrə qədər tövsiyə olunur).
Mütləq deyil. Bir çox ssenarilər üçün connect-and-read nümunəsi istifadə olunur: Central skan edir, qoşulur, lazımi məlumatları oxuyur və qoşulmanı kəsir. Daimi qoşulma yalnız axın məlumatları (nəbz, EKQ) və ya real vaxtda cihaz idarəsi üçün lazımdır.
Interval skan etmə istifadə edin: scan window 30–50 ms, scan interval 500–1000 ms nisbətində. Yalnız uyğun reklam paketlərini emal etmək üçün cihazları UUID-ə görə filtrləyin. Tələb olunan Peripheral aşkarlanan kimi skan etməni dərhal dayandırın.
Nəticə
Açar təslim mobil tətbiq hazırlayacağıq
IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.
Həm də oxuyun