Как рассчитать расстояние от Wifi-маршрутизатора, используя силу сигнала?
Я хотел бы рассчитать точное местоположение мобильного устройства внутри здания (так что нет доступа к GPS)
Я хочу сделать это, используя силу сигнала (в дБм) не менее 3 фиксированных сигналов Wi-Fi (3 фиксированных маршрутизатора, из которых я знаю позицию)
Google уже делает это, и я хотел бы знать, как они определяют точное местоположение на основе этих данных.
Проверьте эту статью для получения более подробной информации: http://www.codeproject.com/Articles/63747/Exploring-GoogleGears-Wi-Fi-Geo-Locator-Secrets
Ответы
Ответ 1
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 - граница затухания
С помощью вышеупомянутых двух уравнений потери свободного пространства пути мы можем узнать расстояние в км.
Distance (km) = 10(Free Space Path Loss – 32.44 – 20log10(f))/20
Зона Френеля - это область вокруг визуальной прямой видимости, с которой распространяются радиоволны после того, как они покидают антенну. Вы нуждаетесь в четкой видимости для поддержания силы, особенно для беспроводных систем 2,4 ГГц. Это объясняется тем, что волны 2,4 ГГц поглощаются водой, как вода, найденная в деревьях. Эмпирическое правило состоит в том, что 60% зоны Френеля должны быть свободны от препятствий. Как правило, 20% блокировки зоны Френеля вносит незначительную потерю сигнала в ссылку. За 40% -ой блокировкой потеря сигнала станет значительной.
FSPLr=17.32*√(d/4f)
d = distance [km]
f = frequency [GHz]
r = radius [m]
Источник: http://www.tp-link.com/en/support/calculator/
Ответ 2
Чтобы рассчитать расстояние, вам нужна мощность сигнала и частота сигнала. Вот код 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);
}
Используемая формула:
distance = 10 ^ ((27.55 - (20 * log10 (частота)) + signalLevel)/20)
Пример: частота = 2412 МГц, signalLevel = -57dbm, result = 7.000397427391188m
Эта формула преобразуется в форму формулу свободного пробега пути (FSPL). Здесь расстояние измеряется в метрах, а частота - в мегагерцах. Для других мер вы должны использовать разные константы (27.55). Читайте для констант здесь.
Подробнее читайте здесь.
Ответ 3
K = 32.44
FSPL = Ptx - CLtx + AGtx + AGrx - CLrx - Prx - FM
d = 10 ^ (( FSPL - K - 20 log10( f )) / 20 )
Вот:
-
K
- постоянная (32,44, когда f
в МГц и d
в км, изменить на -27.55 при f
в МГц и d
в м) -
FSPL
- потеря свободного пространства -
Ptx
- мощность передатчика, дБм (до 20 дБм (Ptx
)) -
CLtx
, CLrx
- потери в кабеле на передатчике и приемнике, дБ (0, если нет кабелей) -
AGtx
, AGrx
- усиление антенны на передатчике и приемнике, дБи -
Prx
- чувствительность приемника, дБм (до -100 дБм (0,1 пВт)) -
FM
- запас по замиранию, дБ (более 14 дБ (нормально) или более 22 дБ (хорошо)) -
f
- частота сигнала, МГц -
d
- расстояние, м или км (зависит от значения K)
Примечание: в формулах с сайта поддержки TP-Link есть ошибка (mising ^
).
Замените Prx
принятого сигнала, чтобы получить расстояние от точки доступа WiFi.
Пример: Ptx = 16 дБм, AGtx = 2 дБи, AGrx = 0, Prx = -51 дБм (уровень принятого сигнала), CLtx = 0, CLrx = 0, f = 2442 МГц (7-й канал 802.11bgn), FM = 22. Результат: FSPL = 47 дБ, d = 2,1865 м
Примечание: FM (поле затухания) здесь не имеет значения, но я оставляю его из-за оригинальной формулы.
Вы должны принять во внимание стены, таблица может помочь http://www.liveport.com/wifi-signal-attenuation.
Пример: (предыдущие данные) + одна деревянная стена (5 дБ, из таблицы). Результат: FSPL = FSPL - 5 дБ = 44 дБ, d = 1,548 м
Также обратите внимание, что усиление антенны не добавляет мощности - оно описывает форму диаграммы направленности (пончик в случае всенаправленной антенны, дирижабль в случае направленной антенны и т.д.).
Ничто из этого не учитывает отражения сигнала (не знаю, как это сделать). Вероятно, шум также отсутствует. Так что эта математика может быть полезна только для приблизительной оценки расстояния.
Ответ 4
простой ответ на ваш вопрос будет триангуляции. По сути, это концепция всех GPS-устройств. Я хотел бы прочитать эту статью, чтобы узнать больше о том, как Google делает это: http://www.computerworld.com/s/article/9127462/FAQ_How_Google_Latitude_locates_you_?taxonomyId=15&pageNumber= 2
Насколько я понимаю, они используют сервис, похожий на Skyhook, который представляет собой программное обеспечение для определения местоположения, которое определяет ваше местоположение на основе ваших сигналов Wi-Fi/мобильного телефона. Чтобы достичь своей точности, эти сервисы имеют большие серверы баз данных, которые хранят информацию о местоположении на этих вышках сотовой связи и точках доступа Wi-Fi - они фактически обследуют мегаполисы, чтобы поддерживать их в актуальном состоянии. Чтобы вы могли достичь чего-то похожего, я бы предположил, что вам придется использовать такой сервис, как Skyhook - вы можете использовать их SDK (http://www.skyhookwireless.com/location-technology/).
Однако, если вы хотите сделать что-то внутреннее (например, с использованием местоположений ваших собственных маршрутизаторов) - тогда вам, вероятно, придется создать алгоритм, имитирующий триангуляцию. Вам нужно будет найти способ получить signal_strength
и mac_address
устройства и использовать эту информацию вместе с местоположением ваших маршрутизаторов, чтобы найти это местоположение. Вероятно, вы можете получить информацию об устройствах, подключенных к вашим маршрутизаторам, выполнив что-то подобное (http://www.makeuseof.com/tag/check-stealing-wifi/).
Ответ 5
Расстояние (км) = 10 ^ ((Потеря свободного пробега - 92.45 - 20log10 (f))/20)
Ответ 6
В общем, это действительно плохой способ работы из-за многолучевых помех. Это, безусловно, больше инженерный вопрос, чем вопрос кодирования.
Tl; dr, радиочастотная энергия Wi-Fi рассеивается в разных направлениях после отскока от стен, людей, пола и т.д. Невозможно определить, где вы находитесь, используя только триангуляцию, если только вы не находитесь в пустой комнате с маяками Wi-Fi, размещенными в точно в правильном месте.
Google может обойтись без этого, потому что, по сути, они могут сопоставить, где каждый SSID Wi-Fi находится в местоположении GPS, когда любой пользователь Android (который подключается к их сервису) входит в зону действия. Таким образом, в следующий раз, когда пользователь будет проходить мимо, даже без идеального сигнала GPS, материнское устройство Google может определить ваше местоположение. Как правило, они будут использовать это в сочетании с дерьмовым сигналом GPS.
То, что я видел, это сетка устройств Zigbee или BTLE. Если вы знаете, где они расположены, вы можете использовать объединенный RSS-канал, чтобы выяснить, к каким из них вы ближе всего, и перейти оттуда.
Ответ 7
Не волнует, если вы модератор. Я написал свой текст для моей аудитории, а не как технический писатель
Все, что вы, ребята, должны научиться ориентироваться с помощью инструментов, предшествующих GPS. Что-то вроде секстанта, октанта, бэкстаффа или астролябии.
Если вы получили сигнал из 3 разных мест, вам нужно только измерить уровень сигнала и составить соотношение из этих мест. Простой расчет треугольника, где a2 + b2 = c2. Чем сильнее уровень сигнала, тем ближе устройство к приемнику.