BLE-da RSSI — bu nima, signal indikatori va masofani baholash

Muallif: IT Sectr Nashr etilgan: 2026-07-16 O'qish vaqti: 10 daq

RSSI (Received Signal Strength Indicator) — qabul qiluvchi tomonda BLE qurilmasining signal quvvatini dBm da o'lchaydigan raqamli metrikadir. RSSI qiymati -30 dBm (qurilma yaqinida) dan -100 dBm (aniqlash chegarasida) gacha o'zgaradi. Bluetooth Core Specification 5.4 (2023) RSSI ni har bir reklama paketi va ma'lumotlar paketida mavjud bo'lgan ixtiyoriy parametr sifatida belgilaydi. RSSI masofani baholash (range estimation) va qurilmalarni signal darajasi bo'yicha filtrlash uchun ishlatiladi, ammo noaniq indikatordir: unga to'siqlar, ko'p nurli tarqalish va antenna turi ta'sir qiladi. Aniq joylashishni aniqlash uchun triangulyatsiya va Kalman filtri qo'llaniladi.

Asosiy fikrlar

  • RSSI — paket qabul qilishda qabul qiluvchi tomonda o'lchanadigan BLE signal quvvati darajasi dBm da.
  • RSSI diapazoni: -30 dBm (juda kuchli signal) dan -100 dBm (aniqlash chegarasi) gacha.
  • RSSI masofani baholash uchun Path Loss modeli bo'yicha ishlatiladi, ammo real sharoitda aniqlik ±2–5 m ni tashkil qiladi.
  • RSSI ga ta'sir qiladi: to'siqlar (devorlar, odamlar), ko'p nurli tarqalish va antenna yo'nalishi.
  • Aniqlikni yaxshilash uchun Kalman filtri, sirpanchiq o'rtacha va bir nechta skanerdan triangulyatsiya qo'llaniladi.

BLE da RSSI nima?

RSSI (Received Signal Strength Indicator) — BLE qabul qilgichi tomonidan paket qabul qilish vaqtida o'lchanadigan radio signal quvvatidir. BLE da RSSI har bir reklama paketi (advertising) va ulanishdan keyin har bir ma'lumotlar paketi uchun o'lchanadi. RSSI qiymati logarifmik shkala bo'lib, unda 1 dBm li har bir qadam signal quvvatining taxminan 1,26 marta o'zgarishiga to'g'ri keladi.

RSSI qurilmaga bog'liq ko'rsatkichdir: turli BLE chiplari (nRF, TI, Dialog, Broadcom) va turli antennalar bir xil signal uchun turli RSSI qiymatlarini ko'rsatishi mumkin. Shuning uchun turli qurilmalar o'rtasida RSSI ni solishtirish noto'g'ri. Hatto bir xil operatsion tizimdagi ikkita bir xil smartfon bir xil beacon uchun 2–5 dBm farqni ko'rsatishi mumkin.

Reklama paketida RSSI uchta kanalning har biri uchun o'lchanadi (37, 38, 39). Qiymatlar chastota shovqinlari tufayli kanallar o'rtasida 3–10 dBm farq qilishi mumkin. Zamonaviy BLE steklari barcha kanallar bo'yicha o'rtacha RSSI yoki har bir paket uchun alohida RSSI haqida xabar beradi. iOS Core Bluetooth o'rtacha RSSI ni, Android esa oxirgi paketning RSSI sini taqdim etadi.

RSSI qiymatlari diapazoni

BLE uchun odatdagi RSSI diapazoni -30 dBm dan -100 dBm gacha. Bu chegaralardan tashqari qiymatlar juda kam uchraydi: -20 dBm qurilma skaner antennasiga tegishini, -105 dBm esa signalning to'liq yo'qligini bildiradi. Chip ishlab chiqaruvchilari diapazonni cheklashi mumkin: masalan, nRF52832 -40 dan -105 dBm gacha RSSI haqida xabar beradi.

RSSI (dBm)Signal sifatiTaxminiy masofaTavsiya
-30 – -50A'lo0–1 mQurilma yaqinida
-51 – -70Yaxshi1–5 mXona ichida
-71 – -85O'rtacha5–15 mBeaconlar uchun maqbul
-86 – -95Zaif15–30 mIshonchsiz ulanish
-95 dan pastTangidiy30+ mAniqlash chegarasida

TX Power Level — reklama paketida (AD Type 0x0A) ko'rsatilgan uzatuvchi quvvati bo'lib, baholashni tuzatishga imkon beradi. TX Power +4 dBm bo'lgan qurilmadan -70 dBm RSSI signal 74 dB zaiflashganini bildiradi. Agar TX Power noma'lum bo'lsa, masofani aniq baholash mumkin emas. iBeacon masofa kalibrlash uchun Manufacturer Data tarkibida TX Power (1 bayt) ni saqlaydi.

RSSI ning masofaga bog'liqligi

