BLE میں RSSI — سگنل اشارہ اور فاصلہ کا تخمینہ

مصنف: IT Sectr اشاعت: 2026-07-16 مطالعے کا وقت: 10 منٹ

RSSI (Received Signal Strength Indicator) ایک عددی میٹرک ہے جو وصول کنندہ کی طرف BLE ڈیوائس کے سگنل کی طاقت کو dBm میں ناپتا ہے۔ RSSI قدریں -30 dBm (ڈیوائس قریب) سے -100 dBm (شناخت کی حد پر) تک ہوتی ہیں۔ Bluetooth Core Specification 5.4 (2023) RSSI کو ایک اختیاری پیرامیٹر کے طور پر بیان کرتا ہے جو ہر اشتہاری پیکٹ اور ڈیٹا پیکٹ میں دستیاب ہے۔ RSSI فاصلہ کے تخمینہ اور سگنل لیول کے مطابق ڈیوائسز کو فلٹر کرنے کے لیے استعمال ہوتا ہے، لیکن یہ ایک غیر درست اشارہ ہے: رکاوٹیں، کثیر راستہ پھیلاؤ اور اینٹینا کی قسم اسے متاثر کرتی ہے۔ درست مقام کے تعین کے لیے مثلثی پیمائش اور Kalman فلٹرنگ استعمال کی جاتی ہے۔

اہم نکات

  • RSSI پیکٹ وصول ہونے پر وصول کنندہ کی طرف dBm میں ناپی جانے والی BLE سگنل طاقت کی سطح ہے۔
  • RSSI کی حد: -30 dBm (بہت مضبوط سگنل) سے -100 dBm (شناخت کی حد) تک۔
  • RSSI Path Loss ماڈل کے ذریعے فاصلہ کے تخمینہ کے لیے استعمال ہوتا ہے، لیکن حقیقی حالات میں درستگی ±2–5 میٹر ہے۔
  • RSSI متاثر ہوتا ہے: رکاوٹوں (دیواریں، لوگ)، کثیر راستہ پھیلاؤ اور اینٹینا کی سمت سے۔
  • درستگی بہتر بنانے کے لیے Kalman فلٹرنگ، متحرک اوسط اور متعدد اسکینرز سے مثلثی پیمائش استعمال کی جاتی ہے۔

BLE میں RSSI کیا ہے؟

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 فراہم کرتا ہے۔

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 بائٹ) شامل کرتا ہے۔

RSSI اور فاصلہ کا تعلق

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 درستگی کو متاثر کرنے والے عوامل

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 فلٹرنگ اور ہموار کرنا

خام RSSI درست حسابات کے لیے موزوں نہیں ہے — اس میں بہت زیادہ شور اور غیر معمولی اقدار ہوتی ہیں۔ مستحکم فاصلہ کا تخمینہ حاصل کرنے کے لیے فلٹرنگ کے طریقے استعمال کیے جاتے ہیں۔ سب سے آسان متحرک اوسط ہے: آخری N RSSI اقدار کا حسابی اوسط لیا جاتا ہے۔ قلیل مدتی اتار چڑھاؤ کو ہموار کرنے کے لیے عام طور پر N = 5–10 کافی ہے۔

kotlin
// 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 اور Android میں RSSI حاصل کرنا

iOS Core Bluetooth RSSI پڑھنے کے مکمل ہونے پر peripheral.rssi پراپرٹی (NSNumber) کے ذریعے RSSI فراہم کرتا ہے۔ اشتہاری پیکٹ RSSI حاصل کرنے کے لیے advertisementData[CBAdvertisementDataRSSIKey] استعمال کریں۔ iOS تین چینلز کی اوسط قیمت کے طور پر RSSI واپس کرتا ہے۔ مسلسل RSSI نگرانی کے لیے، readRSSI کو فی سیکنڈ ایک بار سے زیادہ کے وقفے پر کال کریں۔

swift
// 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() کے ذریعے فراہم کرتا ہے، اگر یہ اشتہاری پیکٹ میں بھیجا جائے۔

kotlin
// 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 سے فاصلہ درست طریقے سے تعین کیا جا سکتا ہے؟

