Central — nima, BLEdagi roli va qurilmalarni qanday skanerlaydi

Muallif: IT Sectr Nashr etilgan: 2026-07-15 O'qish vaqti: 8 daq

Central — Bluetooth Low Energy arxitekturasida skanerlashni boshlaydigan, ulanishni o'rnatadigan va periferik qurilmalar bilan ma'lumot almashinuvini boshqaradigan qurilmadir. Mobil ishlanma kontekstida Central — BLE sensorlariga, fitnes trekerlariga va aqlli aksessuarlarga ulanadigan iOS yoki Android smartfon yoki planshetdir. Bluetooth Core Specification 5.4 (2023) ma'lumotlariga ko'ra, Central bir vaqtning o'zida 7 tagacha turli Peripheral bilan ulanishni qo'llab-quvvatlashi mumkin, ammo haqiqiy cheklov chip ishlab chiqaruvchisi va OT versiyasiga bog'liq. iOS-da Core Bluetooth va Android-da android.bluetooth.le Central rolini boshqarish uchun to'liq API taqdim etadi.

Asosiy fikrlar

  • Central — skanerlaydigan, ulanadigan va periferiya bilan almashinuvni boshqaradigan faol BLE qurilmasi.
  • Skanerlash reklama paketlari orqali amalga oshiriladi — Central energiya tejash uchun qurilmalarni Service UUID bo'yicha filtrlashi mumkin.
  • Bitta Central bir vaqtning o'zida turli Peripheral bilan 7 tagacha ulanishni qo'llab-quvvatlashi mumkin (amalga oshirishga bog'liq).
  • Mobil ishlanmada Central — Core Bluetooth (iOS) yoki android.bluetooth.le (Android) dan foydalanadigan smartfondir.
  • Central roli doimiy skanerlash va ma'lumotlarni qayta ishlash tufayli Peripheralga qaraganda ko'proq energiya sarflaydi.

BLEda Central nima?

Central — Bluetooth Low Energy arxitekturasidagi barcha aloqalarni boshlaydigan GATT mijozidir. Passiv ravishda ulanishni kutadigan va o'z xizmatlarini reklama qiladigan Peripheraldan farqli o'laroq, Central faol ravishda efirni skanerlaydi, reklama paketlarini aniqlaydi va ulanishni boshlaydi.

Asimmetrik Central-Peripheral modeli BLEning asosiy xususiyatidir. Central o'zaro ta'sir mantig'ini boshqaradi: qaysi qurilmaga ulanishni, qaysi xizmatlarni o'rganishni, qaysi xarakteristikalarni o'qish va yozishni hal qiladi. Peripheral ma'lumotlar serveri rolini bajaradi — xizmatlar va xarakteristikalarni saqlaydi, lekin ulanishlarni boshlamaydi.

Bluetooth Core Specification 5.4 (2023) ga ko'ra, qurilma bir vaqtning o'zida Central va Peripheral bo'lishi mumkin (dual role). Masalan, smartfon fitnes bilaguzuk uchun Central va fayl uzatadigan boshqa smartfon uchun Peripheral bo'lishi mumkin. Biroq, ikkala rolda bir vaqtda ishlash energiya sarfini va ulanishlarni boshqarish murakkabligini oshiradi.

Mobil ishlanma ekotizimida Central roli eng keng tarqalgan stsenariydir. Smartfondagi dastur BLE qurilmalarini (sensorlar, quloqchinlar, bilaguzuklar) qidiradi, ularga ulanadi va ma'lumot oladi. Dasturiy ta'minot ishlab chiqaruvchisi Central bilan ishlash uchun operatsion tizim APIidan foydalanadi: iOSda CBCentralManager, Androidda BluetoothLeScanner va BluetoothGatt.

Qurilmalarni skanerlash jarayoni

Skanerlash — Central ishining birinchi bosqichidir. Qurilma Peripheral tomonidan davriy ravishda yuboriladigan reklama paketlarini aniqlash uchun BLE radiokanallarini (37, 38, 39) tinglaydi. Har bir reklama paketi qurilma nomini, xizmat UUID ro'yxatini va foydalanuvchi ma'lumotlarini o'z ichiga oladi.

Central ikki xil skanerlash rejimida ishlashi mumkin: passive scanning (faqat reklama paketlarini qabul qilish) va active scanning (scan response orqali qo'shimcha ma'lumot olish uchun scan request yuborish). Passive scanning energiyani tejaydi, lekin kamroq ma'lumot beradi. Active scanning qurilma nomi va to'liq xizmatlar ro'yxatini o'z ichiga olgan reklama paketining to'liq ma'lumotlarini olish imkonini beradi.

UUID bo'yicha filtrlash — muhim optimallashtirishdir. Central faqat ma'lum Service UUID ga ega qurilmalarni skanerlashi mumkin, qolganlarini e'tiborsiz qoldiradi. Bu nafaqat energiyani tejaydi, balki dastur mantig'ini soddalashtiradi: delegate faqat tegishli qurilmalarni oladi.

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

Ulanishlarni boshqarish

Ulanishlarni boshqarish — Centralning asosiy vazifasidir. Tegishli Peripheral aniqlangandan so'ng, Central ulanishni boshlaydi. BLE ulanishi connection establishment protsedurasi orqali o'rnatiladi, bu parametr almashinuvini o'z ichiga oladi: connection interval, slave latency va supervision timeout.

Connection interval ulanishdan so'ng Central va Peripheral qanchalik tez-tez ma'lumot almashishini aniqlaydi. Interval 7.5 ms dan 4 sekundgacha bo'lishi mumkin. Interval qanchalik qisqa bo'lsa, o'tkazish qobiliyati shunchalik yuqori, lekin energiya sarfi ham shunchalik ko'p bo'ladi. Slave latency Peripheralga energiyani tejash uchun bir nechta ulanish hodisalarini o'tkazib yuborish imkonini beradi. Supervision timeout — javobsiz maksimal vaqt, undan keyin ulanish yo'qolgan deb hisoblanadi.

Central ma'lumot almashinuvi tugagandan so'ng ulanishni uzish uchun javobgardir. BLE qurilmalari odatda ulanishni doimiy ravishda saqlamaydi — Central ulanadi, ma'lumot oladi va uziladi. Bu IoT sensorlari uchun standart naqshdir: Central skanerlaydi, harorat sensorini topadi, ulanadi, qiymatni o'qiydi va uziladi.

ParametrDiapazonMaqsadTavsiya
Connection Interval7.5 ms – 4 sMa'lumot almashish chastotasiOqimlar uchun 30–50 ms, kam ma'lumotlar uchun 1–4 s
Slave Latency0–499 hodisaPeripheral tomonidan hodisalarni o'tkazib yuborishSensor energiyasini tejash uchun 4–10
Supervision Timeout100 ms – 32 sAloqa yo'qolishi taym-autiAksariyat stsenariylar uchun 6–10 sekund
MTU23–517 baytATT paket hajmiUlanishda maksimalni so'rang

iOSda Central: Core Bluetooth

Core Bluetooth — Apple-ning iOS va macOSda BLE bilan ishlash uchun freymvorkidir. CBCentralManager klassi Central rolini amalga oshirish uchun to'liq API taqdim etadi: skanerlash, ulanish, ulanishlarni boshqarish. iOSda Central bilan ishlash delegate modeliga asoslanadi: CBCentralManagerDelegate holat o'zgarishi, qurilmalarni aniqlash va ulanish natijalari hodisalarini oladi.

iOSda Central bilan ishlashning asosiy qadamlari: CBCentralManager ni ishga tushirish, Bluetooth holatini tekshirish, skanerlashni boshlash, aniqlangan qurilmalarni delegate orqali qayta ishlash, tanlangan Peripheralga ulanish, xizmatlar va xarakteristikalarni aniqlash, ma'lumot almashish.

swift
// Aniqlangan Peripheralga ulanish
func centralManager(
    _ central: CBCentralManager,
    didDiscover peripheral: CBPeripheral,
    advertisementData: [String: Any],
    rssi RSSI: NSNumber
) {
    // Peripheralga havolani saqlash va ulanish
    discoveredPeripheral = peripheral
    central.connect(peripheral, options: nil)
}

// Muvaffaqiyatli ulanish
func centralManager(
    _ central: CBCentralManager,
    didConnect peripheral: CBPeripheral
) {
    peripheral.delegate = self
    peripheral.discoverServices(nil)
}

iOS BLEning fon ishini cheklaydi: fon rejimida dastur faqat Info.plistdagi ma'lum kalitlar bilan skanerlashi mumkin, ulangan qurilmalar esa Centralni ma'lumot o'zgarishlari haqida xabardor qilishi mumkin. Kritik dasturlar (tibbiy qurilmalar) uchun bluetooth-central kaliti bilan Background Modes dan foydalaning.

Androidda Central: BluetoothLeScanner

Android BLE qurilmalarini skanerlash uchun BluetoothLeScanner API va ulanishlarni boshqarish uchun BluetoothGattni taqdim etadi. Android 5.0 (API 21) dan boshlab, BluetoothLeScanner eskirgan startLeScan o'rnini egalladi. API BLUETOOTH, BLUETOOTH_ADMIN va ACCESS_FINE_LOCATION (yoki Android 10+ uchun ACCESS_BACKGROUND_LOCATION) ruxsatnomalarini talab qiladi.

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

private BluetoothLeScanner scanner;
private BluetoothGatt bluetoothGatt;

// Skanerlashni sozlash
ScanSettings settings = new ScanSettings.Builder()
    .setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY)
    .build();

