RSSI ใน BLE — ตัวบ่งชี้สัญญาณและการประเมินระยะทาง

ผู้แต่ง: 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 คือระดับความแรงของสัญญาณ BLE ในหน่วย dBm ที่วัดที่ฝั่งรับเมื่อได้รับแพ็กเกต
  • ช่วง RSSI: ตั้งแต่ -30 dBm (สัญญาณแรงมาก) ถึง -100 dBm (ขอบเขตการตรวจจับ)
  • RSSI ใช้สำหรับ การประเมินระยะทาง ด้วยโมเดล Path Loss แต่ความแม่นยำอยู่ที่ ±2–5 เมตรในสภาพจริง
  • RSSI ได้รับผลกระทบจาก: สิ่งกีดขวาง (กำแพง คน) การแพร่กระจายแบบหลายเส้นทาง และทิศทางของเสาอากาศ
  • เพื่อปรับปรุงความแม่นยำ ใช้ การกรองแบบ Kalman ค่าเฉลี่ยเคลื่อนที่ และการสามเหลี่ยมจากเครื่องสแกนหลายตัว

RSSI ใน BLE คืออะไร?

RSSI (Received Signal Strength Indicator) คือการวัดความแรงของสัญญาณวิทยุที่เครื่องรับ BLE ได้รับในขณะที่รับแพ็กเกต ใน BLE จะวัด RSSI สำหรับทุกแพ็กเกตโฆษณาและทุกแพ็กเกตข้อมูลหลังการเชื่อมต่อ RSSI เป็นสเกลลอการิทึมที่แต่ละขั้นของ 1 dBm สอดคล้องกับการเปลี่ยนแปลงประมาณ 1.26 เท่าของความแรงของสัญญาณ

RSSI เป็นตัวบ่งชี้ที่ ขึ้นอยู่กับฮาร์ดแวร์: ชิป BLE ที่แตกต่างกัน (nRF, TI, Dialog, Broadcom) และเสาอากาศที่แตกต่างกันสามารถแสดงค่า RSSI ที่แตกต่างกันสำหรับสัญญาณเดียวกัน ดังนั้นการเปรียบเทียบ RSSI ระหว่างอุปกรณ์ต่าง ๆ จึงไม่ถูกต้อง แม้แต่สมาร์ทโฟนที่เหมือนกันสองเครื่องบนระบบปฏิบัติการเดียวกันก็อาจแสดงความแตกต่าง 2–5 dBm สำหรับบีคอนเดียวกัน

ในแพ็กเกตโฆษณา RSSI จะวัดสำหรับแต่ละช่องสัญญาณในสามช่อง (37, 38, 39) ค่าอาจแตกต่างกัน 3–10 dBm ระหว่างช่องสัญญาณเนื่องจากการรบกวนความถี่ สแต็ก BLE สมัยใหม่รายงานค่า RSSI เฉลี่ยทุกช่องสัญญาณหรือ RSSI สำหรับแต่ละแพ็กเกตแยกกัน iOS Core Bluetooth ให้ค่า RSSI เฉลี่ย Android ให้ค่า RSSI ของแพ็กเกตล่าสุด

ช่วงค่า RSSI

ช่วง RSSI ทั่วไป สำหรับ BLE คือตั้งแต่ -30 dBm ถึง -100 dBm ค่าที่อยู่นอกช่วงนี้พบได้ยากมาก: -20 dBm หมายความว่าอุปกรณ์กำลังสัมผัสเสาอากาศของเครื่องสแกน ในขณะที่ -105 dBm หมายถึงไม่มีสัญญาณโดยสิ้นเชิง ผู้ผลิตชิปอาจจำกัดช่วง: ตัวอย่างเช่น nRF52832 รายงาน RSSI ตั้งแต่ -40 ถึง -105 dBm

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) และช่วยปรับการประเมิน RSSI -70 dBm จากอุปกรณ์ที่มี TX Power +4 dBm หมายความว่าสัญญาณลดลง 74 dB หากไม่ทราบ TX Power การประเมินระยะทางที่แม่นยำเป็นไปไม่ได้ iBeacon รวม TX Power (1 ไบต์) ไว้ในโครงสร้าง Manufacturer Data สำหรับการปรับเทียบระยะทาง

ความสัมพันธ์ระหว่าง RSSI และระยะทาง

โมเดล Path Loss (การสูญเสียการแพร่กระจาย) ใช้ในการประเมินระยะทางจาก RSSI สูตรพื้นฐาน: RSSI = TX_Power - 10 × n × log10(d) โดยที่ n คือสัมประสิทธิ์การลดทอน (2.0 สำหรับพื้นที่ว่าง 3.0–4.5 สำหรับสภาพแวดล้อมภายในอาคารที่มีสิ่งกีดขวาง) และ d คือระยะทางเป็นเมตร ในทางปฏิบัติ ความแม่นยำในการประเมินคือ ±2–5 เมตรในสภาพจริง

ในการปรับเทียบโมเดล จำเป็นต้องวัด RSSI ที่ ระยะทางที่ทราบ (โดยปกติ 1 ม.) และคำนวณค่าอ้างอิง 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 ดิบไม่เหมาะสม สำหรับการคำนวณที่แม่นยำ — มีสัญญาณรบกวนและค่าผิดปกติมากเกินไป วิธีการกรองถูกใช้เพื่อให้ได้การประเมินระยะทางที่เสถียร วิธีที่ง่ายที่สุดคือค่าเฉลี่ยเคลื่อนที่: หาค่าเฉลี่ยเลขคณิตของค่า RSSI N ค่าสุดท้าย โดยทั่วไป N = 5–10 ก็เพียงพอสำหรับการปรับให้เรียบของความผันผวนระยะสั้น

