2013-03-28 11 views
32

Inizierò con la domanda.Bluetooth LE RSSI per rilevamento di prossimità iOS

BTLE RSSI è un buon modo per indicare due dispositivi vicini l'uno all'altro o no? funziona solo con piccoli dispositivi come fobs ecc?

il problema:

Attualmente sto cercando di rendere un app che utilizzerà BTLE e consentire le connessioni basate sulla prossimità. A questo proposito è molto simile all'app demo che Apple mostra nel keynote Advanced Core Bluetooth (quando due dispositivi si toccano e poi si connettono).

Come ho capito, la prossimità viene determinata in base al valore RSSI quando la centrale scopre la periferica. Quando provo questo, tuttavia, con due iPad il segnale sembra troppo forte per questo è anche troppo incoerente per avere un'accentuazione precisa in prossimità in quanto non mostra molta correlazione con la prossimità dei dispositivi.

Ho provato il codice di esempio di Apple e questo è simile in quanto i dispositivi non devono necessariamente essere vicini perché le informazioni passino da una all'altra.

Se solo ci fosse un modo per ridurre la forza del segnale delle periferiche pubblicità ....

Grazie in anticipo per qualsiasi aiuto.

risposta

20

L'esperienza di Matthew Griffin corrisponde alla mia. Tuttavia, quando possiamo misurare per un buon periodo di tempo, due cose ci hanno aiutato a calibrare meglio questo.

Abbiamo dovuto avvolgere un semplice filtro (kalman) sull'orientamento dell'antenna e l'IMU per ottenere un commento di funzionamento approssimativo - e questo non è molto CPU o luce della batteria.

  • Utilizzando l'IMU si ottiene una buona idea della distanza/direzione di viaggio - e se questo è in un breve periodo di tempo - assumiamo che l'altro "lato" sia fermo. Questo aiuta molto ad ottenere un valore per l'orientamento "corrente" e "calibra il rumore dell'ambiente corrente".
  • Analogamente, fare lo stesso per le variazioni di rotazione/posizione.

Abbiamo trovato che in generale un riorientamento del dispositivo è un modo migliore per ottenere la direzione; e quella distanza è affidabile solo fino a circa 30-600 secondi dopo una 'muta' di calibrazione 'e solo se il dispositivo non è ruotato troppo. E in pratica una volta ha bisogno di alcuni 4-5 "altri" dispositivi; idealmente non troppo mobile, per tenersi dinamicamente calibrati.

Tuttavia, il contrario è abbastanza affidabile, ovvero quando non si misura. E il risultato netto è che si possono accertare abbastanza bene cose come "alla tastiera" e "trasferite"/spostate via attraverso una porta/apertura o direzione specifica. Allo stesso modo misurare un campo ballando a caso attraverso la stanza; cambiando molto orientamento - funziona bene una volta che i lobi dell'antenna ricevente sono stati in qualche modo risolti dopo un periodo stazionario.

+0

hai qualche formula per convertire db in metro circa ?? – ilesh

10

Ho trascorso l'ultima settimana a occuparmi rigorosamente di RSSI, cercando di utilizzare i sensori Wifi e Bluetooth LE per la triangolazione della posizione e per la conversione della distanza.

Sfortunatamente, ciò che ho trovato è che l'RSSI è troppo esigente e inaffidabile da usare costantemente per determinare la distanza. In teoria, l'RSSI e la distanza si comportano secondo la legge dell'inverso del quadrato (il doppio della distanza e l'RSSI scenderebbero di un numero fisso di decibel), ma in pratica l'RSSI è influenzato da fattori incontrollabili come il tempo (il tempo asciutto consente RF campi per viaggiare meglio) e ostacoli (qualsiasi oggetto metallico o umano nel percorso da un sensore a un altro causerà attenuazione, e qualsiasi oggetto metallico posizionato vicino a uno dei sensori causerà un guadagno nella potenza del segnale).

Ci sono modi per provare a compensare questo. This paper è uno dei migliori documenti che ho letto su come ottenere risultati accurati, ma la linea di fondo è che è un metodo inaffidabile a meno che non si voglia solo un'idea generale di dove si trova il dispositivo.

+0

il collegamento all'articolo è rotto. – Raanan

2

Se ho capito bene, stai cercando di implementare funzionalità simili a quelle viste nella demo di WWDC e quali app come Bump implementano. Per quel RSSI sarà adeguato. Verifica i valori di soglia appropriati (ad es.> -30) e starai bene.

+0

Non è così semplice. Il valore RSSI è estremamente rumoroso e il filtraggio è richiesto. –

+0

@PhillApley Penso che dipenda molto dalla tua applicazione. Per la maggior parte dei casi in cui è necessario determinare se due dispositivi sono molto vicini o meno e alcuni errori sono accettabili, allora RSSI è sufficiente così com'è. – allprog

13

Sei del tutto corretto sul fatto che l'RSSI salti in modo selvaggio e casuale. Dovresti recuperare i tuoi valori RSSI ogni due secondi (più velocemente e ottieni un sacco di errori). Lancia i valori RSSI che superano il picco di ~ -40 decibel e utilizza un aggregato dei valori precedenti prima di dichiarare il tuo intervallo approssimativo all'utente.

Per quanto riguarda la seguente affermazione, siete fortunati.

Se solo ci fosse un modo per ridurre la forza del periferiche pubblicità segnale ....

Il servizio che si sta cercando si chiama TX Power Service. L'implementazione di questo servizio sulla tua periferica ti consentirà di diminuire la potenza di trasmissione del dispositivo. In questo modo puoi ridurre il raggio di visibilità dei dati dell'annuncio. Purtroppo, tuttavia, non abbiamo accesso a questo servizio su un dispositivo iOS. Ma se stai scrivendo il tuo firmware per una periferica BLE, questo è il servizio che desideri.

Problemi correlati