• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Позиционирование в сетях Wi-Fi

kharlashkin

New member
Добрый день всем.
После довольно довольно успешной реализации на ESP8266 отслеживания вращения твердых тел в пространстве и передачи данных по MQTT протоколу на ПК встал вопрос отслеживать позиционирование носителя датчиков в помещении. У меня есть реализация перемещения через определение вектора от акселерометра, но точность заставляет желать лучшего - раз, и учитывая девиацию по магнитометру - невозможно просчитать точно перемещение. Для общего понимания как вообще может работать данная технология рекомендую для начала эту статью и гугль.
Сходу на форуме не нашел довольно полного объяснения что к чему, сам сейчас ковыряю математику по трилатерации, мультилатерации и триангуляции. Теперь собственно пару вопросов:
  • Promiscuous mode - кто копал более глубоко чем установка готовых прошивок? Может кто соизволит более подробно советом помочь, чем ткнуть в документацию.
  • Wifi.monitor - то же самое как и выше или нет.
  • Time Of Flight - есть на родном форуме упоминание что вроде как разработчики собираются добавить данный функционал. И я где-то встречал упоминание что для ESP32 для протокола ESPNOW и так же есть наработки здесь.
В общем, тема интересная - предлагаю обсуждать и пробовать.
 

Victor

Administrator
Команда форума
Promiscuous mode для 8266 не очень интересен для этих целей: RSSI сильно плавает (часто в разы) и не отражает реальную силу сигнала - максимум это можно отключать клиентов от роутера (DeAuth пакеты), анонсировать несуществующие WiFi сети с веселыми названиями (рассылка beacon каждые 100мс) или прикидываться какими-то популярными открытыми сетями (те же беконы). TOA - Time of arrival решений на 8266 даже с модулем GPS также не сделать в силу низкой производительности и одного ядра (поддержание низкоуровневых операций WiFi и точный расчет времени происходят в одном и не самом быстром потоке). Посмотрите ESP32, может там что-то получится, но я сам не пробовал. В вашей ссылке на форум вопросы от заинтересованных пользователей, оставшиеся без ответа производителя.
 

nikolz

Well-known member
Добрый день всем.
После довольно довольно успешной реализации на ESP8266 отслеживания вращения твердых тел в пространстве и передачи данных по MQTT протоколу на ПК встал вопрос отслеживать позиционирование носителя датчиков в помещении. У меня есть реализация перемещения через определение вектора от акселерометра, но точность заставляет желать лучшего - раз, и учитывая девиацию по магнитометру - невозможно просчитать точно перемещение. Для общего понимания как вообще может работать данная технология рекомендую для начала эту статью и гугль.
Сходу на форуме не нашел довольно полного объяснения что к чему, сам сейчас ковыряю математику по трилатерации, мультилатерации и триангуляции. Теперь собственно пару вопросов:
  • Promiscuous mode - кто копал более глубоко чем установка готовых прошивок? Может кто соизволит более подробно советом помочь, чем ткнуть в документацию.
  • Wifi.monitor - то же самое как и выше или нет.
  • Time Of Flight - есть на родном форуме упоминание что вроде как разработчики собираются добавить данный функционал. И я где-то встречал упоминание что для ESP32 для протокола ESPNOW и так же есть наработки здесь.
В общем, тема интересная - предлагаю обсуждать и пробовать.
Замечание к Вашей статье:
Вы слишком усложнили решение, так как ошиблись с определением времени опроса датчика.
Согласно документации, минимальная задержка составляет 0.1ms, т е 200 раз меньше, чем Вы посчитали.
-------------------------------
Кроме того, все модули датчиков можно по SPI или I2C подключить к одной ESP8266.
---------------------------------
В итоге набор железа для костюма с 16 датчиками обойдется всего в 50 долларов.
------------------------------
Используя передачу данных по ESP-NOW либо UDP получите задержку не более 0.01 сек, что эквивалентно 100 кадрам в секунду.
 

nikolz

Well-known member
но в Вашей разработке возможно лучшим решением будет применение BLE,
либо внутренний протокол NRF, который подобен ESP-NOW .
 

kharlashkin

New member
RSSI сильно плавает (часто в разы) и не отражает реальную силу сигнала
Спасибо за замечание, я подумывал сделать двустороннюю связь - имеется ввиду следующие манипуляции (хочу услышать критику):
  • ESP в определенном периоде собирает пакеты и считает среднее значение RSSI.
  • Переключается в режим клиента, цепляется к существующей сети и шлет полученные за период данные, не только по точкам доступа но и по соседним ESP-шкам.
  • Со стороны нескольких точек доступа эфир также постоянно мониторится на предмет уровня RSSI клиентов.
  • В итоге у нас будет два взгляда на уровень сигнала - от ESP и от точки доступа.
