RSSI sa BLE — ano ito, tagapagpahiwatig ng signal at pagtatantiya ng distansya

May-akda: IT Sectr Nai-publish: 2026-07-16 Oras ng pagbabasa: 10 min

RSSI (Received Signal Strength Indicator) — ay isang numerikong sukatan na sumusukat sa lakas ng signal ng BLE device sa dBm sa panig ng pagtanggap. Ang halaga ng RSSI ay mula -30 dBm (device sa malapit) hanggang -100 dBm (sa hangganan ng pagtuklas). Tinutukoy ng Bluetooth Core Specification 5.4 (2023) ang RSSI bilang isang opsyonal na parameter na available sa bawat advertisement packet at data packet. Ginagamit ang RSSI para sa pagtatantiya ng distansya (range estimation) at pag-filter ng mga device ayon sa antas ng signal, ngunit ito ay isang hindi tumpak na tagapagpahiwatig: naaapektuhan ito ng mga hadlang, multipath propagation at uri ng antenna. Para sa tumpak na pagpoposisyon, ginagamit ang triangulation at Kalman filtering.

Mga pangunahing punto

  • RSSI — antas ng lakas ng BLE signal sa dBm, sinusukat sa panig ng pagtanggap kapag tumatanggap ng packet.
  • Saklaw ng RSSI: mula -30 dBm (napakalakas na signal) hanggang -100 dBm (hangganan ng pagtuklas).
  • Ginagamit ang RSSI para sa pagtatantiya ng distansya ayon sa modelo ng Path Loss, ngunit ang katumpakan ay ±2–5 m sa totoong mga kondisyon.
  • Naaapektuhan ang RSSI ng: mga hadlang (dingding, tao), multipath propagation at oryentasyon ng antenna.
  • Para sa pagpapabuti ng katumpakan, ginagamit ang Kalman filtering, moving average at triangulation mula sa maraming scanner.

Ano ang RSSI sa BLE?

RSSI (Received Signal Strength Indicator) — ay ang pagsukat ng lakas ng radio signal na natanggap ng BLE receiver sa sandali ng pagtanggap ng packet. Sa BLE, sinusukat ang RSSI para sa bawat advertisement packet (advertising) at bawat data packet pagkatapos ng koneksyon. Ang halaga ng RSSI ay isang logaritmikong iskala, kung saan ang bawat hakbang na 1 dBm ay humigit-kumulang katumbas ng pagbabago sa lakas ng signal na 1.26 beses.

Ang RSSI ay isang tagapagpahiwatig na nakadepende sa hardware: ang iba't ibang BLE chip (nRF, TI, Dialog, Broadcom) at iba't ibang antenna ay maaaring magpakita ng iba't ibang halaga ng RSSI para sa parehong signal. Samakatuwid, ang paghahambing ng RSSI sa pagitan ng iba't ibang device ay hindi tama. Kahit ang dalawang magkaparehong smartphone na may parehong operating system ay maaaring magpakita ng pagkakaiba na 2–5 dBm para sa parehong beacon.

Sa advertisement packet, sinusukat ang RSSI para sa bawat isa sa tatlong channel (37, 38, 39). Ang mga halaga ay maaaring magkaiba ng 3–10 dBm sa pagitan ng mga channel dahil sa frequency interference. Ang mga modernong BLE stack ay nag-uulat ng average na RSSI sa lahat ng channel o RSSI para sa bawat packet nang hiwalay. Ang iOS Core Bluetooth ay nagbibigay ng average na RSSI, Android — RSSI ng huling packet.

Saklaw ng mga halaga ng RSSI

Ang tipikal na saklaw ng RSSI para sa BLE ay mula -30 dBm hanggang -100 dBm. Ang mga halaga sa labas ng mga hangganang ito ay napakabihirang: -20 dBm ay nangangahulugang literal na dumadampi ang device sa antenna ng scanner, at -105 dBm — kumpletong kawalan ng signal. Maaaring limitahan ng mga tagagawa ng chip ang saklaw: halimbawa, ang nRF52832 ay nag-uulat ng RSSI mula -40 hanggang -105 dBm.

