Peripheral — Bluetooth Low Energy آرکیٹیکچر میں ایک ایسا آلہ ہے جو advertising-پیکٹ کے ذریعے اپنی خدمات کو مشتہر کرتا ہے اور Central سے کنکشن کا انتظار کرتا ہے۔ IoT ایکو سسٹم میں Peripheral — عام طور پر محدود توانائی استعمال کرنے والا آلہ ہوتا ہے: درجہ حرارت کا سینسر، سمارٹ لیمپ، فٹنس بریسلٹ، بیکن (Beacon)۔ Bluetooth Core Specification 5.4 (2023) اشتہاری پروٹوکول کی وضاحت کرتی ہے: Peripheral وقتاً فوقتاً advertising-پیکٹ بھیجتا ہے جس میں آلہ کا نام، خدمات کی فہرست اور صارف کا ڈیٹا ہوتا ہے، اور Central ان پیکٹس کو اسکین کرتا ہے اور فیصلہ کرتا ہے کہ کنیکٹ ہونا ہے یا نہیں۔ کنکشن قائم ہونے کے بعد Peripheral GATT-سرور کا کردار ادا کرتا ہے، جو پڑھنے اور لکھنے کے لیے خدمات اور خصوصیات فراہم کرتا ہے۔
اہم نکات
Peripheral — ایک BLE آلہ ہے جو GATT-سرور کو نافذ کرتا ہے اور advertising-چینلز کے ذریعے اپنی صلاحیتوں کو مشتہر کرتا ہے۔ Central کے برعکس، جو فعال طور پر آلات تلاش کرتا ہے، Peripheral غیر فعال طور پر کنکشن کا انتظار کرتا ہے۔ یہ ایک غیر متناسب ماڈل ہے، جو بیٹری سے چلنے والے آلات کی توانائی کی کارکردگی کے لیے بہتر بنایا گیا ہے۔
Peripheral کئی طریقوں میں ہو سکتا ہے: advertising (اشتہار)، connected (Central سے منسلک)، sleeping (بند اشتہار کے ساتھ نیند)۔ advertising موڈ میں Peripheral وقفے وقفے سے مختصر ڈیٹا پیکٹ بھیجتا ہے، جس میں کم سے کم توانائی استعمال ہوتی ہے۔ کنکشن کے بعد Peripheral connected موڈ میں چلا جاتا ہے، جہاں یہ متفقہ connection interval کے مطابق Central کے ساتھ ڈیٹا کا تبادلہ کرتا ہے۔
Bluetooth Core Specification 5.4 (2023) کے مطابق، آلہ Peripheral اور Central کے درمیان متحرک طور پر تبدیل ہو سکتا ہے، لیکن ہر لمحے میں ایک کنکشن کے لیے کردار مقرر ہوتا ہے۔ عام منظر نامہ: IoT-سینسر مسلسل Peripheral کے طور پر کام کرتا ہے، اور اسمارٹ فون Central کے طور پر کنکشن کا انتظام کرتا ہے۔
ڈویلپر کے لیے یہ سمجھنا ضروری ہے: Peripheral یہ طے کرتا ہے کہ کون سی خدمات اور خصوصیات دستیاب ہیں، اور ان تک رسائی کا انتظام کرتا ہے۔ Peripheral پر GATT-سرور کی ساخت یہ طے کرتی ہے کہ Central کون سا ڈیٹا پڑھ سکتا ہے اور کون سی کمانڈز لکھ سکتا ہے۔
Advertising (اشتہار) — ایک میکانزم ہے جس کے ذریعے Peripheral اپنی موجودگی کا اعلان کرتا ہے۔ Peripheral تین مخصوص چینلز (37، 38، 39) پر 20 ms سے 10.24 سیکنڈ کے وقفے سے advertising-پیکٹ بھیجتا ہے۔ ہر اشتہاری پیکٹ میں مقررہ معلومات ہوتی ہیں اور اس میں اختیاری ڈیٹا بھی شامل ہو سکتا ہے۔
اشتہاری پیکٹ کی دو اقسام ہیں: advertising PDU (بنیادی پیکٹ) اور scan response PDU (Central کی درخواست کا جواب)۔ بنیادی پیکٹ میں لازمی فیلڈز شامل ہیں: پیکٹ کی قسم، بھیجنے والے کا پتہ، ڈیٹا۔ اگر Central scan request بھیجتا ہے، تو Peripheral اضافی پیکٹ کے ساتھ مزید مکمل معلومات فراہم کرتا ہے — مثال کے طور پر، آلہ کا مکمل نام۔
advertising کے پیرامیٹرز دریافت کی رفتار اور توانائی کی کھپت کو متاثر کرتے ہیں۔ Advertising interval — پیکٹ بھیجنے کے درمیان کا وقت۔ وقفہ جتنا چھوٹا ہوگا، Central اتنی ہی تیزی سے آلہ دریافت کرے گا، لیکن Peripheral اتنی ہی زیادہ توانائی استعمال کرے گا۔ تجویز کردہ وقفہ: زیادہ تر آلات کے لیے 100–1000 ms۔
| پیرامیٹر | حدود | اثر | تجویز |
|---|---|---|---|
| Advertising Interval | 20 ms – 10.24 s | دریافت کی رفتار، توانائی | توازن کے لیے 100–1000 ms |
| Advertising Channels | 37, 38, 39 | دریافت کی بھروسے | تمام 3 چینلز لازمی |
| Tx Power | -20 – +10 dBm | حدود، مداخلت | اندرونی کے لیے 0 dBm، باہر کے لیے +4 dBm |
| Advertising Timeout | 0 – 180 سیکنڈ | اشتہار کی مدت | بیکن کے لیے 0 (لامحدود) |
BLE اشتہاری پیکٹ کی حد advertising PDU کے لیے 31 بائٹس اور scan response کے لیے مزید 31 بائٹس ہے۔ پیکٹ کے اندر ڈیٹا AD Structure (Advertising Data Structure) فارمیٹ میں منظم ہوتا ہے: ہر فیلڈ کی ایک قسم (1 بائٹ)، لمبائی (1 بائٹ) اور قدر ہوتی ہے۔
سب سے زیادہ استعمال ہونے والے AD Type: Flags (0x01) — کنکشن اور دریافت کے موڈز، Local Name (0x08 یا 0x09) — آلہ کا نام، Service UUID List (0x02–0x07) — خدمات کے UUID کی فہرست، Manufacturer Specific Data (0xFF) — کارخانہ دار کا ڈیٹا۔ 31-بائٹ پیکٹ میں ڈیٹا کی صحیح پیکنگ ایمبیڈڈ آلات کے ڈویلپر کے لیے ایک اہم کام ہے۔
جن آلات کو زیادہ ڈیٹا منتقل کرنے کی ضرورت ہوتی ہے، ان کے لیے extended advertising (BLE 5.0+) موجود ہے، جو اشتہاری پیکٹ کا سائز 251 بائٹس تک بڑھاتا ہے اور پیکٹ کی نئی اقسام شامل کرتا ہے۔ Extended advertising کوڈڈ چینلز (coded PHY) کو بھی سپورٹ کرتا ہے تاکہ کھلے میدان میں حد کو 1 کلومیٹر تک بڑھایا جا سکے۔
اشتہاری پیکٹ ڈیزائن کرتے وقت غور کریں: advertising-پیکٹ میں جتنا زیادہ ڈیٹا ہوگا، دوسرے آلات کے ساتھ تصادم کا امکان اتنا ہی زیادہ ہوگا۔ تیز رفتار دریافت کے لیے صرف اہم ڈیٹا (Service UUID) advertising PDU میں رکھنے کی سفارش کی جاتی ہے، اور اضافی ڈیٹا scan response میں۔
GATT-سرور Peripheral پر تمام خدمات اور خصوصیات پر مشتمل ہوتا ہے جنہیں Central دریافت کر سکتا ہے اور ان کے ساتھ تعامل کر سکتا ہے۔ کنکشن کے بعد Central خدمات دریافت کرتا ہے (discover services)، پھر خصوصیات (discover characteristics) اور GATT-پروٹوکول کے ذریعے ان کے ساتھ تعامل کرتا ہے۔
Peripheral بطور GATT-سرور کو Central کی درخواستوں کو صحیح طریقے سے پروسیس کرنا چاہیے: پڑھنا (read request)، لکھنا (write request)، اطلاع (notification) اور تصدیق شدہ اطلاع (indication)۔ ہر درخواست GATT-ٹیبل سے گزرتی ہے، جہاں ہر خصوصیت (خدمت، خصوصیت، ڈسکرپٹر) کے لیے Handle — 16-بٹ پتہ — ہوتا ہے۔
Peripheral کا ڈویلپر ہر خصوصیت کے لیے رسائی کے حقوق طے کرتا ہے: صرف پڑھنا، صرف لکھنا، پڑھنا اور لکھنا، خفیہ کاری کے ساتھ یا بغیر۔ حساس ڈیٹا (ذاتی معلومات، طبی اشارے) کے لیے MITM Protection کے ذریعے خفیہ کاری کی ضرورت شامل کرنے کی سفارش کی جاتی ہے۔
CBPeripheralManager — iOS پر Peripheral کردار کو نافذ کرنے کے لیے Core Bluetooth کی کلاس۔ یہ GATT-سرور کا انتظام کرتی ہے، خدمات اور خصوصیات کو شائع کرتی ہے، Central کی درخواستوں کو پروسیس کرتی ہے۔ CBCentralManager کے برعکس، CBPeripheralManager اسکین نہیں کرتا — یہ صرف اشتہار دیتا ہے اور کنکشنز کو سنبھالتا ہے۔
iOS پر Peripheral کو نافذ کرنے کے بنیادی اقدامات: CBPeripheralManager کو انیشیالائز کریں، add کے ذریعے خدمات شامل کریں، startAdvertising کے ذریعے اشتہار شروع کریں، CBPeripheralManagerDelegate ڈیلیگیٹ کے ذریعے Central کی درخواستوں کو پروسیس کریں۔
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 کو بیک گراؤنڈ موڈ میں کام کرنے کی اجازت دیتا ہے اگر Background Modes میں bluetooth-peripheral کلید موجود ہو۔ بیک گراؤنڈ میں iOS محدود ڈیٹا سیٹ کے ساتھ اشتہار دے سکتا ہے اور کنکشنز کو سنبھال سکتا ہے۔ طویل اشتہار (180 سیکنڈ سے زیادہ) کے لیے توانائی بچانے کے لیے CBAdvertisementDataWaitForResponseFromCentral آپشن استعمال کریں۔
Android Peripheral کردار میں کام کرنے کے لیے BluetoothLeAdvertiser فراہم کرتا ہے (API 21 سے شروع)۔ API حسب ضرورت پیرامیٹرز کے ساتھ اشتہار شروع کرنے کی اجازت دیتا ہے: ٹرانسمیٹر پاور، اشتہار کا وقفہ، پیکٹ کا ڈیٹا۔ Android مطابقت پذیر آلات پر extended advertising (BLE 5.0) کو بھی سپورٹ کرتا ہے۔
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 کی سپورٹ کارخانہ دار اور OS ورژن پر منحصر ہے۔ تمام آلات BluetoothLeAdvertiser کو سپورٹ نہیں کرتے — adapter.isMultipleAdvertisementSupported() کے ذریعے چیک کریں۔ Android 10 سے شروع کرتے ہوئے، Peripheral کردار میں کام کرنے کے لیے BLUETOOTH_ADVERTISE اجازت درکار ہے، نیز target SDK 31+ والی ایپلیکیشنز کے لیے runtime-درخواست بھی۔
توانائی کی کارکردگی — BLE کا اہم فائدہ ہے، اور Peripheral اس میں مرکزی کردار ادا کرتا ہے۔ آلہ CR2032 بیٹری (220 mAh) سے بہتر توانائی کی کھپت کی بدولت ایک سال سے زیادہ کام کر سکتا ہے۔ زیادہ تر وقت Peripheral بند اشتہار کے ساتھ نیند کی حالت میں گزارتا ہے، صرف اشتہاری پیکٹ بھیجنے یا Central کی درخواست پر کارروائی کرنے کے لیے جاگتا ہے۔
مختلف طریقوں میں Peripheral کی توانائی کی کھپت: گہری نیند (deep sleep) — 1–5 µA، ٹائمر کے ساتھ idle — 10–50 µA، advertising — 5–15 mA (پیکٹ بھیجنے کے وقت)، connected — 5–10 mA (connection event کے وقت)۔ 1000 ms کے advertising interval اور 4 ms کے پیکٹ کی مدت کے ساتھ، اوسط کرنٹ تقریباً 50–100 µA ہوتا ہے۔
Texas Instruments Application Report (SWRA478, 2024) کے مطابق، advertising interval کو 100 ms سے 1000 ms تک بہتر بنانے سے اوسط توانائی کی کھپت 90% کم ہو جاتی ہے۔ اضافی بچت slave latency (connection events کو چھوڑنا)، کم فاصلوں پر Tx Power کم کرنے اور کنکشن کے بعد اشتہار بند کرنے (connectable advertising) سے حاصل ہوتی ہے۔
اکثر پوچھے گئے سوالات
ہاں، اطلاعات (Notify/Indicate) کے میکانزم کے ذریعے۔ اگرچہ کنکشن کا آغاز کنندہ ہمیشہ Central ہوتا ہے، کنکشن کے بعد Peripheral Central سے واضح درخواست کے بغیر GATT-اطلاعات کے ذریعے ڈیٹا بھیج سکتا ہے۔ اس کے لیے Central کو پہلے سے CCCD کے ذریعے سبسکرائب کرنا ضروری ہے۔
اشتہار کی مدت تصریح کے ذریعے محدود نہیں ہے، لیکن عملی طور پر بیٹری کی توانائی سے محدود ہے۔ iOS میں Peripheral اضافی ترتیبات کے بغیر بیک گراؤنڈ میں فی سیشن زیادہ سے زیادہ 180 سیکنڈ تک اشتہار دے سکتا ہے۔ Android پر اشتہار لامحدود طور پر کام کر سکتا ہے، لیکن بیٹری کی زندگی کو نمایاں طور پر کم کرتا ہے۔
Advertising interval بڑھائیں (تجویز کردہ 500–1000 ms)، connection events کو چھوڑنے کے لیے slave latency استعمال کریں، کنکشن کے بعد اشتہار بند کریں اور مطلوبہ فاصلے پر مستحکم کنکشن کے لیے کم سے کم Tx Power منتخب کریں۔
Non-connectable advertising — ایک موڈ جس میں Peripheral اشتہار دیتا ہے لیکن کنکشن کی درخواستیں قبول نہیں کرتا۔ یہ بیکن (Beacon) کے لیے استعمال ہوتا ہے، جو دو طرفہ کنکشن قائم کیے بغیر صرف ڈیٹا منتقل کرتے ہیں (مثال کے طور پر، اسٹور کا شناخت کنندہ)۔ connectable advertising کے مقابلے میں توانائی بچاتا ہے۔
31 بائٹس میں شامل کیا جا سکتا ہے: فلیگ (3 بائٹس)، آلہ کا نام (مختصر شکل میں 28 بائٹس تک)، خدمات کے UUID کی فہرست (2–16 بائٹس فی UUID)، کارخانہ دار کا ڈیٹا (26 بائٹس تک)۔ بہترین حکمت عملی — فلٹرنگ کے لیے advertising PDU میں خدمات کے UUID رکھنا، اور مکمل نام scan response میں۔
خلاصہ
ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے
IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔
مزید پڑھیں