Как рассчитать расстояние от Wi-Fi роутера с помощью силы сигнала?

84

Я хочу рассчитать точное местонахождение мобильного устройства внутри здания (без доступа к GPS)

Я хочу сделать это, используя уровень сигнала (в дБм) как минимум 3 фиксированных сигналов Wi-Fi (3 фиксированных маршрутизатора, положение которых я знаю)

Google уже делает это, и я хотел бы знать, как они определяют точное местоположение на основе этих данных.

Дополнительную информацию можно найти в этой статье: http://www.codeproject.com/Articles/63747/Exploring-GoogleGears-Wi-Fi-Geo-Locator-Secrets.

Ихаб
источник
stackoverflow.com/questions/4071539/… Вот ссылка для справки.
yokoyoko
4
Этот вопрос кажется не по теме, потому что он касается электротехники. Я предлагаю перейти на electronics.stackexchange.com
Дэнни Варод
@lhab Hajj, мое требование такое же, как и ваше. Придется решить это? Пожалуйста, поделитесь своей идеей, чтобы другие тоже могли извлечь из этого урок. Спасибо.
anddev 09

Ответы:

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

Потери на свободном пути в свободном пространстве можно вычислить по уравнению запаса замираний с помощью следующего уравнения.

Потери на свободном пути = Потери в кабеле 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/

Ихаб
источник
3
Хороший ответ, и у меня есть дополнительный вопрос. Насколько точны измерения? Другими словами, могу ли я получить точность в диапазоне дюймов / сантиметров?
Chiwda 05
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)

Пример: частота = 2412 МГц, уровень сигнала = -57 дБм, результат = 7.000397427391188 м

Эта формула является преобразованной формой формулы потерь на свободном пути (FSPL) . Здесь расстояние измеряется в метрах, а частота - в мегагерцах. Для других мер вы должны использовать другую константу (27,55). Читайте константы здесь .

Подробнее читайте здесь .

Марио Кутлев
источник
Спасибо, что указали, что это должно быть абсолютное значение уровня сигнала, я какое-то время искал, что я ошибся!
Яннис Цималис,
@YiannisTsimalis вопрос для начинающих: должно быть абсолютное значение или просто умножить на отрицательное? Что, если уровень сигнала был положительным дБм?
Эллис Валентинер
@ user12202013 хм Я думаю это зависит от того, как у вас работает точка доступа. Я имею в виду, как правило, система дБм показывает, насколько зашумлен ваш сигнал. Если значение больше, то сигнал более шумный, что фактически означает, что сигнал слабее. Или, по крайней мере, так я понимаю ...
Яннис Цималис
@YiannisTsimalis Я думал в более общем плане, но, посмотрев на формулу, я считаю, что абсолютное значение правильное, потому что расстояние должно быть положительным
Эллис Валентинер
1
Я исследовал эту формулу уже довольно долго и пришел к выводу, что это совершенно неверно! FSPL измеряется в дБ, а уровень сигнала измеряется в дБм. Это может дать хорошую оценку, но результаты могут легко испортиться, когда расстояние станет довольно большим.
Ахмед Хаммад
16
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 дБм (100 мВт))
  • 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 м

Также обратите внимание, что усиление антенны не добавляет мощности - оно описывает форму диаграммы направленности (пончик в случае всенаправленной антенны, цеппелин в случае направленной антенны и т. Д.).

Ничего из этого не учитывает отражения сигнала (понятия не имею, как это сделать). Наверное шум тоже отсутствует. Так что эта математика может быть полезна только для приблизительной оценки расстояния.

Kestasx
источник
7

простой ответ на ваш вопрос - триангуляция. Это, по сути, концепция всех устройств 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/ ).

Суви Виньяраджа
источник
это сложная и трудная задача, вы меня заинтересовали в том, чтобы узнать больше об этом аспекте служб определения местоположения .. пожалуйста, публикуйте любую новую информацию / идеи, которые вы получите по этой проблеме, мне интересно узнать, как вы ее решаете
Suvi Vignarajah
5

Расстояние (км) = 10 ^ ((Потери на трассе в свободном пространстве - 92,45 - 20log10 (f)) / 20)

МАКСИМУМ
источник
1

В общем, это действительно плохой способ работы из-за многолучевых помех . Это определенно больше вопрос радиотехники, чем кодирования.

Tl; dr, радиочастотная энергия Wi-Fi рассеивается в разных направлениях после отражения от стен, людей, пола и т. Д. Невозможно определить, где вы находитесь, только с помощью триангуляции, если только вы не находитесь в пустой комнате с размещенными в ней маяками Wi-Fi. именно в нужном месте.

Google может уйти от этого, потому что они, по сути, могут сопоставить, где каждый SSID Wi-Fi находится с местоположением GPS, когда любой пользователь Android (который выбирает их службу) входит в зону действия. Таким образом, в следующий раз, когда пользователь пройдет мимо, даже без идеального сигнала GPS, материнский корабль Google сможет определить, где вы находитесь. Обычно они используют это в сочетании с плохим сигналом GPS.

То, что я видел, - это сетка устройств Zigbee или BTLE. Если вы знаете, где они расположены, вы можете использовать объединенный RSS, чтобы определить, к каким из них вы ближе всего, и перейти оттуда.

Yhyrcanus
источник
Для получения дополнительной информации о том, как это делает Google, stackoverflow.com/questions/1668304/…
yhyrcanus
-5

Пофиг, если вы модератор. Я писал свой текст своей аудитории не как технический писатель

Все, что вам нужно, чтобы научиться ориентироваться с помощью инструментов, предшествующих GPS. Что-то вроде секстанта, октанта, посоха или астролябии.

Если вы получили сигнал из 3 разных мест, вам нужно только измерить мощность сигнала и сделать соотношение из этих мест. Расчет простого треугольника, где a2 + b2 = c2. Чем сильнее сигнал, тем ближе устройство к приемнику.

Уэйн Хамберг
источник