Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Как получить расстояние между точкой доступа Wi-Fi и мобильным устройством

Автор вопроса: AjayОтветов: 4

Я разрабатываю приложение для Android, в котором есть модуль для поиска всех ближайших/обнаруженных точек доступа Wi-Fi.

я могу получить всю информацию из найденной точки доступа Wi-Fi, например, SSID, BSSID, возможности, частоту, уровень и отметку времени

с этой информацией мне также нужно расстояние Wi-Fi (расстояние между точкой доступа Wi-Fi и мобильным устройством)

я использую строки ниже, чтобы получить Distance.

double exp = (27.55 - (20 * Math.log10(freqInMHz)) + Math.abs(levelInDb)) / 20.0;
double distanceM = Math.pow(10.0, exp);

это вернет расстояние в метрах.

я получил этот код по поиску в Google со многих страниц.

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

Пожалуйста помогите. как я могу получить расстояние между точкой доступа Wi-Fi и мобильным устройством?

  • Я не думаю, что это даже возможно. Может быть, вы можете получить очень, очень грубую оценку расстояния на основе уровня сигнала, но это будет зависеть от стольких параметров (мощность источника, стены, ориентация устройства...), что я сомневаюсь в этом. может быть какая-то польза. Orabîg 30.01.2015
  • возможный дубликат Как рассчитать расстояние от маршрутизатора Wi-Fi с помощью Signal Сила? Selvin 30.01.2015
  • Беспроводные сигналы перемещаются с определенной скоростью, поэтому теоретически можно рассчитать задержку между устройством и ближайшей точкой, я полагаю? Я понятия не имею, как, хотя расстояния настолько короткие, что кажется почти мгновенным. G_V 30.01.2015
  • улучшатся ли ваши результаты, если вы измеряете (скажем) 10 000 раз подряд, а затем вычисляете разницу на основе этих результатов? sschrass 30.01.2015
  • @Ajay Аджай Ты нашел какое-то решение? Igor Bykov 01.04.2016
  • @LgorB: Нет, но после этого я изменил способ проверки доступности Wi-Fi, проверяя связь каждые 20-30 секунд. Ajay 01.04.2016

androiddistanceaccess-pointandroid-wifi

Ответы

Ответ 1 · рейтинг 4 · datenwolf

Этот код:

double exp = (27,55 - (20 * Math.log10(freqInMHz)) + Math.abs(levelInDb)) / 20,0; двойное расстояниеM = Math.pow(10.0, exp);

Работает в предположении затухания на трассе в свободном пространстве между двумя изотропными антеннами и точкой доступа, передающей при мощности 20 дБм (и математика даже неверна; частотная зависимость потерь на трассе в свободном пространстве другая; это не имеет значения для диапазонов W-LAN, использует, исправление в 27,55).

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

Или, другими словами: совершенно непрактично получить надежное значение расстояния, просто взглянув на полученную мощность. Это может дать вам примерное значение порядка величины, но не что-то отдаленно точное. Это просто элементарная физика.

Единственным надежным способом измерения расстояния является время полета. Для этого необходимо измерить время прохождения сигнала между устройством и точкой доступа. Поскольку мы имеем дело со скоростью света и расстояниями порядка метров до 100 м (вверху), это означает измерение в наносекундах. Можно сделать, но требует некоторой работы. См. ссылку, которую дал вам SatelliteSD (она на немецком языке, но диаграммы и ключевые слова должны быть понятны).

Ответ 2 · рейтинг 1 · sschrass

Возможно, вы могли бы использовать подход Time-of-Flight. Имейте в виду, что вы не можете полагаться на полученные сообщения, но на полученные служебные данные (например, ACK) я могу найти только эту ссылку (на немецком языке) измерение времени работы сигнала Из беглого чтения я думаю это очень утомительное занятие.

Ответ 3 · AADProgramming

Нет, это невозможно.

Вы не сможете определить расстояние между точками доступа от текущего местоположения вашего устройства до фактической точки доступа.

Похоже, точки доступа не сообщают свои координаты.

Проверьте ссылку с более подробной информацией.

Ответ 4 · рейтинг -1 · Cüneyt

Существует метод под названием "триангуляция", но в этом случае у вас есть как минимум 3 точки доступа. Вы можете подробно ответить в этом pdf.

http://www.see.ed.ac.uk/~slig/papers/ITM2010.pdf

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы