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

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

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

Проблема:

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

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

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

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

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

Ответ 1

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

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

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

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

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

Ответ 2

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

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

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

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

Ответ 3

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

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

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

Ответ 4

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