Кто то замерял может сколько времени нужно ESP для переключения между режимом клиента и мониторинга, я может попробую на днях подобный эксперимент провести. Может кто-то пробовал привести RSSI к корректным показателям на ESP или подскажет правильный фильтр для усреднения показателей.
Замечание к Вашей статье:
Ответил на хабре, повторю и здесь:
Дело не во времени опроса — дело во времени передачи буфера размером 48 Байт 50 раз в секунду по шине I2C.
Датчики MPU-9250 имеют один неизменяемый адрес и все датчики нужно было подключать через мультиплексор, я об этом писал в статье.
Хотелось избавиться от проводов, как в Perception Neuron — что сильно упрощает снятие/надевание костюма.
 

nikolz

Well-known member
Добрый день всем.
После довольно довольно успешной реализации на ESP8266 отслеживания вращения твердых тел в пространстве и передачи данных по MQTT протоколу на ПК встал вопрос отслеживать позиционирование носителя датчиков в помещении. У меня есть реализация перемещения через определение вектора от акселерометра, но точность заставляет желать лучшего - раз, и учитывая девиацию по магнитометру - невозможно просчитать точно перемещение. Для общего понимания как вообще может работать данная технология рекомендую для начала эту статью и гугль.
Сходу на форуме не нашел довольно полного объяснения что к чему, сам сейчас ковыряю математику по трилатерации, мультилатерации и триангуляции. Теперь собственно пару вопросов:
  • Promiscuous mode - кто копал более глубоко чем установка готовых прошивок? Может кто соизволит более подробно советом помочь, чем ткнуть в документацию.
  • Wifi.monitor - то же самое как и выше или нет.
  • Time Of Flight - есть на родном форуме упоминание что вроде как разработчики собираются добавить данный функционал. И я где-то встречал упоминание что для ESP32 для протокола ESPNOW и так же есть наработки здесь.
В общем, тема интересная - предлагаю обсуждать и пробовать.
Полагаю что Вы интересуетесь определением местоположения объекта в пределах одной комнаты.
Если так, то Wifi - это как гланды смотреть через задницу.
-----------------
Приведу пример.
Встаньте в середину комнаты. А потом сделайте шаг в сторону.
Теперь подумайте : Что изменилось в параметрах сигнала Wifi , который принимает Ваш смартфон в этих двух точках, расстояние между которыми не более 1 метр и они находятся в открытом пространстве?
Мощность сигнала? возможно но это микроватты и вы это не измерите.
Задержка сигнала? возможно но это наносекунды и Вы это не измерите.
------------------
В сотовой связи речь идет о выборе ближайшей вышки. При этом разность расстояний составляет сотни метров и более
-------------------
Если в помещении по WiFi - то это различные комнаты или этажи
 

kharlashkin

New member
1) шина I2C как минимум 400 кГц это 40 000 байт в секунду, а у вас всего 2500 байт в секунду.
2) есть еще у MPU-9250 SPI , это еще в 20 раз быстрее.
Ну так и я о чем и писал ;) что используя 15 датчиков - я только и буду забирать данные с датчиков, а их ещё обработать нужно и передать куда то.
Полагаю что Вы интересуетесь определением местоположения объекта в пределах одной комнаты.
Если так, то Wifi - это как гланды смотреть через задницу.
В пределах одной комнаты можно все сделать гораздо проще, хотя по "отпечаткам" с 3 и более ТД говорят о точности в 1 м. Речь идёт о помещениях размером со спортзал, когда нужено определения местоположения для волейбольной команды, например. Точности в +/- 0.5 м. более чем достаточно.
Я понимаю, что вы шибко умный и можете правильно все советовать, лучше поделитесь программным кодом и соответствующей литературой, если набивали шишек именно в этих вопросах.
 

nikolz

Well-known member
теперь про рекламу Cisco.
На ютубе они убрали рекламу своей системы гиперлокации.
вот картинка с их сайта
1598372766232.png

Т е обещают погрешность 3 метра. Т е Вы либо в центре комнаты либо в стене этой комнаты.
Но с вероятностью 50% Вы где-то в пределах 1 метра.
--------------------------
Фишка их системы в специальной антенне. Т е они осуществляют пеленгацию смартфона
Антенны предположу в виде фазированных решеток.
---------------------
С сайта:
Гиперлокация (Круговая антенная решетка) - это 32-элементная антенная конструкция, обеспечивающая 360-градусный охват вокруг точки доступа. Она предназначена для интеграции в модуль Hyperlocation с передовой безопасностью обеспечивая точный угол RF Информация о прибытии (AoA), позволяющая встроенному программному обеспечению получать данные, необходимые для вычислите местоположение, используя более детальный подход.