// Skanerlashni boshlash
scanner.startScan(null, settings, new ScanCallback() {
    @Override
    public void onScanResult(
            int callbackType,
            ScanResult result
    ) {
        BluetoothDevice device = result.getDevice();
        // Qurilmaga ulanish
        bluetoothGatt = device.connectGatt(
            context, false, gattCallback
        );
    }
});

Androidda skanerlash cheklovlarini hisobga olish muhim: Android 7 (API 24) dan boshlab, Location dan foydalanmaydigan dasturlarda skanerlash 30 sekundda 5 martadan ko'proq ishga tushirilishi mumkin emas. Android 12+ BLUETOOTH_SCAN, BLUETOOTH_CONNECT va ADVERTISE ruxsatnomalarini, shuningdek, ushbu ruxsatnomalarni runtime so'rashni talab qiladi.

Centralning energiya sarfi

Centralning energiya sarfi radiokanallarni doimiy skanerlash zarurati tufayli Peripheraldan yuqoriroqdir. Central BLE paketlari orqali ma'lumot oladi, ularni qayta ishlaydi, ulanishlarni boshqaradi va ko'pincha dastur protsessorida hisob-kitoblarni amalga oshiradi. Bluetooth SIG ma'lumotlariga ko'ra, skanerlash rejimga qarab 30 mA dan 100 mA gacha energiya sarflaydi.

