วิธีคำนวณระยะทางจากเราเตอร์ Wifi โดยใช้ความแรงของสัญญาณ


84

ฉันต้องการคำนวณตำแหน่งที่แน่นอนของอุปกรณ์เคลื่อนที่ภายในอาคาร (จึงไม่มีการเข้าถึง GPS)

ฉันต้องการทำสิ่งนี้โดยใช้ความแรงของสัญญาณ (เป็น dBm) ของสัญญาณ wifi คงที่อย่างน้อย 3 ตัว (เราเตอร์คงที่ 3 ตัวซึ่งฉันรู้ตำแหน่ง)

Google ทำเช่นนั้นแล้วและฉันต้องการทราบว่าพวกเขาหาตำแหน่งที่แน่นอนตามข้อมูลนี้ได้อย่างไร

อ่านบทความนี้เพื่อดูรายละเอียดเพิ่มเติม: http://www.codeproject.com/Articles/63747/Exploring-GoogleGears-Wi-Fi-Geo-Locator-Secrets


stackoverflow.com/questions/4071539/… นี่คือลิงค์สำหรับการอ้างอิงของคุณ
yokoyoko

4
คำถามนี้ดูเหมือนจะไม่ตรงประเด็นเนื่องจากเป็นเรื่องเกี่ยวกับวิศวกรรมไฟฟ้า ฉันขอแนะนำให้ย้ายไปที่electronics.stackexchange.com
Danny Varod

@lhab ฮัจญ์ความต้องการของฉันเหมือนกับของคุณ ต้องแก้ปัญหานี้หรือไม่? โปรดแบ่งปันความคิดของคุณเพื่อให้คนอื่น ๆ ได้เรียนรู้จากสิ่งนั้น ขอขอบคุณ.
anddev

คำตอบ:


47

FSPL ขึ้นอยู่กับสองพารามิเตอร์: ประการแรกคือความถี่ของสัญญาณวิทยุ; ประการที่สองคือระยะการส่งไร้สาย สูตรต่อไปนี้สามารถสะท้อนความสัมพันธ์ระหว่างกันได้

FSPL (dB) = 20log10(d) + 20log10(f) + K

d = distance
f = frequency
K= constant that depends on the units used for d and f
If d is measured in kilometers, f in MHz, the formula is:

FSPL (dB) = 20log10(d)+ 20log10(f) + 32.44

จากสมการ Fade Margin การสูญเสียเส้นทางพื้นที่ว่างสามารถคำนวณได้ด้วยสมการต่อไปนี้

การสูญเสียเส้นทางพื้นที่ว่าง = การสูญเสียสายเคเบิล Tx Power-Tx + การเพิ่มเสาอากาศ Tx + การเพิ่มเสาอากาศ Rx - การสูญเสียสายเคเบิล Rx - ความไว Rx - Fade Margin

ด้วยสมการการสูญเสียเส้นทางอวกาศอิสระสองสมการข้างต้นเราสามารถหาระยะทางเป็นกม.

Distance (km) = 10(Free Space Path Loss – 32.44 – 20log10(f))/20

Fresnel Zone เป็นพื้นที่รอบ ๆ เส้นสายตาที่คลื่นวิทยุกระจายออกไปหลังจากออกจากเสาอากาศ คุณต้องการแนวสายตาที่ชัดเจนเพื่อรักษาความแข็งแกร่งโดยเฉพาะระบบไร้สาย 2.4GHz เนื่องจากคลื่น 2.4GHz ถูกดูดซับโดยน้ำเช่นเดียวกับน้ำที่พบในต้นไม้ หลักการง่ายๆคือ 60% ของ Fresnel Zone ต้องปราศจากอุปสรรค โดยปกติการอุดตันของ Fresnel Zone 20% จะทำให้สัญญาณสูญเสียเพียงเล็กน้อยไปยังลิงก์ การอุดตันเกินกว่า 40% การสูญเสียสัญญาณจะกลายเป็นเรื่องสำคัญ

FSPLr=17.32*√(d/4f)

d = distance [km]
f = frequency [GHz]
r = radius [m]

