Peripheral ब्लूटूथ लॉ एनर्जी आर्किटेक्चर में एक उपकरण है जो 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 कनेक्टड मोड में चला जाता है, जहां यह बातचीत किए गए कनेक्शन इंटरवल के अनुसार Central के साथ डेटा का आदान-प्रदान करता है।
Bluetooth Core Specification 5.4 (2023) के अनुसार, एक उपकरण Peripheral और Central के बीच गतिशील रूप से स्विच कर सकता है, लेकिन किसी भी क्षण पर एक ही कनेक्शन के लिए भूमिका निश्चित होती है। एक विशिष्ट परिदृश्य: एक IoT संवेदक लगातार Peripheral के रूप में काम करता है, जबकि एक स्मार्टफ़ोन Central के रूप में कनेक्शन का प्रबंधन करता है।
डिवेलपर्स के लिए यह समझना महत्वपूर्ण है: Peripheral यह निर्धारित करता है कि कौन सी सेवाएं और विशेषताएं उपलब्ध हैं और उनतक पहुंच का प्रबंधन करता है। Peripheral पर GATT सर्वर की संरचना यह निर्धारित करती है कि Central कौन सा डेटा पढ़ सकता है और कौन से कमांड लिख सकता है।
Advertising वह तंत्र है जिसके द्वारा Peripheral अपनी उपस्थिति की घोषणा देता है। Peripheral तीन समर्पित चैनल्स (37, 38, 39) पर 20 मिलीसेकंड से 10.24 सेकंड के अंतराल में advertising पैकेट भेजता है। प्रत्येक advertising पैकेट में निश्चित जानकारी होती है और ऐच्छिक डेटा शामिल हो सकता है।
Advertising पैकेट दो प्रकार के होते हैं: advertising PDU (मुख्य पैकेट) और scan response PDU (Central के अनुरोध का जवाब). मुख्य पैकेट में अनिवार्य फ़ील्ड होते हैं: पैकेट प्रकार, भेजने वाले का पता, डेटा। यदि Central एक स्कैन अनुरोध भेजता है, तो Peripheral अधिक संपूर्ण जानकारी के साथ एक अतिरिक्त पैकेट भेजता है — उदाहरण के लिए, पूरा डिवाइस नाम।
Advertising पैरामीटर डिस्कवरी गति और बिजली खपत को प्रभावित करते हैं। Advertising interval पैकेट ट्रांसमिशन के बीच का समय है। इंटरवल जितना छोटा होगा, Central उतना ही तेज़ी से डिवाइस को ढूंढ लेगा, लेकिन Peripheral उतनी ही अधिक बिजली खपत करेगा। अनुशंसित इंटरवल: अधिकांश उपकरणों के लिए 100–1000 मिलीसेकंड।
| पैरामीटर | सीमा | प्रभाव | अनुशंसा |
|---|---|---|---|
| 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 पैकेट की advertising PDU के लिए 31 बाइट और scan response के लिए अतिरिक्त 31 बाइट की सीमा होती है। पैकेट के अंदर, डेटा AD Structure (Advertising Data Structure) फ़ॉर्मेट में व्यवस्थित होता है: प्रत्येक फ़ील्ड में एक प्रकार (1 बाइट), लंबाई (1 बाइट) और मान होता है।
सबसे अधिक उपयोग किए जाने वाले AD प्रकार: Flags (0x01) — कनेक्शन और डिस्कवरी मोड, Local Name (0x08 या 0x09) — डिवाइस का नाम, Service UUID List (0x02–0x07) — सेवा UUID की सूची, Manufacturer Specific Data (0xFF) — निर्माता डेटा। 31-बाइट पैकेट में डेटा को ठीक से पैक करना एम्बेडेड डिवाइस डिवेलपर्स के लिए एक महत्वपूर्ण कार्य है।
उन उपकरणों के लिए जिन्हें अधिक डेटा ट्रांसमिट करने की आवश्यकता है, extended advertising (BLE 5.0+) advertising पैकेट का आकार बढ़ाकर 251 बाइट कर देता है और नए पैकेट प्रकार जोड़ता है। Extended advertising खुले क्षेत्रों में 1 किमी तक की बढ़ी हुई रेंज के लिए कोडेड PHY चैनल्स का भी समर्थन करता है।
विज्ञापन पैकेट डिजाइन करते समय ध्यान रखें: advertising पैकेट में जितना अधिक डेटा होगा, अन्य उपकरणों के साथ टकराने की संभावना उतनी ही अधिक होगी। तेज़ डिस्कवरी के लिए, केवल महत्वपूर्ण डेटा (Service UUID) को advertising PDU में और अतिरिक्त डेटा को scan response में रखने की सिफारिश की जाती है।
GATT सर्वर Peripheral पर सभी सेवाओं और विशेषताओं को सम्मिलित करता है जिन्हें Central ढूंढ सकता है और इनके साथ बातचीत कर सकता है। कनेक्शन के बाद, Central सेवाओं की खोज करता है, फिर विशेषताओं की, और GATT प्रोटोकॉल के माध्यम से उनके साथ बातचीत करता है।
Peripheral को GATT सर्वर के रूप में Central के अनुरोधों को सही ढंग से संभालना चाहिए: पढ़ने के अनुरोध, लिखने के अनुरोध, अधिसूचनाएं और पुष्टिकरण। प्रत्येक अनुरोध GATT तालिका से होकर गुजरता है, जहां प्रत्येक गुण (सेवा, विशेषता, विवरण) एक Handle — 16-बिट पता से मेल खाता है।
Peripheral डिवेलपर प्रत्येक गुण के लिए पहुंच अधिकार को परिभाषित करता है: केवल पढ़ना, केवल लिखना, पढ़ना और लिखना, एन्क्रिप्शन के साथ या बिना। संवेदनशील डेटा (व्यक्तिगत जानकारी, चिकित्सा संकेतक) के लिए, MITM Protection के माध्यम से एन्क्रिप्शन की आवश्यकताओं को सक्रिय करने की सिफारिश की जाती है।
CBPeripheralManager iOS पर Peripheral की भूमिका को लागू करने के लिए एक Core Bluetooth क्लास है। यह GATT सर्वर का प्रबंधन करता है, सेवाओं और विशेषतأं को प्रकाशित करता है, और Centrals से अनुरोधों को संभालता है। CBCentralManager के विपरीत, CBPeripheralManager स्कैन नहीं करता — यह केवल विज्ञापन करता है और कनेक्शन्स की सेवा करता है।
iOS पर Peripheral को लागू करने के मुख्य कदम: CBPeripheralManager को आरंभ करना, add के माध्यम से सेवाएं जोड़ना, startAdvertising के माध्यम से विज्ञापन शुरू करना, CBPeripheralManagerDelegate के माध्यम से Centrals के अनुरोधों को संभालना।
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+ वाले एप्स के लिए रनटाइम अनुरोध के साथ।
ऑर्जा दक्षता BLE का एक मुख्य लाभ है, और Peripheral इसमें मुख्य भूमिका निभाता है। एक उपकरण ओप्टिमाइज़ड बिजली खपत के कारण CR2032 बैटरी (220 mAh) पर एक वर्ष से अधिक चल सकता है। अधिकांश समय, Peripheral विज्ञापन बंद कर सीने मोड में रहता है, केवल एक advertising पैकेट भेजने या Central से अनुरोध की प्रक्रिया करने के लिए जागता है।
विभिन्न मोड्स में Peripheral की बिजली खपत: सीने मोड (गहरी नींद) — 1–5 µA, टाइमर के साथ निष्क्रिय — 10–50 µA, advertising — 5–15 mA (पैकेट ट्रांसमिशन के दौरान), connected — 5–10 mA (कनेक्शन इवेंट के दौरान)। 1000 ms के advertising इंटरवल और 4 ms की पैकेट अवधि के साथ, औसत करंट लगभग 50–100 µA होता है।
Texas Instruments Application Report (SWRA478, 2024) के अनुसार, advertising इंटरवल को 100 ms से 1000 ms में बदलने से औसत बिजली खपत 90% तक कम हो जाती है। अतिरिक्त बचत slave latency (कनेक्शन इवेंट छोड़ना), कम दूरी पर Tx Power कम करना और कनेक्शन के बाद विज्ञापन बंद करने (connectable advertising) से प्राप्त की जाती है।
अक्सर पूछे जाने वाले प्रश्न
हाँ, अधिसूचना/पुष्टिकरण तंत्र के माध्यम से। यद्यपि Central हमेशा कनेक्शन का आरंभक होता है, कनेक्शन के बाद Peripheral Central के स्पष्ट अनुरोध के बिना GATT अधिसूचनाओं के माध्यम से डेटा भेज सकता है। इसके लिए, Central को पहले CCCD के माध्यम से सदस्यता लेनी होगी।
विज्ञापन की अवधि विनिर्देश द्वारा सीमित नहीं है, लेकिन व्यावहारिक रूप से यह बैटरी की शक्ति द्वारा सीमित है। iOS पर, एक Peripheral अतिरिक्त सेटिंग्स के बिना पृष्ठभूमि में अधिकतम 180 सेकंड प्रति सत्र विज्ञापन कर सकता है। Android पर, विज्ञापन अनिश्चित रूप से काम कर सकता है, लेकिन बैटरी जीवन को कई हद तक कम कर देता है।
Advertising इंटरवल बढ़ाएँ (अनुशंसित 500–1000 ms), कनेक्शन इवेंट छोड़ने के लिए slave latency का उपयोग करें, कनेक्शन के बाद विज्ञापन बंद करें और आवश्यक दूरी पर स्थिर संचार के लिए पर्याप्त न्यूनतम Tx Power चुनें।
Non-connectable advertising एक ऐसा मोड है जहां Peripheral विज्ञापन तो करता है लेकिन कनेक्शन अनुरोध स्वीकार नहीं करता। इसका उपयोग बीकन्स के लिए किया जाता है जो दो-तरफा कनेक्शन स्थापित किए बिना केवल डेटा प्रेषित करते हैं (उदाहरण के लिए, एक स्टोर पहचानकर्ता)। यह connectable advertising की तुलना में ऑर्जा बचाता है।
31 बाइट में आप शामिल कर सकते हैं: flags (3 बाइट), डिवाइस का नाम (संक्षिप्त रूप में 28 बाइट तक), सेवा UUID की सूची (2–16 बाइट प्रति UUID), निर्माता डेटा (26 बाइट तक)। इष्टतम रणनीति फ़िल्टरिंग के लिए advertising PDU में सेवा UUID और scan response में पूरा नाम रखना है।
सारांश
हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे
IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।
यह भी पढ़ें