Bluetooth LE RSSI для обнаружения приближения iOS

Начну с вопроса.

Является ли BTLE RSSI хорошим способом указать близость двух устройств друг к другу или нет? он работает только с небольшими устройствами, такими как брелоки и т. д.?

Проблема:

В настоящее время я подумываю создать приложение, которое будет использовать BTLE и разрешать соединения на основе близости. В этом отношении оно очень похоже на демонстрационное приложение, которое Apple показывает в презентации Advanced Core Bluetooth (когда два устройства почти касаются друг друга, они подключаются).

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

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

Если бы только был способ уменьшить мощность сигнала рекламы периферийных устройств ....

Заранее благодарю за любую помощь.


person Tom Bates    schedule 28.03.2013    source источник


Ответы (4)


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

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

  • Используя IMU, вы получаете четкое представление о расстоянии / направлении движения - и если это происходит в течение короткого периода времени - мы предполагаем, что другая «сторона» неподвижна. Это очень помогает получить значение для «текущей» ориентации и «откалибровать текущий шум окружающей среды».
  • Аналогично - сделайте то же самое для поворотов / изменений положения.

Мы обнаружили, что в целом переориентация устройства - лучший способ получить направление; и это расстояние является надежным только от 30 до 600 секунд после калибровки «перемещения» и только в том случае, если устройство не слишком сильно повернуто. А на практике сразу нужно 4-5 «других» устройств; в идеале не слишком подвижный, чтобы сохранять динамическую калибровку.

Однако обратное утверждение достаточно надежно, т. Е. Мы знаем, когда не измерять. И в конечном итоге можно довольно хорошо определить такие вещи, как «у клавиатуры» и «перемещенный / перемещенный» через определенную дверь / открытие или направление. Точно так же измерение поля, произвольно танцуя по комнате; частое изменение ориентации - работает хорошо, если лепестки антенны приемника несколько проработали после периода покоя.

person Dirk-Willem van Gulik    schedule 10.06.2013
comment
у вас есть какая-нибудь формула для преобразования дБ в метр примерно ?? - person Ilesh P; 04.01.2016

Вы совершенно правы насчет того, что RSSI прыгает дико и беспорядочно. Вы должны получать значения RSSI каждые две секунды (если быстрее, вы получите кучу ошибок). Выбросьте значения RSSI, которые превышают пик на ~ -40 децибел, и используйте совокупность прошлых значений, прежде чем объявлять пользователю приблизительный диапазон.

Что касается вашего следующего утверждения, вам повезло.

Если бы только был способ уменьшить мощность сигнала рекламы периферийных устройств ....

Служба, которую вы ищете, называется TX Power Service. Реализация этой услуги на вашем периферийном устройстве позволит вам уменьшить мощность передачи устройства. Таким образом, вы можете ограничить диапазон, в котором видны рекламные данные. К сожалению, у нас нет доступа к этой услуге на устройстве iOS. Но если вы пишете собственную прошивку для периферийного устройства BLE, это именно то, что вам нужно.

person Tommy Devoy    schedule 10.06.2013

На прошлой неделе я работал исключительно с RSSI, пытаясь использовать датчики Wifi и Bluetooth LE для триангуляции местоположения и преобразования расстояний.

К сожалению, я обнаружил, что RSSI слишком привередлив и ненадежен для постоянного использования для определения расстояния. Теоретически RSSI и расстояние ведут себя согласно закону обратных квадратов (расстояние вдвое больше, и RSSI будет уменьшаться на фиксированное число децибел), но на практике RSSI зависит от неконтролируемых факторов, таких как погода (сухая погода позволяет RF поля для лучшего перемещения) и препятствия (любые металлические предметы или люди на пути от одного датчика к другому вызовут затухание, а любые металлические объекты, расположенные близко к одному из датчиков, вызовут усиление силы сигнала).

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

person Matthew Griffin    schedule 04.06.2013
comment
ссылка на статью не работает. - person Raanan; 03.01.2014

Если я хорошо понимаю, вы пытаетесь реализовать аналогичные функции, которые использовались в демонстрации WWDC, и какие приложения, такие как Bump, реализуют . Для этого RSSI будет адекватным. Проверьте подходящие пороговые значения (например,> -30), и все будет в порядке.

person allprog    schedule 10.06.2013
comment
Это не так просто. Значение RSSI очень зашумлено, и требуется фильтрация. - person Phill Apley; 05.04.2017
comment
@PhillApley Я думаю, это сильно зависит от вашего приложения. В большинстве случаев, когда вам нужно определить, находятся ли два устройства очень близко или нет, и допустима какая-то ошибка, RSSI достаточно как есть. - person allprog; 07.04.2017