Peripheral — ما هو، الدور في BLE وكيف يعلن عن الخدمات

المؤلف: IT Sectr نُشر: 2026-07-15 وقت القراءة: 9 دق

Peripheral هو جهاز في معمارية Bluetooth Low Energy يقوم بالإعلان عن خدماته من خلال حزم advertising وينتظر اتصالاً من Central. في نظام IoT البيئي، يكون Peripheral عادةً جهازًا ذا استهلاك محدود للطاقة: مجس درجة حرارة، مصباح ذكي، سوارة لياقة بدنية، منارة (Beacon). تحدد Bluetooth Core Specification 5.4 (2023) بروتوكول الإعلان: يرسل Peripheral بشكل دوري حزم advertising تحتوي على اسم الجهاز، قائمة الخدمات، وبيانات مخصصة، بينما يقوم Central بفحص هذه الحزم ويقرر ما إذا كان سيتصل. بعد إنشاء الاتصال، يعمل Peripheral كخادم GATT، موفرًا خدمات وخصائص للقراءة والكتابة.

النقاط الرئيسية

  • Peripheral هو جهاز BLE سلبي يقوم بالإعلان عن الخدمات وينتظر اتصالاً من Central.
  • تحتوي حزم advertising على اسم الجهاز، وأمراز الخدمات، وبيانات الشركة المصنعة، و RSSI لتقدير المسافة.
  • Peripheral يعمل ك‏خادم GATT يقوم بتخزين الخدمات والخصائص لوصول Central.
  • يمكن أن يتراوح استهلاك طاقة Peripheral من 5 µA في وضع السبات إلى 15 ملي أمبير أثناء نقل البيانات النشط.
  • بعد الاتصال، يمكن لـ Peripheral تعطيل الإعلان لتوفير الطاقة وإعادة تنشيطه عند الحاجة.

ما هو Peripheral في BLE؟

Peripheral هو جهاز BLE يقوم بتنفيذ خادم GATT ويعلن عن قدراته من خلال قنوات advertising. على عكس Central، الذي يبحث بنشاط عن الأجهزة، فإن Peripheral ينتظر بشكل سلبي الاتصالات. هذا نموذج غير متماثل محسن لكفاءة الطاقة للأجهزة التي تعمل بالبطارية.

يمكن أن يكون Peripheral في عدة أوضاع: advertising (إعلان)، connected (متصل بـ Central)، sleeping (سبات مع تعطيل الإعلان). في وضع advertising، يرسل Peripheral بشكل دوري حزم بيانات قصيرة مع استهلاك حد أدنى من الطاقة. بعد الاتصال، يتحول Peripheral إلى وضع connected، حيث يتبادل البيانات مع Central وفقًا لفاصل الاتصال المتفق عليه.

وفقًا ل‏Bluetooth Core Specification 5.4 (2023)، يمكن للجهاز التبديل بشكل ديناميكي بين دوري Peripheral و Central، ولكن في أي لحظة معينة، يكون الدور ثابتًا لاتصال واحد. سيناريو نموذجي: مجس IoT يعمل بشكل مستمر كـ Peripheral، بينما يقوم الهاتف الذكي بإدارة الاتصال كـ Central.

من المهم للمطورين فهم: يحدد Peripheral ما هي الخدمات والخصائص المتاحة ويدير الوصول إليها. تحدد بنية خادم GATT على Peripheral ما البيانات التي يمكن لـ Central قراءتها وما الأوامر التي يمكنه كتابتها.

عملية الإعلان (Advertising)

Advertising هو الآلية التي يعلن من خلالها Peripheral عن وجوده. يرسل Peripheral حزم advertising على ثلاثة قنوات مخصصة (37، 38، 39) بفاصل زمني من 20 مس إلى 10.24 ثانية. تحتوي كل حزمة advertising على معلومات ثابتة وقد تتضمن بيانات اختيارية.

