Как рассчитать расстояние от Wifi-маршрутизатора, используя силу сигнала?

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

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

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

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

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/

Для расчета расстояния вам потребуется мощность сигнала и частота сигнала. Вот код 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 МГц, signalLevel = -57dbm, result = 7.000397427391188m

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

Для получения дополнительной информации читайте здесь .

 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 – расстояние, m или км (зависит от значения K)

Примечание: в формулах сайта поддержки TP-Link есть ошибка. (Mising ^ ).

Замените Prx с мощностью принятого сигнала, чтобы получить расстояние от WiFi AP.

Пример: 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 м

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

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

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

Расстояние (км) = 10 ^ ((потеря свободного пробега – 92.45 – 20log10 (f)) / 20)

Interesting Posts

Как использовать два внешних монитора на Alienware m17x вместе с монитором ноутбука (всего 3 монитора)

Excel: как внутренне хранить числовое значение в ячейке, но сделать ее по-разному (например, алфавитные имена)?

Изменяйте программный цвет с возможностью рисования

Как разблокировать файлы chm – кнопка разблокирования отсутствует

Spring @ExceptionHandler не работает с @ResponseBody

Кастинг LinkedHashMap для сложного объекта

Бесплатная программа для синхронизации папки с FTP?

Разделение разделов на вопросы Windows 7

Ошибка: Ошибка в настройке ресурсов. Ожидаемый ответ содержать массив, но получил объект?

Не удается использовать службы WCF в IIS для Windows 8

Причины того, почему лейбл WinForms не хочет быть прозрачным?

Восстановление Windows 7 с меньшим жестким диском

Каковы основные правила и идиомы для перегрузки оператора?

Как я могу создать функцию с обработчиком завершения в Swift?

Перемещение Windows XP на новый ПК

Давайте будем гением компьютера.