Я хочу рассчитать точное местонахождение мобильного устройства внутри здания (без доступа к GPS)
Я хочу сделать это, используя уровень сигнала (в дБм) как минимум 3 фиксированных сигналов Wi-Fi (3 фиксированных маршрутизатора, положение которых я знаю)
Google уже делает это, и я хотел бы знать, как они определяют точное местоположение на основе этих данных.
Дополнительную информацию можно найти в этой статье: http://www.codeproject.com/Articles/63747/Exploring-GoogleGears-Wi-Fi-Geo-Locator-Secrets.
Ответы:
FSPL зависит от двух параметров: первый - это частота радиосигналов; второй - расстояние беспроводной передачи. Следующая формула может отражать отношения между ними.
Потери на свободном пути в свободном пространстве можно вычислить по уравнению запаса замираний с помощью следующего уравнения.
Потери на свободном пути = Потери в кабеле Tx Power-Tx + Усиление Tx-антенны + Усиление Rx-антенны - Потери в Rx-кабеле - Чувствительность Rx - Запас замирания
С помощью двух приведенных выше уравнений потерь на пробеге в свободном пространстве мы можем определить расстояние в км.
Зона Френеля - это область вокруг прямой видимости, в которую распространяются радиоволны после того, как они покидают антенну. Вам нужна прямая видимость для поддержания прочности, особенно для беспроводных систем 2,4 ГГц. Это потому, что волны 2,4 ГГц поглощаются водой, как вода в деревьях. Эмпирическое правило гласит, что 60% зоны Френеля должны быть свободны от препятствий. Как правило, 20% блокировка зоны Френеля приводит к незначительной потере сигнала в линии. При блокировании более 40% потеря сигнала станет значительной.
Источник: http://www.tp-link.com/en/support/calculator/
источник
Для расчета расстояния вам потребуется мощность сигнала и частота сигнала. Вот код Java:
Используемая формула:
Пример: частота = 2412 МГц, уровень сигнала = -57 дБм, результат = 7.000397427391188 м
Эта формула является преобразованной формой формулы потерь на свободном пути (FSPL) . Здесь расстояние измеряется в метрах, а частота - в мегагерцах. Для других мер вы должны использовать другую константу (27,55). Читайте константы здесь .
Подробнее читайте здесь .
источник
Вот:
K
- постоянная (32,44,f
в МГц иd
в км, изменить на -27,55f
в МГц и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 м
Также обратите внимание, что усиление антенны не добавляет мощности - оно описывает форму диаграммы направленности (пончик в случае всенаправленной антенны, цеппелин в случае направленной антенны и т. Д.).
Ничего из этого не учитывает отражения сигнала (понятия не имею, как это сделать). Наверное шум тоже отсутствует. Так что эта математика может быть полезна только для приблизительной оценки расстояния.
источник
простой ответ на ваш вопрос - триангуляция. Это, по сути, концепция всех устройств 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)
источник
В общем, это действительно плохой способ работы из-за многолучевых помех . Это определенно больше вопрос радиотехники, чем кодирования.
Tl; dr, радиочастотная энергия Wi-Fi рассеивается в разных направлениях после отражения от стен, людей, пола и т. Д. Невозможно определить, где вы находитесь, только с помощью триангуляции, если только вы не находитесь в пустой комнате с размещенными в ней маяками Wi-Fi. именно в нужном месте.
Google может уйти от этого, потому что они, по сути, могут сопоставить, где каждый SSID Wi-Fi находится с местоположением GPS, когда любой пользователь Android (который выбирает их службу) входит в зону действия. Таким образом, в следующий раз, когда пользователь пройдет мимо, даже без идеального сигнала GPS, материнский корабль Google сможет определить, где вы находитесь. Обычно они используют это в сочетании с плохим сигналом GPS.
То, что я видел, - это сетка устройств Zigbee или BTLE. Если вы знаете, где они расположены, вы можете использовать объединенный RSS, чтобы определить, к каким из них вы ближе всего, и перейти оттуда.
источник
Пофиг, если вы модератор. Я писал свой текст своей аудитории не как технический писатель
Все, что вам нужно, чтобы научиться ориентироваться с помощью инструментов, предшествующих GPS. Что-то вроде секстанта, октанта, посоха или астролябии.
Если вы получили сигнал из 3 разных мест, вам нужно только измерить мощность сигнала и сделать соотношение из этих мест. Расчет простого треугольника, где a2 + b2 = c2. Чем сильнее сигнал, тем ближе устройство к приемнику.
источник