هناك نوعان من حزم advertising: advertising PDU (الحزمة الرئيسية) و scan response PDU (استجابة لطلب Central). تحتوي الحزمة الرئيسية على حقول إجبارية: نوع الحزمة، عنوان المرسل، البيانات. إذا أرسل Central طلب مسح، يرد Peripheral بحزمة إضافية تحتوي على معلومات أكثر اكتمالاً — على سبيل المثال، اسم الجهاز الكامل.

تؤثر معلمات advertising على سرعة الاكتشاف واستهلاك الطاقة. Advertising interval هو الوقت بين إرسالات الحزم. كلما كان الفاصل أقصر، كلما اكتشف Central الجهاز بسرعة أكبر، ولكن يستهلك Peripheral طاقة أكثر. الفاصل الموصى به: 100–1000 مس لمعظم الأجهزة.

المعلمةالنطاقالتأثيرالتوصية
Advertising Interval20 ms – 10.24 sسرعة الاكتشاف، الطاقة100–1000 مس للتوازن
Advertising Channels37, 38, 39موثوقية الاكتشافالقنوات الثلاثة مطلوبة
Tx Power-20 – +10 dBmالمدى، التداخل0 dBm داخليًا، +4 dBm خارجيًا
Advertising Timeout0 – 180 ثانيةمدة الإعلان0 (لانهائي) للمنارات

بنية حزمة الإعلان

حزمة الإعلان BLE لها حد أقصى قدره 31 بايت لـ advertising PDU و 31 بايت إضافية لـ scan response. داخل الحزمة، يتم تنظيم البيانات بتنسيق AD Structure (Advertising Data Structure): كل حقل له نوع (1 بايت)، طول (1 بايت)، وقيمة.

أنواع AD الأكثر شيوعًا: Flags (0x01) — أوضاع الاتصال والاكتشاف، Local Name (0x08 أو 0x09) — اسم الجهاز، Service UUID List (0x02–0x07) — قائمة أمراز الخدمات، Manufacturer Specific Data (0xFF) — بيانات الشركة المصنعة. يعد تعبئة البيانات بشكل صحيح في حزمة 31 بايت مهمة مهمة لمطوري الأجهزة المضمنة.

بالنسبة للأجهزة التي تحتاج إلى نقل المزيد من البيانات، extended advertising (BLE 5.0+) يزيد حجم حزمة الإعلان إلى 251 بايت ويضيف أنواعًا جديدة من الحزم. يدعم extended advertising أيضًا قنوات PHY المشفرة لزيادة المدى إلى 1 كم في المناطق المفتوحة.

عند تصميم حزمة إعلان، ضع في الاعتبار: كلما زادت البيانات في حزمة advertising، زادت احتمالية التصادم مع الأجهزة الأخرى. للاكتشاف السريع، يوصى بوضع البيانات الحرجة (Service UUID) فقط في advertising PDU، والبيانات الإضافية في scan response.

Peripheral كخادم GATT

خادم GATT على Peripheral يحتوي على جميع الخدمات والخصائص التي يمكن لـ Central اكتشافها والتفاعل معها. بعد الاتصال، يكتشف Central الخدمات، ثم الخصائص، ويتفاعل معها من خلال بروتوكول GATT.

Peripheral كخادم GATT يجب أن يعالج بشكل صحيح طلبات Central: طلبات القراءة، طلبات الكتابة، الإشعارات، والتأكيدات. يمر كل طلب عبر جدول GATT، حيث يتوافق كل سمة (خدمة، خاصية، واصف) مع Handle — عنوان 16 بت.

يحدد مطور Peripheral أصلاحيات الوصول لكل سمة: قراءة فقط، كتابة فقط، قراءة وكتابة، بالتشفير أو بدونه. للبيانات الحساسة (المعلومات الشخصية، المؤشرات الطبية)، يوصى بتمكين متطلبات التشفير من خلال MITM Protection.

Peripheral في iOS: CBPeripheralManager

CBPeripheralManager هو فئة Core Bluetooth لتنفيذ دور Peripheral في iOS. يدير خادم GATT، ينشر الخدمات والخصائص، ويعالج طلبات Centrals. على عكس CBCentralManager، لا يقوم CBPeripheralManager بالمسح — هو يعلن فقط ويدير الاتصالات.