RSSI (dBm)Kalidad ng signalTantiyang distansyaRekomendasyon
-30 – -50Napakahusay0–1 mDevice sa malapit
-51 – -70Mahusay1–5 mSa loob ng silid
-71 – -85Katamtaman5–15 mKatanggap-tanggap para sa mga beacon
-86 – -95Mahina15–30 mHindi maaasahang koneksyon
Ibaba ng -95Kritikal30+ mSa hangganan ng pagtuklas

TX Power Level — lakas ng transmitter, na nakasaad sa advertisement packet (AD Type 0x0A) at nagbibigay-daan sa pagwawasto ng pagtatantiya. Ang RSSI -70 dBm mula sa isang device na may TX Power +4 dBm ay nangangahulugang ang signal ay humina ng 74 dB. Kung hindi kilala ang TX Power, hindi posible ang tumpak na pagtatantiya ng distansya. Ang iBeacon ay naglalaman ng TX Power (1 byte) sa istraktura ng Manufacturer Data para sa pagkakalibrate ng distansya.

Pag-asa ng RSSI sa distansya

Ang modelo ng Path Loss (pagkawala ng propagasyon) ay ginagamit para sa pagtatantiya ng distansya batay sa RSSI. Ang pangunahing formula: RSSI = TX_Power - 10 × n × log10(d), kung saan n — coefficient ng pagpapahina (2.0 para sa libreng espasyo, 3.0–4.5 para sa mga silid na may hadlang), d — distansya sa metro. Sa praktika, ang katumpakan ng pagtatantiya ay ±2–5 m sa totoong mga kondisyon.

Para sa pagkakalibrate ng modelo, kinakailangang sukatin ang RSSI sa kilalang distansya (karaniwang 1 m) at kalkulahin ang TX Power reference. Sa iBeacon, ang parameter na ito ay nakaimbak sa packet. Sa Eddystone, ginagamit ang katulad na mekanismo. Pagkatapos ng pagkakalibrate, maaaring kalkulahin ang distansya: d = 10 ^ ((TX_Power — RSSI) / (10 × n)).

Ayon sa Apple Core Bluetooth Programming Guide (2024), ang katumpakan ng pagtatantiya ng distansya para sa iBeacon ay: immediate (<0.5 m) — kapag ang RSSI ay mas mataas sa halaga ng pagkakalibrate, near (0.5–3 m) — kapag ang RSSI ay nasa saklaw na 3–6 dB mula sa halaga ng pagkakalibrate, far (>3 m) — sa mahinang signal. Walang modelo ng matematika na nagbibigay ng katumpakan na mas mahusay kaysa ±1 m nang walang karagdagang pagproseso.

Mga salik na nakakaapekto sa katumpakan ng RSSI

Ang RSSI ay isang maingay na tagapagpahiwatig, at ang katumpakan nito ay nakadepende sa maraming salik. Ang mga pangunahing pinagmumulan ng error: mga hadlang (dingding, kasangkapan, tao) ay nagpapahina ng signal ng 3–15 dB bawat isa, multipath propagation (mga pagmuni-muni mula sa dingding) ay maaaring magpalakas ng signal sa ilang punto at magpahina sa iba, oryentasyon ng antenna ay nagbabago ng RSSI ng 3–10 dB kapag pinaikot ang device.

Ang katawan ng tao ay isa sa pinakamalakas na sumisipsip ng BLE signal. Kung may tao sa pagitan ng beacon at smartphone, ang RSSI ay maaaring bumaba ng 10–20 dB. Ang tubig sa katawan ng tao ay epektibong sumisipsip ng radio radiation sa frequency na 2.4 GHz. Kaya naman ang mga beacon sa mga pintuan ng tindahan ay maaaring magpakita ng iba't ibang RSSI para sa mga customer na may iba't ibang taas at pangangatawan.

