RSSI (Received Signal Strength Indicator) एक संख्यात्मक मीट्रिक है जो प्राप्त करने वाले पक्ष पर BLE डिवाइस के सिग्नल की शक्ति को dBm में मापता है। RSSI मान -30 dBm (डिवाइस पास में) से -100 dBm (पहचान सीमा पर) तक होते हैं। Bluetooth Core Specification 5.4 (2023) RSSI को एक वैकल्पिक पैरामीटर के रूप में परिभाषित करता है जो प्रत्येक विज्ञापन पैकेट और डेटा पैकेट में उपलब्ध है। RSSI का उपयोग दूरी अनुमान और सिग्नल स्तर के आधार पर उपकरणों को फ़िल्टर करने के लिए किया जाता है, लेकिन यह एक अशुद्ध संकेतक है: बाधाएँ, मल्टीपाथ प्रसार और एंटीना प्रकार इसे प्रभावित करते हैं। सटीक स्थिति निर्धारण के लिए त्रिभुजन और Kalman फ़िल्टरिंग का उपयोग किया जाता है।
मुख्य बिंदु
RSSI (Received Signal Strength Indicator) पैकेट प्राप्ति के समय BLE रिसीवर द्वारा प्राप्त रेडियो सिग्नल शक्ति का मापन है। BLE में, RSSI प्रत्येक विज्ञापन पैकेट और कनेक्शन के बाद प्रत्येक डेटा पैकेट के लिए मापा जाता है। RSSI एक लॉगरिदमिक पैमाना है जहाँ 1 dBm का प्रत्येक कदम लगभग सिग्नल शक्ति में 1.26 गुना परिवर्तन के बराबर होता है।
RSSI एक हार्डवेयर-निर्भर संकेतक है: विभिन्न BLE चिप्स (nRF, TI, Dialog, Broadcom) और विभिन्न एंटीना एक ही सिग्नल के लिए अलग-अलग RSSI मान दिखा सकते हैं। इसलिए, विभिन्न उपकरणों के बीच RSSI की तुलना करना गलत है। एक ही OS पर दो समान स्मार्टफोन भी एक ही बीकन के लिए 2–5 dBm का अंतर दिखा सकते हैं।
एक विज्ञापन पैकेट में, RSSI तीनों चैनलों (37, 38, 39) में से प्रत्येक के लिए मापा जाता है। आवृत्ति हस्तक्षेप के कारण चैनलों के बीच मान 3–10 dBm तक भिन्न हो सकते हैं। आधुनिक BLE स्टैक सभी चैनलों पर औसत RSSI या प्रत्येक पैकेट के लिए अलग-अलग RSSI रिपोर्ट करते हैं। iOS Core Bluetooth औसत RSSI प्रदान करता है, Android अंतिम पैकेट का RSSI प्रदान करता है।
BLE के लिए विशिष्ट RSSI सीमा -30 dBm से -100 dBm तक है। इस सीमा से बाहर के मान अत्यंत दुर्लभ हैं: -20 dBm का मतलब है कि डिवाइस स्कैनर एंटीना को छू रहा है, जबकि -105 dBm का मतलब सिग्नल की पूर्ण अनुपस्थिति है। चिप निर्माता सीमा को सीमित कर सकते हैं: उदाहरण के लिए, nRF52832 -40 से -105 dBm तक RSSI रिपोर्ट करता है।
| RSSI (dBm) | सिग्नल गुणवत्ता | अनुमानित दूरी | सुझाव |
|---|---|---|---|
| -30 – -50 | उत्कृष्ट | 0–1 मी | डिवाइस पास में |
| -51 – -70 | अच्छा | 1–5 मी | कमरे के भीतर |
| -71 – -85 | मध्यम | 5–15 मी | बीकन के लिए स्वीकार्य |
| -86 – -95 | कमज़ोर | 15–30 मी | अविश्वसनीय कनेक्शन |
| -95 से नीचे | गंभीर | 30+ मी | पहचान सीमा पर |
TX Power Level ट्रांसमीटर शक्ति है जो विज्ञापन पैकेट (AD Type 0x0A) में इंगित की जाती है और अनुमान को समायोजित करने की अनुमति देती है। TX Power +4 dBm वाले डिवाइस से RSSI -70 dBm का मतलब है कि सिग्नल 74 dB क्षीण हो गया है। यदि TX Power अज्ञात है, तो सटीक दूरी अनुमान असंभव है। iBeacon दूरी अंशांकन के लिए Manufacturer Data संरचना में TX Power (1 बाइट) शामिल करता है।
Path Loss मॉडल (प्रसार हानि) का उपयोग RSSI से दूरी का अनुमान लगाने के लिए किया जाता है। मूल सूत्र: RSSI = TX_Power - 10 × n × log10(d), जहाँ n क्षीणन गुणांक है (मुक्त स्थान के लिए 2.0, बाधाओं वाले इनडोर वातावरण के लिए 3.0–4.5) और d मीटर में दूरी है। व्यवहार में, वास्तविक परिस्थितियों में अनुमान सटीकता ±2–5 मीटर है।
मॉडल को अंशांकित करने के लिए, ज्ञात दूरी (आमतौर पर 1 मी) पर RSSI मापना और TX Power संदर्भ की गणना करना आवश्यक है। iBeacon में, यह पैरामीटर पैकेट में संग्रहीत होता है। Eddystone समान तंत्र का उपयोग करता है। अंशांकन के बाद, दूरी की गणना की जा सकती है: d = 10 ^ ((TX_Power — RSSI) / (10 × n)).
Apple Core Bluetooth Programming Guide (2024) के अनुसार, iBeacon के लिए दूरी अनुमान सटीकता है: immediate (<0.5 मी) — जब RSSI अंशांकन मान से ऊपर हो, near (0.5–3 मी) — जब RSSI अंशांकन मान से 3–6 dB के भीतर हो, far (>3 मी) — कमज़ोर सिग्नल के साथ। अतिरिक्त प्रसंस्करण के बिना कोई भी गणितीय मॉडल ±1 मीटर से बेहतर सटीकता प्रदान नहीं करता है।
RSSI एक शोरगुल वाला संकेतक है, और इसकी सटीकता कई कारकों पर निर्भर करती है। त्रुटि के मुख्य स्रोत: बाधाएँ (दीवारें, फर्नीचर, लोग) प्रत्येक सिग्नल को 3–15 dB तक क्षीण करती हैं, मल्टीपाथ प्रसार (दीवारों से परावर्तन) कुछ बिंदुओं पर सिग्नल को बढ़ा और दूसरों पर क्षीण कर सकता है, एंटीना अभिविन्यास डिवाइस घुमाने पर RSSI को 3–10 dB तक बदल देता है।
मानव शरीर BLE सिग्नल के सबसे मजबूत अवशोषकों में से एक है। यदि बीकन और स्मार्टफोन के बीच कोई व्यक्ति है, तो RSSI 10–20 dB तक गिर सकता है। मानव शरीर में पानी 2.4 GHz आवृत्ति पर रेडियो विकिरण को प्रभावी ढंग से अवशोषित करता है। इसलिए, दुकान के दरवाजों पर लगे बीकन विभिन्न ऊँचाई और शरीर संरचना वाले ग्राहकों के लिए अलग-अलग RSSI दिखा सकते हैं।
अतिरिक्त कारक: आसन्न चैनलों पर Wi-Fi हस्तक्षेप RSSI को 3–5 dB तक कम कर सकता है, BLE चिप का तापमान RSSI माप सटीकता को प्रभावित करता है (कुछ चिप्स में 1 dB/°C तक बहाव होता है), बीकन पर बैटरी क्षरण TX Power को कम करता है, जिससे रिसीवर पर RSSI कम हो जाता है।
कच्चा RSSI सटीक गणना के लिए अनुपयुक्त है — इसमें बहुत अधिक शोर और आउटलायर्स होते हैं। स्थिर दूरी अनुमान प्राप्त करने के लिए फ़िल्टरिंग विधियों का उपयोग किया जाता है। सबसे सरल है चलती औसत: अंतिम N RSSI मानों का अंकगणितीय माध्य लिया जाता है। अल्पकालिक उतार-चढ़ाव को स्मूथ करने के लिए आमतौर पर N = 5–10 पर्याप्त है।
// RSSI के लिए Kalman फ़िल्टर
class RssiKalmanFilter(
private val processNoise: Double = 0.01,
private val measurementNoise: Double = 1.0
) {
private var estimate: Double = 0.0
private var errorCovariance: Double = 1.0
fun filter(rawRssi: Double): Double {
// पूर्वानुमान
errorCovariance += processNoise
// अद्यतन
val kalmanGain =
errorCovariance /
(errorCovariance + measurementNoise)
estimate = estimate +
kalmanGain * (rawRssi - estimate)
errorCovariance =
(1.0 - kalmanGain) * errorCovariance
return estimate
}
}
Kalman फ़िल्टर एक अधिक उन्नत विधि है जो RSSI परिवर्तन की गतिशीलता को ध्यान में रखती है और चलती औसत की तुलना में कम विलंब प्रदान करती है। स्थिर बीकन के लिए, चलती औसत स्वीकार्य परिणाम देती है। गतिशील उपकरणों के लिए, Kalman फ़िल्टर बेहतर है क्योंकि यह परिवर्तनों के लिए तेज़ी से अनुकूलित होता है। अतिरिक्त रूप से, आउटलायर्स को हटाने के लिए मीडियन फ़िल्टर का उपयोग किया जा सकता है।
iOS Core Bluetooth RSSI रीडिंग पूरी होने के बाद peripheral.rssi प्रॉपर्टी (NSNumber) के माध्यम से RSSI प्रदान करता है। विज्ञापन पैकेट RSSI प्राप्त करने के लिए advertisementData[CBAdvertisementDataRSSIKey] का उपयोग करें। iOS तीनों चैनलों पर औसत मान के रूप में RSSI लौटाता है। निरंतर RSSI निगरानी के लिए, प्रति सेकंड एक बार से अधिक के अंतराल पर readRSSI को कॉल करें।
// iOS पर RSSI प्राप्त करें
func centralManager(
_ central: CBCentralManager,
didDiscover peripheral: CBPeripheral,
advertisementData: [String: Any],
rssi RSSI: NSNumber
) {
let signalStrength = Int(truncating: RSSI)
// कमज़ोर सिग्नल फ़िल्टर करें
guard signalStrength > -90 else {
return
}
print("डिवाइस " +
"\(peripheral.name ?? "unknown") " +
"RSSI: \(signalStrength) dBm")
}
Android onScanResult कॉलबैक के माध्यम से RSSI प्रदान करता है: result.getRssi()। RSSI मान अंतिम विज्ञापन पैकेट का RSSI है (औसत नहीं)। स्थिर रीडिंग के लिए, कई मानों को संचित करना और फ़िल्टरिंग लागू करना आवश्यक है। Android TX Power Level भी result.getScanRecord().getTxPowerLevel() के माध्यम से प्रदान करता है, यदि यह विज्ञापन पैकेट में प्रेषित होता है।
// Android पर RSSI प्राप्त करें
private val scanCallback = object : ScanCallback() {
override fun onScanResult(
callbackType: Int,
result: ScanResult
) {
val rssi = result.rssi
val txPower = result.scanRecord?.
txPowerLevel ?: -128
// Kalman फ़िल्टर लागू करें
val filtered = kalmanFilter.
filter(rssi.toDouble())
Log.d("BLEScanner",
"RSSI: $rssi, " +
"Filtered: $filtered, " +
"TX: $txPower")
}
}
ऐसे अनुप्रयोग विकसित करते समय जो स्थिति निर्धारण के लिए RSSI का उपयोग करते हैं, ध्यान रखें: iOS पर, हार्डवेयर अंशांकन के कारण RSSI मान अधिक स्थिर होते हैं; Android पर, वे अधिक शोरगुल वाले होते हैं और डिवाइस निर्माता पर निर्भर करते हैं। क्रॉस-प्लेटफ़ॉर्म परियोजनाओं के लिए, प्रत्येक प्लेटफ़ॉर्म के लिए कॉन्फ़िगर करने योग्य पैरामीटर के साथ एप्लिकेशन पक्ष पर फ़िल्टरिंग लागू करने की अनुशंसा की जाती है।
अक्सर पूछे जाने वाले प्रश्न
नहीं, RSSI वास्तविक परिस्थितियों में ±2–5 मीटर की सटीकता के साथ केवल अनुमानित माप प्रदान करता है। सटीक स्थिति निर्धारण के लिए कई स्कैनरों से त्रिभुजन, Kalman फ़िल्टरिंग और TX Power पर विचार करना आवश्यक है।
मल्टीपाथ प्रसार और रेडियो सिग्नल में उतार-चढ़ाव के कारण। दीवारों और वस्तुओं से परावर्तन हस्तक्षेप पैदा करते हैं जहाँ सिग्नल बारी-बारी से मजबूत और कमज़ोर होता है। स्थिर डिवाइस पर 5–10 dB का RSSI परिवर्तन सामान्य है।
iOS readRSSI को प्रति सेकंड एक बार से अधिक कॉल न करने की सलाह देता है। बहुत बार-बार अनुरोध करने से डेटा पैकेट हानि हो सकती है। स्कैनिंग के दौरान RSSI निगरानी के लिए, CBAdvertisementDataRSSIKey का उपयोग करें, जो प्रत्येक विज्ञापन पैकेट के लिए उपलब्ध है।
TX Power Level विज्ञापन पैकेट में इंगित dBm में ट्रांसमीटर शक्ति है। RSSI + TX Power = ट्रांसमीटर से रिसीवर तक कुल सिग्नल क्षीणन। TX Power जानने से अधिक सटीक दूरी अनुमान संभव होता है: RSSI - TX Power = Path Loss (पथ हानि).
स्थिर बीकन के लिए — 5–10 मानों की विंडो के साथ चलती औसत। गतिशील उपकरणों के लिए — कम प्रक्रिया शोर (0.01–0.05) के साथ Kalman फ़िल्टर। आउटलायर्स को हटाने के लिए, मीडियन फ़िल्टर जोड़ें जो 2 मानक विचलनों से बाहर के मानों को काट देता है।
सारांश
हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे
IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।
यह भी पढ़ें