Простое приложение для Android, демонстрирующее измерение расстояний между смартфоном и окружающими его устройствами Bluetooth LE, с применением фильтра Калмана для удаления шумов (чем дольше работает поиск, тем точнее отсекает шумы фильтр).
ble_detection_app_demo.mp4
-
Оценка расстояния исключительно по силе сигнала (RSSI) Bluetooth на больших дистанциях ненадежна и неточна, однако возможно настроить стабильное обнаружение в выбранном небольшом радиусе (до 20 см) вокруг смартфона, чтобы определять, когда устройство (например, умные часы) появляется, находится в нём и покидает его.
-
Константы для фильтра Калмана и преобразования силы сигнала (RSSI) в расстояние выбираются опытным путем. Калибровка происходит на расстоянии 1 м.
См. источник для информации об использованном фильтре Калмана
-
Было протестировано с 2 разными смартфонами, что возможно надежно определять, когда умные часы (Xiaomi Smart Band 7) входят или покидают выбранный радиус 10 см вокруг каждого устройства с высокой точностью (+-1 см).
-
Безопасное подтверждения финансовых операций, передачи данных и других действий пользователя на его смартфоне.
-
Использование в качестве электронного пропуска
-
Оповещение об отдалении устройства от смартфона (например, устройство забыто в такси).
Android, Kotlin, Jetpack Compose, Dagger-Hilt, Coroutines, Flows, Gradle Version Catalogs, Bluetooth LE, Чистая Архитектура, MVI