Central — چیست، نقش در BLE و چگونه دستگاه‌ها را اسکن می‌کند

نویسنده: IT Sectr منتشر شده: 2026-07-15 زمان مطالعه: 8 دقیقه

Central — دستگاهی در معماری Bluetooth Low Energy است که اسکن را آغاز می‌کند، اتصال برقرار می‌کند و تبادل داده با دستگاه‌های جانبی را مدیریت می‌کند. در زمینه توسعه موبایل، Central یک گوشی هوشمند یا تبلت iOS یا Android است که به سنسورهای BLE، ردیاب‌های تناسب اندام و اکسسوری‌های هوشمند متصل می‌شود. طبق Bluetooth Core Specification 5.4 (2023)، Central می‌تواند همزمان تا 7 اتصال به Peripheralهای مختلف پشتیبانی کند، اگرچه محدودیت واقعی به سازنده تراشه و نسخه سیستم عامل بستگی دارد. Core Bluetooth در iOS و android.bluetooth.le در Android API کاملی برای مدیریت نقش Central ارائه می‌دهند.

نکات اصلی

  • Central — دستگاه فعال BLE که اسکن می‌کند، متصل می‌شود و تبادل با جانبی‌ها را مدیریت می‌کند.
  • اسکن از طریق بسته‌های تبلیغاتی انجام می‌شود — Central می‌تواند دستگاه‌ها را بر اساس Service UUID برای صرفه‌جویی در انرژی فیلتر کند.
  • یک Central می‌تواند همزمان تا 7 اتصال با Peripheralهای مختلف پشتیبانی کند (بستگی به پیاده‌سازی دارد).
  • در توسعه موبایل، Central یک گوشی هوشمند است که از Core Bluetooth (iOS) یا android.bluetooth.le (Android) استفاده می‌کند.
  • نقش Central به دلیل اسکن مداوم و پردازش داده، انرژی بیشتری نسبت به Peripheral مصرف می‌کند.

Central در BLE چیست؟

Central — یک کلاینت GATT در معماری Bluetooth Low Energy است که تمام ارتباطات را آغاز می‌کند. برخلاف Peripheral که به صورت غیرفعال منتظر اتصال می‌ماند و سرویس‌های خود را تبلیغ می‌کند، Central به طور فعال کانال را اسکن می‌کند، بسته‌های تبلیغاتی را شناسایی می‌کند و اتصال را آغاز می‌کند.

مدل نامتقارن Central-Peripheral یک ویژگی اساسی BLE است. Central منطق تعامل را مدیریت می‌کند: تصمیم می‌گیرد به کدام دستگاه متصل شود، کدام سرویس‌ها را بررسی کند، کدام ویژگی‌ها را بخواند و بنویسد. Peripheral نقش سرور داده را ایفا می‌کند — سرویس‌ها و ویژگی‌ها را ذخیره می‌کند، اما اتصال را آغاز نمی‌کند.

طبق Bluetooth Core Specification 5.4 (2023)، یک دستگاه می‌تواند همزمان Central و Peripheral باشد (dual role). به عنوان مثال، گوشی هوشمند می‌تواند برای دستبند تناسب اندام Central و برای گوشی دیگری که فایل ارسال می‌کند Peripheral باشد. با این حال، کار همزمان در هر دو نقش مصرف انرژی و پیچیدگی مدیریت اتصال را افزایش می‌دهد.

در اکوسیستم توسعه موبایل، نقش Central رایج‌ترین سناریو است. برنامه روی گوشی هوشمند به دنبال دستگاه‌های BLE (سنسورها، هدفون‌ها، دستبندها) می‌گردد، به آنها متصل می‌شود و داده دریافت می‌کند. توسعه‌دهنده از API سیستم عامل برای کار با Central استفاده می‌کند: CBCentralManager در iOS، BluetoothLeScanner و BluetoothGatt در Android.

فرآیند اسکن دستگاه‌ها

