2013-03-28 15 views
32

Zacznę od pytania.Bluetooth LE RSSI do wykrywania bliskości iOS

Czy BTLE RSSI to dobry sposób na wskazanie bliskości dwóch urządzeń? działa tylko z małymi urządzeniami takimi jak piloty itp.?

problem:

Jestem obecnie patrząc na złożenie aplikacji, która będzie używać BTLE i umożliwienia połączenia na podstawie bliskości. Pod tym względem jest bardzo podobny do aplikacji demo Apple show w programie Advanced Core Bluetooth keynote (gdy dwa urządzenia prawie dotykają się, a następnie łączą się).

Jak rozumiem, bliskość jest określana na podstawie wartości RSSI, gdy centrala odkrywa urządzenie peryferyjne. Kiedy jednak próbuję to zrobić z dwoma iPadami, sygnał wydaje się zbyt silny, ponieważ jest zbyt niespójny, by mieć dokładną dźgniętą w pobliżu, ponieważ nie wykazuje on dużej korelacji z bliskością urządzeń.

Próbowałem kodu przykładowego Apple i jest podobny, ponieważ urządzenia nie muszą być blisko, aby informacje mogły być przekazywane z jednego do drugiego.

Jeśli tylko istnieje sposób, aby zmniejszyć siłę sygnału URZĄDZENIA reklamie ....

Z góry dziękuję za wszelką pomoc.

Odpowiedz

20

Doświadczenie Matthew Griffina pasuje do mojej. Jednakże - kiedy możemy mierzyć przez odpowiedni okres czasu, dwie rzeczy pomogły nam to lepiej skalibrować.

Musieliśmy owinąć prosty filtr (kalmana) w orientacji anteny i IMU, aby uzyskać krótki komentarz - i to nie jest bardzo światło procesora lub akumulatora.

  • Korzystając z IMU uzyskujesz rzetelny obraz odległości/kierunku jazdy - a jeśli jest to przez krótki czas - zakładamy, że druga strona "jest nieruchoma". To bardzo pomaga uzyskać wartość dla "bieżącej" orientacji i "wywołać zakłócenia w obecnym szumie otoczenia.
  • Podobnie - zrób to samo dla zmian obrotów/pozycji.

Okazało się, że ogólnie zmiana orientacji urządzenia jest lepszym sposobem uzyskania kierunku; i ta odległość jest niezawodna tylko do około 30 do 600 sekund po "kalibracji" ruchu "i tylko wtedy, gdy urządzenie nie jest zbyt obrócone. A w praktyce potrzebuje około 4-5 "innych" urządzeń; idealnie niezbyt mobilny, aby móc się dynamicznie skalibrować.

Jednak odwrotność jest dość wiarygodna - tzn. Wiemy, kiedy nie mierzyć. A wynik netto jest taki, że można dość dobrze ustalić takie rzeczy jak "na klawiaturze" i "przeniesione"/przeniesione przez określone drzwi/otwarcie lub kierunek. Podobnie mierzenie pola przez losowe tańczenie w pokoju; bardzo często zmieniając orientację - działa dobrze, gdy płaty anteny odbiorczej nieco się wypracowały po okresie stacjonarnym.

+0

masz jakąś formułę, aby przekonwertować db do licznika około? – ilesh

10

Spędziłem ostatni tydzień, zajmując się wyłącznie RSSI, próbując wykorzystać czujniki Wi-Fi i Bluetooth LE do triangulacji lokalizacji i konwersji odległości.

Niestety, znalazłem to, że RSSI jest zbyt wybredny i niewiarygodne, aby konsekwentnie używać do określenia odległości. Teoretycznie RSSI i odległość zachowują się zgodnie z prawem odwrotności kwadratu (podwójna odległość, a RSSI spadnie o stałą liczbę decybeli), ale w praktyce na RSSI wpływają niekontrolowane czynniki, takie jak pogoda (sucha pogoda pozwala na RF pola do lepszego podróżowania) i przeszkody (dowolne metalowe obiekty lub ludzie na ścieżce od jednego czujnika do drugiego będą powodować tłumienie, a wszelkie metalowe obiekty umieszczone blisko jednego z czujników spowodują wzmocnienie siły sygnału).

Istnieją sposoby, aby spróbować to zrekompensować. This paper jest jednym z najlepszych artykułów, które czytałem o tym, jak uzyskać dokładne wyniki, ale najważniejsze jest to, że niewiarygodna metoda, chyba że po prostu chcesz wiedzieć, gdzie jest urządzenie.

+0

link do artykułu jest uszkodzony. – Raanan

2

Jeśli dobrze rozumiem, próbujesz wprowadzić podobną funkcjonalność do tego, co widać w wersji demonstracyjnej WWDC i jakie aplikacje takie jak Bump implementują. W tym przypadku RSSI będzie odpowiednie. Przetestuj odpowiednie wartości progowe (np.> -30), a wszystko będzie dobrze.

+0

To nie jest takie proste. Wartość RSSI jest bardzo głośna i wymagane jest filtrowanie. –

+0

@PhillApley Myślę, że to zależy od Twojej aplikacji. W większości przypadków, gdy musisz ustalić, czy dwa urządzenia są bardzo blisko, a niektóre błędy są dopuszczalne, to RSSI wystarczy. – allprog

13

Masz całkowitą rację mówiąc, że RSSI skacze dziko i losowo. Powinieneś pobierać wartości RSSI co dwie sekundy (szybciej, a otrzymasz mnóstwo błędów). Wyrzuć wartości RSSI, które przekraczają ~ -40 decybeli i używaj agregatu poprzednich wartości, zanim ogłosisz przybliżony zakres dla użytkownika.

Co do poniższego oświadczenia, masz szczęście.

Jeśli tylko istnieje sposób, aby zmniejszyć siłę sygnału reklamie urządzeń peryferyjnych ....

Usługa szukasz nazywa się TX Power Service. Wdrożenie tej usługi na twoim urządzeniu peryferyjnym pozwoli ci zmniejszyć moc nadawania urządzenia. W ten sposób możesz zmniejszyć zasięg, z którego dane reklamy są widoczne. Niestety nie mamy dostępu do tej usługi na urządzeniu z systemem iOS. Ale jeśli piszesz własne oprogramowanie układowe dla urządzenia peryferyjnego BLE, jest to usługa, której potrzebujesz.

Powiązane problemy