Mga karagdagang salik: interference ng Wi-Fi sa mga kalapit na channel ay maaaring magpababa ng RSSI ng 3–5 dB, temperatura ng BLE chip ay nakakaapekto sa katumpakan ng pagsukat ng RSSI (sa ilang chip drift hanggang 1 dB/°C), pagkasira ng baterya sa beacon ay nagpapababa ng TX Power, na humahantong sa mas mababang RSSI sa receiver.

Pag-filter at pagpapakinis ng RSSI

Ang raw RSSI ay hindi angkop para sa tumpak na pagkalkula — naglalaman ito ng masyadong maraming ingay at outlier. Upang makakuha ng matatag na pagtatantiya ng distansya, ginagamit ang mga paraan ng pag-filter. Ang pinakasimple — moving average: kinukuha ang arithmetic average ng huling N halaga ng RSSI. Ang N = 5–10 ay karaniwang sapat para sa pagpapakinis ng panandaliang pagbabago.

kotlin
// Kalman filter para sa RSSI
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 {
        // Hulaan
        errorCovariance += processNoise

        // I-update
        val kalmanGain =
            errorCovariance /
            (errorCovariance + measurementNoise)

        estimate = estimate +
            kalmanGain * (rawRssi - estimate)

        errorCovariance =
            (1.0 - kalmanGain) * errorCovariance

        return estimate
    }
}

Kalman filter — isang mas advanced na paraan na isinasaalang-alang ang dynamics ng mga pagbabago sa RSSI at nagbibigay ng mas maliit na pagkaantala kaysa sa moving average. Para sa mga nakatigil na beacon (hindi gumagalaw), ang moving average ay nagbibigay ng katanggap-tanggap na resulta. Para sa mga gumagalaw na device, mas gusto ang Kalman filter dahil mas mabilis itong umaangkop sa mga pagbabago. Bilang karagdagan, maaaring gamitin ang Median filter para sa pagtatapon ng mga outlier.

Pagkuha ng RSSI sa iOS at Android

iOS Core Bluetooth ay nagbibigay ng RSSI sa pamamagitan ng property na peripheral.rssi (NSNumber) pagkatapos makumpleto ang pagbasa ng RSSI. Upang makuha ang RSSI ng advertisement packet, gamitin ang advertisementData[CBAdvertisementDataRSSIKey]. Ibinabalik ng iOS ang RSSI bilang average na halaga sa tatlong channel. Para sa tuloy-tuloy na pagmonitor ng RSSI, tawagan ang readRSSI sa interval na hindi hihigit sa 1 beses bawat segundo.

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

    // I-filter ang mahinang signal
    guard signalStrength > -90 else {
        return
    }

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

Android ay nagbibigay ng RSSI sa pamamagitan ng callback na onScanResult: result.getRssi(). Ang halaga ng RSSI ay RSSI ng huling advertisement packet (hindi average). Para sa matatag na pagbasa, kinakailangang mag-ipon ng maraming halaga at mag-apply ng pag-filter. Nagbibigay din ang Android ng TX Power Level sa pamamagitan ng result.getScanRecord().getTxPowerLevel(), kung ito ay ipinapadala sa advertisement packet.