الخطوات الرئيسية لتنفيذ Peripheral على iOS: تهيئة CBPeripheralManager، إضافة الخدمات عبر add، بدء الإعلان عبر startAdvertising، معالجة طلبات Centrals من خلال المفوض CBPeripheralManagerDelegate.

swift
import CoreBluetooth

class BLEPeripheralManager: NSObject, CBPeripheralManagerDelegate {

    private var peripheralManager: CBPeripheralManager!

    func startAdvertising() {
        let advertisementData: [String: Any] = [
            CBAdvertisementDataLocalNameKey: "BLE Sensor",
            CBAdvertisementDataServiceUUIDsKey: [
                CBUUID("180F")
            ]
        ]
        peripheralManager.startAdvertising(advertisementData)
    }

    func peripheralManagerDidUpdateState(
        _ peripheral: CBPeripheralManager
    ) {
        if peripheral.state == .poweredOn {
            startAdvertising()
        }
    }
}

يسمح iOS لـ Peripheral بالعمل في الخلفية مع مفتاح bluetooth-peripheral في Background Modes. في الخلفية، يمكن لـ iOS الإعلان بمجموعة محدودة من البيانات وخدمة الاتصالات. للإعلان الممتد (أكثر من 180 ثانية)، استخدم خيار CBAdvertisementDataWaitForResponseFromCentral لتوفير الطاقة.

Peripheral في Android: BluetoothLeAdvertiser

Android يوفر BluetoothLeAdvertiser للعمل في دور Peripheral (منذ API 21). تسمح واجهة البرمجة ببدء الإعلان بمعلمات قابلة للتكوين: قوة الإرسال، فاصل الإعلان، بيانات الحزمة. يدعم Android أيضًا extended advertising (BLE 5.0) على الأجهزة المتوافقة.

java
import android.bluetooth.le.*;

private BluetoothLeAdvertiser advertiser;

public void startPeripheral() {
    BluetoothAdapter adapter =
        BluetoothAdapter.getDefaultAdapter();
    advertiser = adapter.getBluetoothLeAdvertiser();

    AdvertiseData data = new AdvertiseData.Builder()
        .setIncludeDeviceName(true)
        .addServiceUuid(
            new ParcelUuid(
                UUID.fromString("0000180F-0000-1000-8000-00805F9B34FB")
            )
        )
        .build();

    AdvertiseSettings settings = new AdvertiseSettings.Builder()
        .setAdvertiseMode(AdvertiseSettings.ADVERTISE_MODE_LOW_POWER)
        .setTxPowerLevel(AdvertiseSettings.ADVERTISE_TX_POWER_MEDIUM)
        .build();

    advertiser.startAdvertising(
        settings, data, advertiseCallback
    );
}

في Android، يعتمد دعم Peripheral على الشركة المصنعة ونسخة نظام التشغيل. لا تدعم جميع الأجهزة BluetoothLeAdvertiser — تحقق عبر adapter.isMultipleAdvertisementSupported(). بدءًا من Android 10، يتطلب دور Peripheral إذن BLUETOOTH_ADVERTISE، بالإضافة إلى طلب وقت التشغيل للتطبيقات ذات target SDK 31+.

كفاءة استهلاك الطاقة لـ Peripheral

كفاءة الطاقة هي ميزة رئيسية لـ BLE، ويلعب Peripheral دورًا رئيسيًا في هذا. يمكن للجهاز العمل على بطارية CR2032 (220 ملي أمبير ساعة) لأكثر من عام بفضل استهلاك الطاقة المحسن. يمضي Peripheral معظم الوقت في وضع السبات مع تعطيل الإعلان، مستيقظًا فقط لإرسال حزمة إعلان أو معالجة طلب من Central.

استهلاك الطاقة لـ Peripheral في الأوضاع المختلفة: وضع السبات (نوم عميق) — 1–5 µA، خامل مع تمكين المؤقت — 10–50 µA، advertising — 5–15 ملي أمبير (أثناء إرسال الحزمة)، connected — 5–10 ملي أمبير (أثناء حدث الاتصال). مع فاصل advertising قدره 1000 مس ومدة الحزمة 4 مس، يبلغ متوسط التيار حوالي 50–100 µA.