Path Loss modeli (tarqalish yo'qotishlari) RSSI asosida masofani baholash uchun ishlatiladi. Asosiy formula: RSSI = TX_Power - 10 × n × log10(d), bu erda n — zaiflashish koeffitsienti (ochiq maydon uchun 2,0, to'siqlari bo'lgan xonalar uchun 3,0–4,5), d — metrdagi masofa. Amalda real sharoitda baholash aniqligi ±2–5 m ni tashkil qiladi.

Modelni kalibrlash uchun RSSI ni ma'lum masofada (odatda 1 m) o'lchash va TX Power ma'lumotnomasini hisoblash kerak. iBeacon da bu parametr paketda saqlanadi. Eddystone da shunga o'xshash mexanizm qo'llaniladi. Kalibrlashdan keyin masofani hisoblash mumkin: d = 10 ^ ((TX_Power — RSSI) / (10 × n)).

Apple Core Bluetooth Programming Guide (2024) ga ko'ra, iBeacon uchun masofani baholash aniqligi: immediate (<0,5 m) — RSSI kalibrlash qiymatidan yuqori bo'lganda, near (0,5–3 m) — RSSI kalibrlash qiymatidan 3–6 dB oralig'ida bo'lganda, far (>3 m) — zaif signalda. Hech qanday matematik model qo'shimcha ishlovsiz ±1 m dan yaxshiroq aniqlikni ta'minlamaydi.

RSSI aniqligiga ta'sir qiluvchi omillar

RSSI — shovqinli ko'rsatkich va uning aniqligi ko'plab omillarga bog'liq. Asosiy xato manbalari: to'siqlar (devorlar, mebellar, odamlar) har biri signalni 3–15 dB zaiflashtiradi, ko'p nurli tarqalish (devorlardan aks etish) ba'zi nuqtalarda signalni kuchaytirishi va boshqalarida zaiflashtirishi mumkin, antenna yo'nalishi qurilmani burishda RSSI ni 3–10 dB o'zgartiradi.

Inson tanasi BLE signalining eng kuchli yutuvchilaridan biridir. Agar beacon va smartfon o'rtasida odam bo'lsa, RSSI 10–20 dB ga tushishi mumkin. Inson tanasidagi suv 2,4 GHz chastotasida radio nurlanishni samarali yutadi. Shuning uchun do'kon eshiklaridagi beaconlar turli bo'y va tana tuzilishidagi mijozlar uchun turli RSSI ko'rsatishi mumkin.

Qo'shimcha omillar: qo'shni kanallardagi Wi-Fi shovqinlari RSSI ni 3–5 dB kamaytirishi mumkin, BLE chipining harorati RSSI o'lchash aniqligiga ta'sir qiladi (ba'zi chiplarda 1 dB/°C siljish), beaconda batareyaning degradatsiyasi TX Power ni kamaytiradi, bu esa qabul qilgichda past RSSI ga olib keladi.

RSSI filtrlash va tekislash

Xom RSSI aniq hisob-kitoblar uchun yaroqsiz — juda ko'p shovqin va chetki qiymatlarni o'z ichiga oladi. Barqaror masofa bahosini olish uchun filtrlash usullari qo'llaniladi. Eng oddiyi — sirpanchiq o'rtacha: oxirgi N RSSI qiymatining arifmetik o'rtachasi olinadi. N = 5–10 odatda qisqa muddatli tebranishlarni tekislash uchun etarli.

kotlin
// RSSI uchun Kalman filtri
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 {
        // Bashorat qil
        errorCovariance += processNoise

        // Yangila
        val kalmanGain =
            errorCovariance /
            (errorCovariance + measurementNoise)

        estimate = estimate +
            kalmanGain * (rawRssi - estimate)

        errorCovariance =
            (1.0 - kalmanGain) * errorCovariance

        return estimate
    }
}

Kalman filtri — RSSI o'zgarish dinamikasini hisobga oladigan va sirpanchiq o'rtachadan kamroq kechikish beradigan ilg'or usuldir. Statsionar beaconlar (harakatsiz) uchun sirpanchiq o'rtacha maqbul natija beradi. Harakatlanuvchi qurilmalar uchun Kalman filtri afzalroq, chunki u o'zgarishlarga tezroq moslashadi. Qo'shimcha ravishda, chetki qiymatlarni chiqarib tashlash uchun Median filtridan foydalanish mumkin.

iOS va Android da RSSI olish

iOS Core Bluetooth RSSI o'qish tugagandan so'ng peripheral.rssi (NSNumber) xususiyati orqali RSSI ni taqdim etadi. Reklama paketining RSSI sini olish uchun advertisementData[CBAdvertisementDataRSSIKey] dan foydalaning. iOS RSSI ni uchta kanal bo'yicha o'rtacha qiymat sifatida qaytaradi. Uzluksiz RSSI monitoringi uchun readRSSI ni sekundiga 1 martadan ko'p bo'lmagan intervalda chaqiring.

swift
// iOS da RSSI olish
func centralManager(
    _ central: CBCentralManager,
    didDiscover peripheral: CBPeripheral,
    advertisementData: [String: Any],
    rssi RSSI: NSNumber
) {
    let signalStrength = Int(truncating: RSSI)

    // Zaif signallarni filtrlash
    guard signalStrength > -90 else {
        return
    }

    print("Qurilma " +
          "\(peripheral.name ?? "unknown") " +
          "RSSI: \(signalStrength) dBm")
}

Android RSSI ni onScanResult callback orqali taqdim etadi: result.getRssi(). RSSI qiymati — oxirgi reklama paketining RSSI si (o'rtacha emas). Barqaror ko'rsatkichlar uchun bir nechta qiymatlarni to'plash va filtrlashni qo'llash kerak. Android shuningdek, TX Power Level ni result.getScanRecord().getTxPowerLevel() orqali taqdim etadi, agar reklama paketida uzatilsa.

kotlin
// Android da RSSI olish
private val scanCallback = object : ScanCallback() {

    override fun onScanResult(
        callbackType: Int,
        result: ScanResult
    ) {
        val rssi = result.rssi
        val txPower = result.scanRecord?.
            txPowerLevel ?: -128

        // Kalman filtrini qo'llash
        val filtered = kalmanFilter.
            filter(rssi.toDouble())

        Log.d("BLEScanner",
            "RSSI: $rssi, " +
            "Filtered: $filtered, " +
            "TX: $txPower")
    }
}

RSSI dan joylashishni aniqlash uchun foydalanadigan ilovalarni ishlab chiqishda e'tiborga oling: iOS da RSSI qiymatlari apparat kalibrashi tufayli barqarorroq, Android da — shovqinliroq va qurilma ishlab chiqaruvchisiga bog'liq. Ko'p platformali loyihalar uchun har bir platforma uchun sozlanishi parametrlar bilan ilova tomonida filtrlashni amalga oshirish tavsiya etiladi.

Tez-tez so'raladigan savollar

RSSI bo'yicha masofani aniq aniqlash mumkinmi?

Yo'q, RSSI faqat taxminiy baho beradi, real sharoitda aniqlik ±2–5 m. Aniq joylashishni aniqlash uchun bir nechta skanerdan triangulyatsiya, Kalman filtri va uzatuvchining TX Power ini hisobga olish talab qilinadi.

Nega qurilma harakatlanmasa ham RSSI o'zgaradi?

Ko'p nurli tarqalish va radio signalining tebranishlari tufayli. Devor va buyumlardan aks etishlar signal ba'zan kuchayadigan, ba'zan zaiflashadigan interferensiya hosil qiladi. Harakatsiz qurilmada RSSI ning 5–10 dB o'zgarishi normal hodisa.

iOS da RSSI ni qanchalik tez-tez o'qish mumkin?

iOS readRSSI ni sekundiga 1 martadan ko'p chaqirmaslikni tavsiya qiladi. Juda tez-tez so'rovlar ma'lumotlar paketlarining yo'qolishiga olib kelishi mumkin. Skanerlash vaqtida RSSI monitoringi uchun har bir reklama paketi uchun mavjud bo'lgan CBAdvertisementDataRSSIKey dan foydalaning.

TX Power Level nima va u RSSI bilan qanday bog'liq?

TX Power Level — reklama paketida ko'rsatilgan uzatuvchi quvvati dBm da. RSSI + TX Power = uzatuvchidan qabul qilgichgacha bo'lgan signalning umumiy zaiflashishi. TX Power ni bilgan holda masofani aniqroq baholash mumkin: RSSI - TX Power = Path Loss (yo'lda yo'qotishlar).

Beaconlar uchun qaysi RSSI filtrlash usuli yaxshiroq?

Statsionar beaconlar uchun — 5–10 qiymat oynasi bilan sirpanchiq o'rtacha. Harakatlanuvchi qurilmalar uchun — kichik jarayon shovqini bilan (0,01–0,05) Kalman filtri. Chetki qiymatlarni chiqarib tashlash uchun 2 standart og'ishdan tashqari qiymatlarni kesadigan Median filtrini qo'shing.

Xulosa

  • RSSI — har bir paketni qabul qilishda qabul qiluvchi tomonda o'lchanadigan BLE signal quvvatining dBm dagi ko'rsatkichi.
  • Qiymat diapazoni: -30 dBm (a'lo signal) dan -100 dBm gacha (aniqlash chegarasidagi zaif signal).
  • RSSI masofani ±2–5 m aniqlik bilan taxminiy baholashga imkon beradi, ammo shovqin va interferensiya tufayli aniq masofa o'lchagich emas.
  • Asosiy xato manbalari: to'siqlar (devorlar, odamlar), ko'p nurli tarqalish, antenna yo'nalishi va Wi-Fi shovqinlari.
  • Barqaror masofa bahosi uchun Kalman filtri, sirpanchiq o'rtacha va chetki qiymatlarni chiqarib tashlash uchun Median filtri qo'llaniladi.
  • iOS da RSSI uchta kanalning o'rtachasi, Android da — oxirgi paketning qiymati, bu ilova tomonida filtrlashni talab qiladi.
  • Reklama paketidagi TX Power Level RSSI bilan birgalikda Path Loss — masofani aniqroq baholash uchun signalning umumiy zaiflashishini beradi.

Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz

IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.

Loyihani muhokama qilish

Shuningdek o'qing