ที่มา: http://www.tp-link.com/en/support/calculator/


3
คำตอบที่ดีและฉันมีคำถามติดตาม การวัดมีความแม่นยำเพียงใด? กล่าวอีกนัยหนึ่งฉันสามารถรับความแม่นยำในช่วงนิ้ว / เซนติเมตรได้หรือไม่?
Chiwda

33

ในการคำนวณระยะทางคุณต้องมีความแรงของสัญญาณและความถี่ของสัญญาณ นี่คือรหัส java:

public double calculateDistance(double signalLevelInDb, double freqInMHz) {
    double exp = (27.55 - (20 * Math.log10(freqInMHz)) + Math.abs(signalLevelInDb)) / 20.0;
    return Math.pow(10.0, exp);
}

สูตรที่ใช้คือ:

ระยะทาง = 10 ^ ((27.55 - (20 * log10 (ความถี่)) + signalLevel) / 20)

ตัวอย่าง: ความถี่ = 2412MHz, signalLevel = -57dbm, ผลลัพธ์ = 7.000397427391188m

สูตรนี้จะเปลี่ยนรูปแบบของพื้นที่ฟรีเส้นทางขาดทุน (FSPL)สูตร ที่นี่ระยะทางวัดเป็นเมตรและความถี่ - เป็นเมกะเฮิรตซ์ สำหรับมาตรการอื่น ๆ คุณต้องใช้ค่าคงที่ต่างกัน (27.55) อ่านคงที่นี่

สำหรับข้อมูลเพิ่มเติมอ่านที่นี่


ขอบคุณที่ระบุว่าควรเป็นค่าสัมบูรณ์ของระดับสัญญาณฉันกำลังค้นหาบางครั้งว่าฉันทำอะไรผิด!
Yiannis Tsimalis

@YiannisTsimalis คำถามเริ่มต้น: มันควรจะเป็นค่าสัมบูรณ์หรือแค่คูณด้วยค่าลบ? จะเกิดอะไรขึ้นถ้าระดับสัญญาณเป็นบวก dBm?
Ellis Valentiner

@ user12202013 อืมฉันคิดว่ามันขึ้นอยู่กับว่าจุดเชื่อมต่อของคุณทำงานอย่างไร ฉันหมายถึงโดยทั่วไประบบ dBm บ่งบอกว่าสัญญาณของคุณมีเสียงดังแค่ไหน หากค่าสูงกว่าแสดงว่าสัญญาณดังกว่าซึ่งหมายความว่าสัญญาณนั้นอ่อนลง หรืออย่างน้อยก็เป็นอย่างที่ฉันเข้าใจ ..
Yiannis Tsimalis

@YiannisTsimalis ฉันคิดโดยทั่วไปมากขึ้น แต่หลังจากดูสูตรแล้วฉันคิดว่าค่าสัมบูรณ์ถูกต้องเพราะระยะทางควรเป็นบวก
Ellis Valentiner

1
ฉันได้ตรวจสอบสูตรนี้มาระยะหนึ่งแล้วและฉันสรุปว่ามันผิดอย่างสิ้นเชิง! FSPL วัดเป็น db ในขณะที่ signalLevel วัดเป็น dbm อาจให้ผลการประมาณที่ดี แต่ผลลัพธ์อาจยุ่งเหยิงได้ง่ายเมื่อระยะทางค่อนข้างมาก
Ahmed Hammad

16
K = 32.44
FSPL = Ptx - CLtx + AGtx + AGrx - CLrx - Prx - FM
d = 10 ^ (( FSPL - K - 20 log10( f )) / 20 )

ที่นี่:

  • K- ค่าคงที่ (32.44 เมื่อเป็นfMHz และเป็นdกม. เปลี่ยนเป็น -27.55 เมื่อเป็นfMHz และเป็นdm)
  • FSPL - การสูญเสียเส้นทางอวกาศฟรี
  • Ptx - กำลังส่ง dBm (สูงถึง 20 dBm (100mW))
  • CLtx, CLrx- การสูญเสียสายเคเบิลที่เครื่องส่งและตัวรับ, dB (0 ถ้าไม่มีสาย)
  • AGtx, AGrx- กำลังรับเสาอากาศที่เครื่องส่งและตัวรับ, dBi
  • Prx - ความไวของตัวรับ dBm (ลดลงถึง -100 dBm (0.1pW))
  • FM - ขอบจาง dB (มากกว่า 14 dB (ปกติ) หรือมากกว่า 22 dB (ดี))
  • f - ความถี่สัญญาณ MHz
  • d - ระยะทางม. หรือกม. (ขึ้นอยู่กับค่า K)