نہیں، RSSI حقیقی حالات میں ±2–5 میٹر کی درستگی کے ساتھ صرف تقریبی تخمینہ فراہم کرتا ہے۔ درست مقام کے تعین کے لیے متعدد اسکینرز سے مثلثی پیمائش، Kalman فلٹرنگ اور TX Power پر غور کرنا ضروری ہے۔

جب ڈیوائس حرکت نہیں کر رہی تو RSSI کیوں تبدیل ہوتا ہے؟

کثیر راستہ پھیلاؤ اور ریڈیو سگنل کے اتار چڑھاؤ کی وجہ سے۔ دیواروں اور اشیاء سے عکاسی مداخلت پیدا کرتی ہے جہاں سگنل باری باری مضبوط اور کمزور ہوتا ہے۔ ساکن ڈیوائس پر 5–10 dB کی RSSI تبدیلیاں معمول ہیں۔

iOS پر RSSI کتنی بار پڑھا جا سکتا ہے؟

iOS readRSSI کو فی سیکنڈ ایک بار سے زیادہ کال نہ کرنے کی سفارش کرتا ہے۔ بہت بار بار درخواستیں ڈیٹا پیکٹ کے نقصان کا سبب بن سکتی ہیں۔ اسکیننگ کے دوران RSSI کی نگرانی کے لیے، CBAdvertisementDataRSSIKey استعمال کریں، جو ہر اشتہاری پیکٹ کے لیے دستیاب ہے۔

TX Power Level کیا ہے اور اس کا RSSI سے کیا تعلق ہے؟

TX Power Level اشتہاری پیکٹ میں بتائی گئی dBm میں ٹرانسمیٹر کی طاقت ہے۔ RSSI + TX Power = ٹرانسمیٹر سے وصول کنندہ تک کل سگنل کمزوری۔ TX Power جاننے سے زیادہ درست فاصلہ کا تخمینہ ممکن ہے: RSSI - TX Power = Path Loss (راستے کا نقصان).

بیکن کے لیے RSSI فلٹرنگ کا کون سا طریقہ بہترین ہے؟

ساکن بیکنز کے لیے — 5–10 اقدار کی ونڈو کے ساتھ متحرک اوسط۔ حرکت کرنے والے ڈیوائسز کے لیے — کم عمل شور (0.01–0.05) کے ساتھ Kalman فلٹر۔ غیر معمولی اقدار کو خارج کرنے کے لیے، میڈین فلٹر شامل کریں جو 2 معیاری انحراف سے باہر کی اقدار کو کاٹ دیتا ہے۔

خلاصہ

  • RSSI ہر پیکٹ وصول ہونے پر وصول کنندہ کی طرف dBm میں ناپی جانے والی BLE سگنل طاقت کا اشارہ ہے۔
  • قدروں کی حد: -30 dBm (بہترین سگنل) سے -100 dBm (شناخت کی حد پر کمزور سگنل) تک۔
  • RSSI ±2–5 میٹر کی درستگی کے ساتھ تقریبی فاصلہ کا تخمینہ فراہم کرتا ہے، لیکن شور اور مداخلت کی وجہ سے درست فاصلہ پیما نہیں ہے۔
  • غلطی کے اہم ذرائع: رکاوٹیں (دیواریں، لوگ)، کثیر راستہ پھیلاؤ، اینٹینا کی سمت اور Wi-Fi مداخلت۔
  • مستحکم فاصلہ کے تخمینہ کے لیے Kalman فلٹرنگ، متحرک اوسط اور غیر معمولی اقدار کو ہٹانے کے لیے میڈین فلٹر استعمال کیے جاتے ہیں۔
  • iOS پر، RSSI تین چینلز کی اوسط ہے؛ Android پر، یہ آخری پیکٹ کی قدر ہے، جس کے لیے ایپلیکیشن کی طرف فلٹرنگ کی ضرورت ہے۔
  • اشتہاری پیکٹ میں TX Power Level RSSI کے ساتھ Path Loss — زیادہ درست فاصلہ کے تخمینہ کے لیے کل سگنل کمزوری فراہم کرتا ہے۔

ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے

IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔

پروجیکٹ پر بحث کریں

مزید پڑھیں