Central هو جهاز في بنية Bluetooth Low Energy يبدأ المسح، ويؤسس اتصالاً، ويدير تبادل البيانات مع الأجهزة الطرفية. في سياق تطوير الأجهزة المحمولة، Central هو هاتف ذكي أو جهاز لوحي يعمل بنظام iOS أو Android يتصل بأجهزة استشعار BLE وأجهزة تتبع اللياقة البدنية والإكسسوارات الذكية. وفقاً لـ Bluetooth Core Specification 5.4 (2023)، يمكن لـ Central دعم ما يصل إلى 7 اتصالات متزامنة مع أجهزة Peripheral مختلفة، على الرغم من أن الحد الفعلي يعتمد على الشركة المصنعة للشريحة وإصدار نظام التشغيل. يوفر Core Bluetooth على iOS و android.bluetooth.le على Android واجهة برمجة تطبيقات كاملة لإدارة دور Central.
الخلاصة
Central هو عميل GATT في بنية Bluetooth Low Energy الذي يبدأ جميع الاتصالات. على عكس Peripheral الذي ينتظر الاتصالات بشكل سلبي ويعلن عن خدماته، يقوم Central بمسح الأثير بنشاط واكتشاف حزم الإعلان وبدء الاتصالات.
النموذج غير المتماثل Central-Peripheral هو سمة أساسية لـ BLE. يدير Central منطق التفاعل: يقرر أي جهاز يتصل به، وأي الخدمات يستكشف، وأي الخصائص يقرأ ويكتب. Peripheral يعمل كخادم بيانات — يخزن الخدمات والخصائص لكنه لا يبدأ الاتصالات.
وفقاً Bluetooth Core Specification 5.4 (2023)، يمكن للجهاز أن يكون Central و Peripheral في نفس الوقت (دور مزدوج). على سبيل المثال، يمكن للهاتف الذكي أن يكون Central لسوار اللياقة البدنية و Peripheral لهاتف ذكي آخر ينقل الملفات. ومع ذلك، فإن التشغيل المتزامن في كلا الدورين يزيد من استهلاك الطاقة وتعقيد إدارة الاتصالات.
في نظام تطوير الأجهزة المحمولة، دور Central هو السيناريو الأكثر شيوعاً. تطبيق على الهاتف الذكي يبحث عن أجهزة BLE (أجهزة استشعار، سماعات، أساور)، يتصل بها ويستقبل البيانات. يستخدم المطور واجهة برمجة تطبيقات نظام التشغيل للعمل مع Central: CBCentralManager على iOS، BluetoothLeScanner و BluetoothGatt على Android.
المسح هو المرحلة الأولى من عمل Central. يستمع الجهاز على قنوات الراديو BLE (37، 38، 39) لاكتشاف حزم الإعلان التي ترسلها الأجهزة الطرفية بشكل دوري. تحتوي كل حزمة إعلان على اسم الجهاز وقائمة UUIDات الخدمة والبيانات المخصصة.
يمكن لـ Central العمل في وضعي مسح: المسح السلبي (استقبال حزم الإعلان فقط) والمسح النشط (إرسال طلب مسح للحصول على بيانات إضافية عبر استجابة المسح). المسح السلبي يوفر الطاقة لكنه يعطي معلومات أقل. المسح النشط يسمح بالحصول على بيانات كاملة لحزمة الإعلان، بما في ذلك اسم الجهاز وقائمة الخدمات الكاملة.
التصفية بواسطة UUID هي تحسين مهم. يمكن لـ Central مسح الأجهزة ذات UUID خدمة محدد فقط، متجاهلاً الباقي. هذا لا يوفر الطاقة فحسب، بل يبسط أيضاً منطق التطبيق: يتلقى المفوض الأجهزة ذات الصلة فقط.
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 من خلال إجراء إنشاء الاتصال الذي يتضمن تبادل المعلمات: فاصل الاتصال، وزمن استجابة التابع، ومهلة الإشراف.
يحدد فاصل الاتصال مدى تكرار تبادل البيانات بين Central و Peripheral بعد الاتصال. يمكن أن يتراوح الفاصل من 7.5 مللي ثانية إلى 4 ثوانٍ. كلما كان الفاصل أقصر، زادت الإنتاجية، ولكن زاد استهلاك الطاقة أيضاً. زمن استجابة التابع يسمح لـ Peripheral بتخطي عدة أحداث اتصال لتوفير الطاقة. مهلة الإشراف هي أقصى وقت دون استجابة وبعدها يعتبر الاتصال مفقوداً.
Central مسؤول عن إنهاء الاتصال بعد اكتمال تبادل البيانات. عادة لا تحافظ أجهزة BLE على اتصال دائم — يتصل Central ويحصل على البيانات وينقطع. هذا نمط قياسي لأجهزة استشعار إنترنت الأشياء: يمسح Central ويجد مستشعر درجة حرارة ويتصل ويقرأ القيمة وينقطع.
| المعلمة | النطاق | الغرض | التوصية |
|---|---|---|---|
| فاصل الاتصال | 7.5 مللي ثانية – 4 ثوانٍ | تردد تبادل البيانات | 30–50 مللي ثانية للبث، 1–4 ثوانٍ للبيانات النادرة |
| زمن استجابة التابع | 0–499 حدثاً | تخطي أحداث Peripheral | 4–10 لتوفير طاقة المستشعر |
| مهلة الإشراف | 100 مللي ثانية – 32 ثانية | مهلة فقدان الاتصال | 6–10 ثوانٍ لمعظم السيناريوهات |
| MTU | 23–517 بايت | حجم حزمة ATT | طلب الحد الأقصى عند الاتصال |
Core Bluetooth هو إطار عمل Apple للعمل مع BLE على iOS و macOS. توفر فئة CBCentralManager واجهة برمجة تطبيقات كاملة لتنفيذ دور Central: المسح والاتصال وإدارة الاتصالات. يعتمد العمل مع Central على iOS على نموذج المفوض: يتلقى CBCentralManagerDelegate أحداث تغيير الحالة واكتشاف الأجهزة ونتائج الاتصال.
الخطوات الرئيسية لـ Central على iOS: تهيئة CBCentralManager، التحقق من حالة Bluetooth، بدء المسح، معالجة الأجهزة المكتشفة عبر المفوض، الاتصال بـ Peripheral المحدد، اكتشاف الخدمات والخصائص، تبادل البيانات.
// الاتصال بـ 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 بتغييرات البيانات. للتطبيقات الحرجة (الأجهزة الطبية)، استخدم أوضاع الخلفية مع مفتاح bluetooth-central.
Android يوفر واجهة برمجة تطبيقات BluetoothLeScanner لمسح أجهزة BLE و BluetoothGatt لإدارة الاتصالات. ابتداءً من Android 5.0 (API 21)، حل BluetoothLeScanner محل startLeScan القديم. تتطلب واجهة برمجة التطبيقات أذونات BLUETOOTH و BLUETOOTH_ADMIN و ACCESS_FINE_LOCATION (أو ACCESS_BACKGROUND_LOCATION لنظام Android 10+).
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 ثانية في التطبيقات التي لا تستخدم الموقع. يتطلب Android 12+ أذونات BLUETOOTH_SCAN و BLUETOOTH_CONNECT و ADVERTISE، بالإضافة إلى طلبات وقت التشغيل لهذه الأذونات.
استهلاك الطاقة لـ Central أعلى من Peripheral بسبب الحاجة إلى مسح قنوات الراديو باستمرار. يستقبل Central حزم BLE ويعالجها ويدير الاتصالات وغالباً ما يقوم بعمليات حسابية على معالج التطبيق. وفقاً لـ Bluetooth SIG، يستهلك المسح من 30 مللي أمبير إلى 100 مللي أمبير حسب الوضع.
هناك العديد من استراتيجيات توفير الطاقة لـ Central. المسح المتقطع هو الطريقة الأكثر فعالية: يمسح Central بنوافذ قصيرة (نافذة المسح) مع فترات توقف طويلة (فاصل المسح). على سبيل المثال، مع نافذة مسح 30 مللي ثانية وفاصل مسح 1000 مللي ثانية، ينخفض استهلاك الطاقة بنسبة 97% مقارنة بالمسح المستمر.
تحسين إضافي هو التصفية بواسطة UUID. يعالج Central حزم الإعلان ذات الصلة فقط بشكل أسرع، متجاهلاً الباقي. هذا يقلل من حمل المعالج ويزيد من عمر بطارية الجهاز. يُوصى أيضاً بإيقاف المسح فوراً بعد العثور على الجهاز المطلوب وعدم الاحتفاظ بالاتصال لفترة أطول من اللازم.
الأسئلة الشائعة
نعم، يدعم BLE الدور المزدوج: يمكن للجهاز أن يكون Central لبعض الأجهزة و Peripheral لأخرى في نفس الوقت. على سبيل المثال، يقرأ الهاتف الذكي البيانات من مستشعر (كـ Central) ويعلن في نفس الوقت عن خدمته الخاصة (كـ Peripheral) لنقل البيانات إلى جهاز آخر.
تحدد مواصفات BLE حداً أقصى 7 اتصالات لـ Central واحد. عملياً، يعتمد الحد على الشركة المصنعة للشريحة: تدعم شرائح Nordic nRF52840 ما يصل إلى 20 اتصالاً، بينما لا تدعم بعض محولات Bluetooth الرخيصة أكثر من 3–4.
قد تكون الأسباب مختلفة: المستشعر لا يعلن (ليس في وضع الإعلان)، مرشح UUID صارم جداً، Bluetooth مغلق على الهاتف الذكي، الأذونات اللازمة مفقودة (الموقع على Android)، أو المستشعر خارج النطاق (يُوصى بما يصل إلى 10 أمتار داخل المباني).
ليس بالضرورة. للعديد من السيناريوهات، يُستخدم نمط اتصل واقرأ: يمسح Central ويتصل ويقرأ البيانات اللازمة وينقطع. الاتصال المستمر ضروري فقط للبيانات المتدفقة (النبض، مخطط كهربية القلب) أو التحكم في الجهاز في الوقت الفعلي.
استخدم المسح المتقطع مع نافذة مسح 30–50 مللي ثانية وفاصل مسح 500–1000 مللي ثانية. قم بتصفية الأجهزة حسب UUID لمعالجة حزم الإعلان ذات الصلة فقط. أوقف المسح فوراً بعد العثور على Peripheral المطلوب.
الملخص
سنقوم بتطوير تطبيق جوال جاهز
تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.