2017-06-28 8 views
0

J'ai essayé de calculer la distance entre la balise et l'appareil Android en utilisant RSSI et TxPower, mais la fluctuation est très élevée. Alors, comment obtenir une distance plus stable? J'ai essayé avec extrait de code donné ci-dessous:Comment calculer une distance plus précise entre la balise et l'appareil Android?

public double calculateAccuracy(int txPower, double rssi) { 
     if (rssi == 0) { 
      return -1.0; 
     } 
     double ratio = rssi * 1.0/txPower; 
     if (ratio < 1.0) { 
      return Math.pow(ratio, 10); 
     } else { 
      double accuracy = (0.89976) * Math.pow(ratio, 7.7095) + 0.111; 
      return accuracy; 
     } 
    } 

Répondre

0

Il n'y a pas de réponse simple à cette question, comme RSSI ne fluctue considérablement, en particulier à des distances plus grandes. Ceci est exacerbé par le changement de chaîne intégré sur Bluetooth. Chaque canal renvoie un RSSI moyen différent. Le mieux que vous pouvez faire est de faire autant de mesures rssi que possible sur une période aussi longue que cela est raisonnable pour votre cas d'utilisation. Vous pouvez utiliser une moyenne arithmétique simple, ou des filtres statistiques plus sophistiqués, mais la différence entre alors n'est pas dramatique. Il est également utile de régler le taux de publicité de votre balise aussi haut que possible pour obtenir plus d'échantillons statistiques et régler la puissance du transmetteur aussi haut que possible car un plus grand rapport signal/bruit vous donnera moins de variance dans rssi.