وفقًا ل‏Texas Instruments Application Report (SWRA478, 2024)، يقوم تحسين فاصل advertising من 100 مس إلى 1000 مس بخفض متوسط استهلاك الطاقة بنسبة 90%. يتم تحقيق توفير إضافي من خلال slave latency (تخطي أحداث الاتصال)، تقليل Tx Power على المسافات القصيرة، وتعطيل الإعلان بعد الاتصال (connectable advertising).

الأسئلة الشائعة

هل يمكن لـ Peripheral بدء إرسال البيانات؟

نعم، من خلال آلية الإشعارات/التأكيدات. على الرغم من أن Central هو دائمًا بادئ الاتصال، بعد الاتصال يمكن لـ Peripheral إرسال البيانات عبر إشعارات GATT دون طلب صريح من Central. للقيام بذلك، يجب على Central الاشتراك مسبقًا عبر CCCD.

ما مدة يمكن لـ Peripheral الإعلان؟

مدة الإعلان غير محدودة بالمواصفات، ولكن في الممارسة تكون محدودة ب‏طاقة البطارية. في iOS، يمكن لـ Peripheral الإعلان في الخلفية لمدة لا تتجاوز 180 ثانية لكل جلسة دون إعدادات إضافية. في Android، يمكن للإعلان العمل لفترة غير محدودة، ولكنه يقلل عمر البطارية بشكل كبير.

كيف تقليل استهلاك طاقة Peripheral دون فقدان الوظائف؟

زد من فاصل advertising (موصى به 500–1000 مس)، استخدم slave latency لتخطي أحداث الاتصال، عطل الإعلان بعد الاتصال واختر أدنى Tx Power كافية لاتصال مستقر على المسافة المطلوبة.

ما هو non-connectable advertising ولماذا يستخدم؟

Non-connectable advertising هو وضع حيث يعلن Peripheral ولكنه لا يقبل طلبات الاتصال. يستخدم للمنارات التي تنقل البيانات فقط (على سبيل المثال، معرف المتجر) دون إنشاء اتصال ثنائي الاتجاه. يوفر الطاقة مقارنة بـ connectable advertising.

ما البيانات التي يمكن نقلها في حزمة إعلان (31 بايت)؟

يمكن ضمان 31 بايت: flags (3 بايتات)، اسم الجهاز (حتى 28 بايتًا بشكل مختصر)، قائمة أمراز الخدمات (2–16 بايتًا لكل UUID)، بيانات الشركة المصنعة (حتى 26 بايتًا). الاستراتيجية المثلى هي وضع أمراز الخدمات في advertising PDU للتصفية، والاسم الكامل في scan response.

الملخص

  • Peripheral هو خادم GATT BLE يعلن عن خدماته وينتظر اتصالاً من Central لتبادل البيانات.
  • تنتقل حزم advertising على القنوات 37، 38، 39 بفاصل من 20 مس إلى 10.24 ث وتكون محدودة بـ 31 بايتًا من البيانات.
  • Peripheral يخزن الخدمات والخصائص في جدول GATT، موفرًا لـ Central إمكانية الوصول إلى البيانات عبر القراءة والكتابة والإشعارات.
  • في iOS، يتم تنفيذ Peripheral عبر CBPeripheralManager، وفي Android عبر BluetoothLeAdvertiser مع خادم GATT.
  • يبلغ استهلاك طاقة Peripheral في وضع السبات 1–5 µA، مما يسمح له بالعمل لمدة تصل إلى عام على بطارية CR2032.
  • يمكن لتحسين فاصل advertising و slave latency تقليل استهلاك الطاقة بنسبة تصل إلى 90% دون فقدان الوظائف.
  • تحدد بنية حزمة الإعلان وتصميم خادم GATT المناسبة التوافق، سرعة الاكتشاف وكفاءة جهاز BLE.

سنقوم بتطوير تطبيق جوال جاهز

تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.

مناقشة المشروع

اقرأ أيضًا