kotlin
// ตัวกรอง Kalman สำหรับ 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 {
        // ทำนาย
        errorCovariance += processNoise

        // อัปเดต
        val kalmanGain =
            errorCovariance /
            (errorCovariance + measurementNoise)

        estimate = estimate +
            kalmanGain * (rawRssi - estimate)

        errorCovariance =
            (1.0 - kalmanGain) * errorCovariance

        return estimate
    }
}

ตัวกรอง Kalman เป็นวิธีการขั้นสูงกว่าที่คำนึงถึงพลวัตของการเปลี่ยนแปลง RSSI และให้ความหน่วงน้อยกว่าค่าเฉลี่ยเคลื่อนที่ สำหรับบีคอนที่อยู่กับที่ ค่าเฉลี่ยเคลื่อนที่ให้ผลลัพธ์ที่ยอมรับได้ สำหรับอุปกรณ์ที่เคลื่อนที่ ตัวกรอง Kalman เหมาะสมกว่าเนื่องจากปรับตัวเข้ากับการเปลี่ยนแปลงได้เร็วกว่า นอกจากนี้ สามารถใช้ตัวกรองมัธยฐานเพื่อกำจัดค่าผิดปกติ

การรับ RSSI ใน iOS และ Android

iOS Core Bluetooth ให้ RSSI ผ่านคุณสมบัติ peripheral.rssi (NSNumber) หลังจากอ่าน RSSI เสร็จสิ้น เพื่อรับ RSSI ของแพ็กเกตโฆษณา ให้ใช้ advertisementData[CBAdvertisementDataRSSIKey] iOS ส่งคืน RSSI เป็นค่าเฉลี่ยในสามช่องสัญญาณ สำหรับการตรวจสอบ RSSI อย่างต่อเนื่อง ให้เรียก readRSSI ในช่วงเวลาที่ไม่เกินหนึ่งครั้งต่อวินาที

swift
// รับ RSSI บน iOS
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 ให้ RSSI ผ่าน callback onScanResult: result.getRssi() ค่า RSSI คือ RSSI ของแพ็กเกตโฆษณาล่าสุด (ไม่ใช่ค่าเฉลี่ย) เพื่อให้ได้ค่าที่เสถียร จำเป็นต้องสะสมหลายค่าและใช้การกรอง Android ยังให้ TX Power Level ผ่าน result.getScanRecord().getTxPowerLevel() หากมีการส่งในแพ็กเกตโฆษณา

kotlin
// รับ RSSI บน Android
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 ถึงเปลี่ยนแปลงแม้ว่าอุปกรณ์จะไม่เคลื่อนที่?

เนื่องจาก การแพร่กระจายแบบหลายเส้นทาง และความผันผวนของสัญญาณวิทยุ การสะท้อนจากกำแพงและวัตถุสร้างการรบกวนที่สัญญาณสลับกันแข็งแรงและอ่อนลง การเปลี่ยนแปลง RSSI 5–10 dB บนอุปกรณ์ที่อยู่นิ่งเป็นเรื่องปกติ

สามารถอ่าน RSSI บน iOS ได้บ่อยแค่ไหน?

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 ค่า สำหรับ อุปกรณ์ที่เคลื่อนที่ — ตัวกรอง Kalman ที่มีสัญญาณรบกวนกระบวนการต่ำ (0.01–0.05) เพื่อกำจัดค่าผิดปกติ ให้เพิ่มตัวกรองมัธยฐานที่ตัดค่าที่อยู่นอก 2 ส่วนเบี่ยงเบนมาตรฐาน

สรุป

  • RSSI คือตัวบ่งชี้ความแรงของสัญญาณ BLE ในหน่วย dBm ที่วัดที่ฝั่งรับเมื่อได้รับแต่ละแพ็กเกต
  • ช่วงค่า: ตั้งแต่ -30 dBm (สัญญาณยอดเยี่ยม) ถึง -100 dBm (สัญญาณอ่อนที่ขอบเขตการตรวจจับ)
  • RSSI ให้การประเมินระยะทางโดยประมาณด้วยความแม่นยำ ±2–5 เมตร แต่ ไม่ใช่เครื่องวัดระยะทางที่แม่นยำ เนื่องจากสัญญาณรบกวนและการรบกวน
  • แหล่งที่มาหลักของความคลาดเคลื่อน: สิ่งกีดขวาง (กำแพง คน) การแพร่กระจายแบบหลายเส้นทาง ทิศทางของเสาอากาศ และการรบกวน Wi-Fi
  • สำหรับการประเมินระยะทางที่เสถียร ใช้ การกรองแบบ Kalman ค่าเฉลี่ยเคลื่อนที่ และตัวกรองมัธยฐานเพื่อกำจัดค่าผิดปกติ
  • บน iOS RSSI คือค่าเฉลี่ยของสามช่องสัญญาณ บน Android คือค่าของ แพ็กเกตล่าสุด ซึ่งต้องกรองที่ฝั่งแอปพลิเคชัน
  • TX Power Level ในแพ็กเกตโฆษณาร่วมกับ RSSI ให้ Path Loss — การลดทอนสัญญาณทั้งหมดสำหรับการประเมินระยะทางที่แม่นยำยิ่งขึ้น

เราจะพัฒนาแอปพลิเคชันบนมือถือแบบครบวงจร

IT Sectr สร้างแอปพลิเคชัน iOS และ Android สำหรับสตาร์ทอัพและธุรกิจตั้งแต่ปี 2017 เราจะให้คำแนะนำและเสนอวิธีแก้ปัญหาที่ดีที่สุดแก่คุณ

ปรึกษาโครงการ

อ่านเพิ่มเติม