หมายเหตุ: มีข้อผิดพลาดในสูตรจากไซต์สนับสนุน TP-Link (mising ^)

แทนที่Prxด้วยความแรงของสัญญาณที่ได้รับเพื่อให้ได้ระยะทางจาก WiFi AP

ตัวอย่าง: Ptx = 16 dBm, AGtx = 2 dBi, AGrx = 0, Prx = -51 dBm (ความแรงของสัญญาณที่ได้รับ), CLtx = 0, CLrx = 0, f = 2442 MHz (ช่อง 802.11bgn ที่ 7), FM = 22. ผลลัพธ์: FSPL = 47 dB, d = 2.1865 ม

หมายเหตุ: FM (ขอบจาง) ดูเหมือนจะไม่เกี่ยวข้องที่นี่ แต่ฉันจะทิ้งมันไปเพราะสูตรดั้งเดิม

คุณควรเข้าไปในกำแพงบัญชีตารางhttp://www.liveport.com/wifi-signal-attenuationอาจช่วยได้

ตัวอย่าง: (ข้อมูลก่อนหน้า) + ผนังไม้หนึ่งอัน (5 เดซิเบลจากตาราง) ผลลัพธ์: FSPL = FSPL - 5 dB = 44 dB, d = 1.548 m

นอกจากนี้โปรดทราบว่าการได้รับแอนเทนาไม่ได้เพิ่มกำลัง - อธิบายถึงรูปร่างของรูปแบบการแผ่รังสี (โดนัทในกรณีของแอนเทนารอบทิศทาง, เรือเหาะในกรณีของเสาอากาศแบบกำหนดทิศทาง ฯลฯ )

สิ่งนี้ไม่ได้คำนึงถึงการสะท้อนสัญญาณ (ไม่รู้ว่าจะทำอย่างไร) เสียงรบกวนอาจหายไปด้วย ดังนั้นคณิตศาสตร์นี้อาจดีสำหรับการประมาณระยะทางคร่าวๆเท่านั้น


7

คำตอบง่ายๆสำหรับคำถามของคุณคือรูปสามเหลี่ยม ซึ่งโดยพื้นฐานแล้วเป็นแนวคิดในอุปกรณ์ GPS ทั้งหมดฉันจะให้บทความนี้อ่านเพื่อเรียนรู้เพิ่มเติมว่า Google ดำเนินการอย่างไร: http://www.computerworld.com/s/article/9127462/FAQ_How_Google_Latitude_locates_you_?taxonomyId=15&pageNumber= 2 .