اسکن — اولین مرحله کار Central است. دستگاه کانال‌های رادیویی BLE (37، 38، 39) را برای شناسایی بسته‌های تبلیغاتی که Peripheral به صورت دوره‌ای ارسال می‌کند، گوش می‌دهد. هر بسته تبلیغاتی شامل نام دستگاه، لیست UUID سرویس‌ها و داده‌های کاربر است.

Central می‌تواند در دو حالت اسکن کار کند: passive scanning (فقط دریافت بسته‌های تبلیغاتی) و active scanning (ارسال scan request برای دریافت داده‌های اضافی از طریق scan response). Passive scanning در انرژی صرفه‌جویی می‌کند اما اطلاعات کمتری می‌دهد. Active scanning امکان دریافت کامل داده‌های بسته تبلیغاتی از جمله نام دستگاه و لیست کامل سرویس‌ها را فراهم می‌کند.

فیلتر کردن بر اساس UUID — یک بهینه‌سازی مهم است. Central می‌تواند فقط دستگاه‌های دارای Service UUID مشخص را اسکن کند و بقیه را نادیده بگیرد. این نه تنها در انرژی صرفه‌جویی می‌کند، بلکه منطق برنامه را ساده‌تر می‌کند: delegate فقط دستگاه‌های مرتبط را دریافت می‌کند.

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

مدیریت اتصال‌ها

مدیریت اتصال‌ها — وظیفه اصلی Central است. پس از شناسایی Peripheral مناسب، Central اتصال را آغاز می‌کند. اتصال BLE از طریق فرآیند برقراری اتصال (connection establishment) برقرار می‌شود که شامل تبادل پارامترها است: connection interval، slave latency و supervision timeout.

Connection interval تعیین می‌کند که Central و Peripheral پس از اتصال چند وقت یکبار داده تبادل کنند. فاصله می‌تواند از 7.5 میلی‌ثانیه تا 4 ثانیه باشد. هرچه فاصله کوتاه‌تر باشد، پهنای باند بیشتر است اما مصرف انرژی نیز بیشتر است. Slave latency به Peripheral اجازه می‌دهد برای صرفه‌جویی در انرژی، چند رویداد اتصال را نادیده بگیرد. Supervision timeout — حداکثر زمان بدون پاسخ، پس از آن اتصال قطع شده تلقی می‌شود.

Central مسئول قطع اتصال پس از اتمام تبادل داده است. دستگاه‌های BLE معمولاً اتصال را دائمی نگه نمی‌دارند — Central متصل می‌شود، داده را دریافت می‌کند و قطع می‌کند. این یک الگوی استاندارد برای سنسورهای IoT است: Central اسکن می‌کند، سنسور دما را پیدا می‌کند، متصل می‌شود، مقدار را می‌خواند و قطع می‌کند.

پارامترمحدودههدفتوصیه
Connection Interval7.5 ms – 4 sفرکانس تبادل داده30–50 ms برای جریان‌ها، 1–4 s برای داده‌های نادر
Slave Latency0–499 رویدادنادیده گرفتن رویدادها توسط Peripheral4–10 برای صرفه‌جویی در انرژی سنسور
Supervision Timeout100 ms – 32 sمهلت قطع ارتباط6–10 ثانیه برای بیشتر سناریوها
MTU23–517 بایتاندازه بسته ATTدرخواست حداکثر در زمان اتصال

Central در iOS: Core Bluetooth

Core Bluetooth — فریمورک Apple برای کار با BLE در iOS و macOS است. کلاس CBCentralManager API کاملی برای پیاده‌سازی نقش Central فراهم می‌کند: اسکن، اتصال، مدیریت اتصال‌ها. کار با Central در iOS بر اساس مدل delegate است: CBCentralManagerDelegate رویدادهای تغییر وضعیت، شناسایی دستگاه‌ها و نتایج اتصال را دریافت می‌کند.

مراحل اصلی کار Central در iOS: مقداردهی CBCentralManager، بررسی وضعیت Bluetooth، شروع اسکن، پردازش دستگاه‌های شناسایی شده از طریق delegate، اتصال به Peripheral انتخاب شده، شناسایی سرویس‌ها و ویژگی‌ها، تبادل داده.