Central uchun bir nechta energiya tejash strategiyalari mavjud. Interval skanerlash — eng samarali usul: Central qisqa oynalarda (scan window) uzoq pauzalar bilan (scan interval) skanerlaydi. Masalan, scan window 30 ms va scan interval 1000 ms bo'lganida, energiya sarfi uzluksiz skanerlash bilan solishtirganda 97% ga kamayadi.

Qo'shimcha optimallashtirish — UUID bo'yicha filtrlash. Central faqat tegishli reklama paketlarini qayta ishlaydi, qolganlarini e'tiborsiz qoldiradi. Bu protsessor yukini kamaytiradi va qurilmaning batareya muddatini oshiradi. Shuningdek, kerakli qurilma aniqlangandan so'ng darhol skanerlashni to'xtatish va ulanishni kerak bo'lgandan ortiq ushlab turmaslik tavsiya etiladi.

Tez-tez beriladigan savollar

Smartfon bir vaqtning o'zida Central va Peripheral bo'lishi mumkinmi?

Ha, BLE dual role ni qo'llab-quvvatlaydi: qurilma bir vaqtning o'zida ba'zi qurilmalar uchun Central va boshqalar uchun Peripheral bo'lishi mumkin. Masalan, smartfon sensordan ma'lumotlarni o'qiydi (Central sifatida) va bir vaqtning o'zida boshqa qurilmaga ma'lumot uzatish uchun o'z xizmatini reklama qiladi (Peripheral sifatida).