จากความเข้าใจของฉันพวกเขาใช้บริการที่คล้ายกับSkyhookซึ่งเป็นซอฟต์แวร์ระบุตำแหน่งที่กำหนดตำแหน่งของคุณตามสัญญาณ wifi / โทรศัพท์มือถือของคุณ เพื่อให้บรรลุความถูกต้องบริการเหล่านี้มีเซิร์ฟเวอร์ฐานข้อมูลขนาดใหญ่ที่จัดเก็บข้อมูลตำแหน่งบนเสาสัญญาณและจุดเชื่อมต่อ wifi - พวกเขาสำรวจพื้นที่ในเขตเมืองเพื่อให้ทันสมัย เพื่อให้คุณบรรลุสิ่งที่คล้ายกันฉันจะถือว่าคุณต้องใช้บริการเช่น Skyhook - คุณสามารถใช้ SDK ของพวกเขาได้ ( http://www.skyhookwireless.com/location-technology/ )

อย่างไรก็ตามหากคุณต้องการทำบางสิ่งภายใน (เช่นการใช้ตำแหน่งของเราเตอร์ของคุณเอง) คุณอาจต้องสร้างอัลกอริทึมที่เลียนแบบรูปสามเหลี่ยม คุณจะต้องหาวิธีรับsignal_strengthและmac_addressอุปกรณ์และใช้ข้อมูลดังกล่าวพร้อมกับตำแหน่งของเราเตอร์ของคุณเพื่อหาตำแหน่ง คุณอาจได้รับข้อมูลเกี่ยวกับอุปกรณ์ที่เชื่อมต่อกับเราเตอร์ของคุณโดยทำสิ่งที่คล้ายกันนี้ ( http://www.makeuseof.com/tag/check-stealing-wifi/ )


นี่เป็นงานที่ยุ่งยากและท้าทายคุณทำให้ฉันกระตือรือร้นที่จะเรียนรู้เพิ่มเติมเกี่ยวกับบริการระบุตำแหน่งในด้านนี้.. โปรดโพสต์ข้อมูล / ข้อมูลเชิงลึกใหม่ ๆ ที่คุณได้รับเกี่ยวกับปัญหานี้ฉันสนใจที่จะรู้วิธีแก้ปัญหา
Suvi Vignarajah

5

ระยะทาง (กม.) = 10 ^ ((การสูญเสียเส้นทางอวกาศ - 92.45 - 20log10 (f)) / 20)


1

โดยทั่วไปนี้เป็นวิธีที่ดีจริงๆในการทำสิ่งที่เกิดจากการรบกวน multipath นี่เป็นคำถามทางวิศวกรรม RF มากกว่าคำถามเกี่ยวกับการเข้ารหัส

Tl; dr, พลังงาน RF ของ wifi จะกระจัดกระจายไปในทิศทางต่างๆหลังจากที่กระเด็นออกจากกำแพง, ผู้คน, พื้น ฯลฯ ไม่มีทางบอกได้ว่าคุณอยู่ที่ไหนด้วยการสามเหลี่ยมเพียงอย่างเดียวเว้นแต่คุณจะอยู่ในห้องว่างที่มีสัญญาณไวไฟอยู่ ถูกที่แล้ว

Google สามารถหลีกเลี่ยงสิ่งนี้ได้เนื่องจากโดยพื้นฐานแล้วพวกเขาสามารถทำแผนที่ได้ว่า wifi SSID ทุกตัวอยู่ที่ตำแหน่ง GPS เมื่อใดก็ตามที่ผู้ใช้ Android (ที่เลือกใช้บริการของตน) เดินเข้าไปในระยะ ด้วยวิธีนี้ในครั้งต่อไปที่ผู้ใช้เดินผ่านไปที่นั่นแม้ว่าจะไม่มีสัญญาณ GPS ที่สมบูรณ์แบบก็ตาม google mothership สามารถบอกได้ว่าคุณอยู่ที่ไหน โดยทั่วไปแล้วจะใช้ร่วมกับสัญญาณ GPS เส็งเคร็ง

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


สำหรับข้อมูลเพิ่มเติมว่า Google ทำอย่างไรstackoverflow.com/questions/1668304/…
yhyrcanus

-5

ไม่สนว่าคุณจะเป็นผู้ดูแล ฉันเขียนข้อความถึงผู้ชมของฉันไม่ใช่ในฐานะนักเขียนด้านเทคนิค

พวกคุณทุกคนต้องเรียนรู้การนำทางด้วยเครื่องมือที่ใช้ GPS รุ่นก่อน บางอย่างเช่น sextant, octant, backstaff หรือ astrolabe

หากคุณได้รับสัญญาณจาก 3 ตำแหน่งที่แตกต่างกันคุณจะต้องวัดความแรงของสัญญาณและสร้างอัตราส่วนจากตำแหน่งเหล่านั้น การคำนวณสามเหลี่ยมอย่างง่ายโดยที่ a2 + b2 = c2 ยิ่งสัญญาณมีความแรงมากเท่าไหร่อุปกรณ์ก็ยิ่งอยู่ใกล้เครื่องรับมากขึ้นเท่านั้น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.