swift
// اتصال به Peripheral شناسایی شده
func centralManager(
    _ central: CBCentralManager,
    didDiscover peripheral: CBPeripheral,
    advertisementData: [String: Any],
    rssi RSSI: NSNumber
) {
    // نگه داشتن مرجع peripheral و اتصال
    discoveredPeripheral = peripheral
    central.connect(peripheral, options: nil)
}

// اتصال موفق
func centralManager(
    _ central: CBCentralManager,
    didConnect peripheral: CBPeripheral
) {
    peripheral.delegate = self
    peripheral.discoverServices(nil)
}

iOS کار BLE در پس‌زمینه را محدود می‌کند: در حالت پس‌زمینه، برنامه فقط با کلیدهای مشخصی در Info.plist می‌تواند اسکن کند و دستگاه‌های متصل می‌توانند Central را از تغییر داده مطلع کنند. برای برنامه‌های حیاتی (دستگاه‌های پزشکی) از Background Modes با کلید bluetooth-central استفاده کنید.

Central در Android: BluetoothLeScanner

Android API BluetoothLeScanner را برای اسکن دستگاه‌های BLE و BluetoothGatt را برای مدیریت اتصال‌ها فراهم می‌کند. از Android 5.0 (API 21)، BluetoothLeScanner جایگزین startLeScan قدیمی شده است. API به مجوزهای BLUETOOTH، BLUETOOTH_ADMIN و ACCESS_FINE_LOCATION (یا ACCESS_BACKGROUND_LOCATION برای Android 10+) نیاز دارد.

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

private BluetoothLeScanner scanner;
private BluetoothGatt bluetoothGatt;

// تنظیم اسکن
ScanSettings settings = new ScanSettings.Builder()
    .setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY)
    .build();

// شروع اسکن
scanner.startScan(null, settings, new ScanCallback() {
    @Override
    public void onScanResult(
            int callbackType,
            ScanResult result
    ) {
        BluetoothDevice device = result.getDevice();
        // اتصال به دستگاه
        bluetoothGatt = device.connectGatt(
            context, false, gattCallback
        );
    }
});

در Android باید محدودیت‌های اسکن را در نظر گرفت: از Android 7 (API 24)، اسکن نمی‌تواند بیش از 5 بار در 30 ثانیه در برنامه‌هایی که از Location استفاده نمی‌کنند راه‌اندازی شود. Android 12+ به مجوزهای BLUETOOTH_SCAN، BLUETOOTH_CONNECT و ADVERTISE و همچنین درخواست runtime این مجوزها نیاز دارد.

مصرف انرژی Central

مصرف انرژی Central به دلیل نیاز به اسکن مداوم کانال‌های رادیویی بیشتر از Peripheral است. Central داده‌ها را از طریق بسته‌های BLE دریافت می‌کند، آنها را پردازش می‌کند، اتصال‌ها را مدیریت می‌کند و اغلب محاسبات را روی پردازنده برنامه انجام می‌دهد. طبق Bluetooth SIG، اسکن بسته به حالت از 30 mA تا 100 mA مصرف می‌کند.

چندین استراتژی صرفه‌جویی در انرژی برای Central وجود دارد. اسکن بازه‌ای — مؤثرترین روش: Central در پنجره‌های کوتاه (scan window) با فواصل طولانی (scan interval) اسکن می‌کند. به عنوان مثال، با scan window 30 ms و scan interval 1000 ms مصرف انرژی در مقایسه با اسکن مداوم 97٪ کاهش می‌یابد.

بهینه‌سازی اضافی — فیلتر کردن بر اساس UUID. Central فقط بسته‌های تبلیغاتی مرتبط را سریع‌تر پردازش می‌کند و بقیه را نادیده می‌گیرد. این بار پردازنده را کاهش می‌دهد و عمر باتری دستگاه را افزایش می‌دهد. همچنین توصیه می‌شود بلافاصله پس از شناسایی دستگاه مورد نظر اسکن را متوقف کنید و اتصال را بیش از حد لازم نگه ندارید.