Антенная решетка а модуль Гиперлокации с повышенной безопасностью интегрируется в Cisco 3600 и Точки доступа серии 3700 с использованием опции модуля, позволяющей использовать оба модуля антенны (центр) и Гиперлокационная круговая решетка (снаружи) пример ниже AP-3700.
 

kharlashkin

New member
Вы и правда писатель. Я специально привел ссылку на статью именно Cisco на Хабре.
 

Victor

Administrator
Команда форума
Переключается в режим клиента, цепляется к существующей сети и шлет полученные за период данные, не только по точкам доступа но и по соседним ESP-шкам
лучше сделать две ESP8266 и соединить их через UART друг с другом - одна собирает пакеты, а другая их отправляет, тогда процесс можно сделать непрерывным, без задержек на переключение
ESP в определенном периоде собирает пакеты и считает среднее значение RSSI.
среднее считать бесполезно (я пробовал), потому что показания RSSI сильно кривые и даже фильтр Калмана не поможет - слишком криво реализовано измерение RSSI и в SDK и, скорее всего, на аппаратном уровне, да и такая задача не стояла у разработчиков чипа.
Кстати, даже у CISCO не все так радужно (иначе бы такие решения были реализованы в каждом торговом центре - для маркетинга в ритейле это очень востребовано), и цены у них на indoor локацию огого.
 

nikolz

Well-known member
Судя по Вашей статье и вопросу, Вы из разряда незнаек-самоделкиных,
как и большинство дающих Вам советы по данному вопросу.
-------------------------
Ответ на Ваш вопрос есть в учебниках по радионавигации и радиолокации.
-------------------------
Но, понимаю, Вам учиться лень, как и большинству а-ля-кулибинам.
-----------------
Поэтому поясню, почему использование сигнала Wifi для позиционирования - это через задницу.
--------------------
Измерение расстояния с помощью звуко или радио волн - это косвенный метод.
В этом случае мы используем некоторый параметр сигнала и функциональную зависимость этого параметра от расстояния.
Чтобы измерять было просто, стремятся создать сигнал, у которого нужный нам параметр зависит лишь от расстояния.
--------------------
У Wifi сигнала нет такого параметра.
Поэтому измерять с его помощью расстояние либо не точно (амплитудный метод),
либо требует сложного спец оборудования (фазовый, частотный и временной методы)
----------------------
Если Вам надо точно определить местоположение объекта в замкнутом пространстве, то надо использовать специально генерируемый гармонический сигнал.
-------------------
Наилучшим вариантом для комнаты будет фазовый метод.
------------------
Делается это так:
На объект помещается передатчик непрерывного гармонического сигнала.
Например, сигнал с частотой 10 МГц позволит определить расстояние до объекта в пределах 15 метров.
В углах комнаты, помещаем приемники.
Приемники можно группировать парами.
Один из приемников формирует опорный сигнал, второй измерительный.
В результате измеряем смещение объекта относительно приемников.
После этого решаем пространственную задачу определения местонахождения объекта.
Погрешность измерения зависит от стабильности излучаемой частоты,
т.е. генератор на объекте должен быть кварцевый.
----------------------
Не сложно обеспечить погрешность измерения фазы сигнала относительно опорного не более 0.1 гр,
что обеспечит погрешность измерения расстояния не более 10 миллиметров.
----------------------
 

nikolz

Well-known member
вот еще информация:
Навигация по Wi-Fi. Используется уже существующая инфраструктура сетей связи – точки беспроводных сетей Wi-Fi, и это наименее затратный вариант. Методика определение координат следующая– устройство пользователя сканирует доступные Wi-Fi-точки доступа, затем информацию о них отправляет на сервер, где эти данные по базе данных сопоставляются с координатами этих точек доступа, по которым и вычисляются координаты пользователя. К сожалению, координаты Wi-Fi точек точно не известны, плюс могут меняться (перенесли Wi-Fi точку в другое место или заменили её на другую – координаты уже оказываются неверными).
Точность при таком подходе оставляет желать лучшего (погрешность – до 25 метров! А при использовании специально созданной wi-fi инфраструктуры – точность 3-5 метров, но это уже требует ощутимых затрат на создание и обслуживание подобной системы), да и идентицифировать клиентов по Wi-Fi, привязывая их расположение к карте помещений, проблематично – начиная с iOS 8, mac-адреса Apple-устройств (iPhone, iPad) постоянно меняются, для предотвращения «рекламной» слежки.
 
Сверху Снизу