Central bir vaqtning o'zida nechta qurilmaga xizmat ko'rsatishi mumkin?

BLE spetsifikatsiyasi bitta Central uchun 7 ulanish cheklovini belgilaydi. Amalda, cheklov chip ishlab chiqaruvchisiga bog'liq: Nordic nRF52840 chiplari 20 tagacha ulanishni qo'llab-quvvatlaydi, ba'zi arzon Bluetooth adapterlari esa 3–4 tadan ko'pini qo'llab-quvvatlamaydi.

Nima uchun Central mening BLE sensorimni aniqlamaydi?

Sabablar turlicha bo'lishi mumkin: sensor reklama qilmaydi (advertising rejimida emas), UUID filtri juda qattiq, smartfonda Bluetooth o'chirilgan, kerakli ruxsatnomalar yo'q (Androidda Location) yoki sensor qamrov doirasidan tashqarida (yopiq xonada 10 metrgacha tavsiya etiladi).

BLE qurilmasi bilan ulanishni doimiy ushlab turish kerakmi?

Shart emas. Ko'pgina stsenariylar uchun connect-and-read naqshidan foydalaniladi: Central skanerlaydi, ulanadi, kerakli ma'lumotlarni o'qiydi va ulanishni uzadi. Doimiy ulanish faqat oqim ma'lumotlari (puls, EKG) yoki real vaqtda qurilmani boshqarish uchun kerak.

Skanerlash vaqtida Centralning energiya sarfini qanday kamaytirish mumkin?

Interval skanerlash dan foydalaning: scan window 30–50 ms va scan interval 500–1000 ms nisbatida. Faqat tegishli reklama paketlarini qayta ishlash uchun qurilmalarni UUID bo'yicha filtrlng. Kerakli Peripheral aniqlangandan so'ng darhol skanerlashni to'xtating.

Xulosa

  • Central — skanerlashni, ulanishni va ma'lumot almashinuvini boshqaradigan BLE ulanishining faol ishtirokchisi.
  • Skanerlash jarayoni Service UUID bo'yicha filtrlash imkoniyati bilan 37, 38, 39 kanallarida reklama paketlarini qabul qilishni o'z ichiga oladi.
  • Peripheral aniqlangandan so'ng, Central sozlanishi mumkin bo'lgan parametrlar bilan ulanishni o'rnatadi — connection interval, slave latency, supervision timeout.
  • Mobil ishlanmada Central CBCentralManager (iOS) yoki BluetoothLeScanner + BluetoothGatt (Android) orqali amalga oshiriladi.
  • Bitta Central standart Bluetooth konfiguratsiyasida bir vaqtning o'zida 7 tagacha ulanishni boshqarishi mumkin.
  • Centralning energiya sarfini interval skanerlash va UUID filtrlash orqali batareya muddatini oshirish uchun optimallashtirish mumkin.
  • Ulanishning hayot aylanishini to'g'ri boshqarish — aniqlashdan uzilishgacha — BLE dasturining samaradorligini belgilaydi.

Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz

IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.

Loyihani muhokama qilish

Shuningdek o'qing