سوالات متداول

آیا گوشی هوشمند می‌تواند همزمان Central و Peripheral باشد؟

بله، BLE از dual role پشتیبانی می‌کند: یک دستگاه می‌تواند همزمان برای برخی دستگاه‌ها Central و برای برخی دیگر Peripheral باشد. به عنوان مثال، گوشی هوشمند داده‌ها را از سنسور می‌خواند (به عنوان Central) و همزمان سرویس خود را (به عنوان Peripheral) برای انتقال داده به دستگاه دیگر تبلیغ می‌کند.

Central می‌تواند همزمان به چند دستگاه سرویس دهد؟

مشخصات BLE محدودیت 7 اتصال را برای یک Central تعیین می‌کند. در عمل، محدودیت به سازنده تراشه بستگی دارد: تراشه‌های Nordic nRF52840 تا 20 اتصال را پشتیبانی می‌کنند و برخی آداپتورهای Bluetooth ارزان‌قیمت بیش از 3–4 اتصال را پشتیبانی نمی‌کنند.

چرا Central سنسور BLE من را شناسایی نمی‌کند؟

دلایل می‌تواند متفاوت باشد: سنسور تبلیغ نمی‌کند (در حالت advertising نیست)، فیلتر UUID بیش از حد سختگیرانه است، بلوتوث در گوشی خاموش است، مجوزهای لازم وجود ندارد (Location در Android) یا سنسور خارج از محدوده است (تا 10 متر در داخل ساختمان توصیه می‌شود).

آیا لازم است اتصال با دستگاه BLE را دائمی نگه داشت؟

نه لزوماً. برای بسیاری از سناریوها از الگوی connect-and-read استفاده می‌شود: Central اسکن می‌کند، متصل می‌شود، داده‌های لازم را می‌خواند و اتصال را قطع می‌کند. اتصال دائمی فقط برای داده‌های جریانی (نبض، نوار قلب) یا کنترل بلادرنگ دستگاه لازم است.

چگونه مصرف انرژی Central را هنگام اسکن کاهش دهیم؟

از اسکن بازه‌ای با نسبت scan window 30–50 ms و scan interval 500–1000 ms استفاده کنید. دستگاه‌ها را بر اساس UUID فیلتر کنید تا فقط بسته‌های تبلیغاتی مرتبط پردازش شوند. بلافاصله پس از شناسایی Peripheral مورد نظر اسکن را متوقف کنید.

خلاصه

  • Central — شرکت‌کننده فعال اتصال BLE که اسکن، اتصال و مدیریت تبادل داده را آغاز می‌کند.
  • فرآیند اسکن شامل دریافت بسته‌های تبلیغاتی در کانال‌های 37، 38، 39 با امکان فیلتر بر اساس Service UUID است.
  • پس از شناسایی Peripheral، Central اتصال را با پارامترهای قابل تنظیم برقرار می‌کند — connection interval، slave latency، supervision timeout.
  • در توسعه موبایل، Central از طریق CBCentralManager (iOS) یا BluetoothLeScanner + BluetoothGatt (Android) پیاده‌سازی می‌شود.
  • یک Central می‌تواند همزمان تا 7 اتصال را در پیکربندی استاندارد Bluetooth مدیریت کند.
  • مصرف انرژی Central را می‌توان با اسکن بازه‌ای و فیلتر UUID برای افزایش عمر باتری بهینه کرد.
  • مدیریت صحیح چرخه عمر اتصال — از شناسایی تا قطع — کارایی برنامه BLE را تعیین می‌کند.

ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد

IT Sectr از سال 2017 برنامه‌های iOS و Android را برای استارتاپ‌ها و کسب‌وکارها ایجاد می‌کند. ما به شما مشاوره می‌دهیم و بهترین راه‌حل را پیشنهاد خواهیم کرد.

بحث درباره پروژه

همچنین بخوانید