kotlin
// Kunin ang RSSI sa Android
private val scanCallback = object : ScanCallback() {

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

        // Ilapat ang Kalman filter
        val filtered = kalmanFilter.
            filter(rssi.toDouble())

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

Sa pagbuo ng mga application na gumagamit ng RSSI para sa pagpoposisyon, isaalang-alang: sa iOS ang mga halaga ng RSSI ay mas matatag dahil sa hardware calibration, sa Android — mas maingay at nakadepende sa tagagawa ng device. Para sa mga cross-platform na proyekto, inirerekomenda ang pagpapatupad ng pag-filter sa panig ng application na may mga nako-configure na parameter para sa bawat platform.

Mga madalas itanong

Maaari bang tumpak na matukoy ang distansya batay sa RSSI?

Hindi, ang RSSI ay nagbibigay lamang ng magaspang na pagtatantiya ng distansya na may katumpakan na ±2–5 m sa totoong mga kondisyon. Para sa tumpak na pagpoposisyon, kinakailangan ang triangulation mula sa maraming scanner, Kalman filtering at pagsasaalang-alang sa TX Power ng transmitter.

Bakit nagbabago ang RSSI kahit hindi gumagalaw ang device?

Dahil sa multipath propagation at pagbabago-bago ng radio signal. Ang mga pagmuni-muni mula sa dingding at bagay ay lumilikha ng interference kung saan ang signal minsan ay lumalakas at minsan ay humihina. Ang mga pagbabago sa RSSI na 5–10 dB sa isang nakatigil na device ay normal na pangyayari.

Gaano kadalas mababasa ang RSSI sa iOS?

Inirerekomenda ng iOS na tawagan ang readRSSI nang hindi hihigit sa 1 beses bawat segundo. Ang masyadong madalas na paghiling ay maaaring humantong sa pagkawala ng mga data packet. Para sa pagmonitor ng RSSI habang nag-iiscan, gamitin ang CBAdvertisementDataRSSIKey na available para sa bawat advertisement packet.

Ano ang TX Power Level at paano ito nauugnay sa RSSI?

TX Power Level — lakas ng transmitter sa dBm na nakasaad sa advertisement packet. RSSI + TX Power = kabuuang pagpapahina ng signal sa landas mula transmitter patungo sa receiver. Sa pag-alam ng TX Power, mas tumpak na matatantiya ang distansya: RSSI - TX Power = Path Loss (pagkawala sa ruta).

Aling paraan ng pag-filter ng RSSI ang pinakamainam para sa mga beacon?

Para sa nakatigil na beacon — moving average na may window na 5–10 halaga. Para sa gumagalaw na device — Kalman filter na may maliit na process noise (0.01–0.05). Para sa pagtatapon ng mga outlier, magdagdag ng Median filter na pumuputol sa mga halaga sa labas ng 2 standard deviations.

Buod

  • RSSI — tagapagpahiwatig ng lakas ng BLE signal sa dBm, sinusukat sa panig ng pagtanggap kapag tumatanggap ng bawat packet.
  • Saklaw ng mga halaga: mula -30 dBm (napakahusay na signal) hanggang -100 dBm (mahinang signal sa hangganan ng pagtuklas).
  • Pinapayagan ng RSSI ang magaspang na pagtatantiya ng distansya na may katumpakan na ±2–5 m, ngunit hindi ito tumpak na rangefinder dahil sa ingay at interference.
  • Mga pangunahing pinagmumulan ng error: mga hadlang (dingding, tao), multipath propagation, oryentasyon ng antenna at interference ng Wi-Fi.
  • Para sa matatag na pagtatantiya ng distansya, ginagamit ang Kalman filtering, moving average at Median filter para sa pagtatapon ng mga outlier.
  • Sa iOS ang RSSI ay average ng tatlong channel, sa Android — halaga ng huling packet, na nangangailangan ng pag-filter sa panig ng application.
  • Ang TX Power Level sa advertisement packet kasama ang RSSI ay nagbibigay ng Path Loss — kabuuang pagpapahina ng signal para sa mas tumpak na pagtatantiya ng distansya.

Gagawa kami ng mobile application na turnkey

Gumagawa ang IT Sectr ng mga iOS at Android application para sa mga startup at negosyo mula noong 2017. Magpapayo kami sa iyo at magmumungkahi ng pinakamahusay na solusyon.

Pag-usapan ang proyekto

Basahin din