Quanti dispositivi Bluetooth attivi posso rilevare in modo affidabile in un unico spazio?


9

Sto progettando un'attrazione a basso costo e spero di utilizzare l'identificazione del dispositivo Bluetooth per il rilevamento di prossimità, ovvero l'ospite A rientra nella portata della posizione statica X. A ogni ospite verrà assegnato un dispositivo mobile personalizzato (basato su iPod o Android).

Qual è un limite superiore realistico alla "densità" del dispositivo Bluetooth prima che l'enumerazione di tutti i dispositivi vicini diventi inaffidabile? Ad esempio, avere 25 dispositivi attivi in ​​prossimità di un PC fisso abilitato Bluetooth è troppi in un unico posto per rilevarli in modo affidabile e completo (tutti i dispositivi)? È troppa congestione?

(Per essere chiari: non ho bisogno di stabilire connessioni. Devo solo rilevare in modo affidabile la presenza o l'assenza di dispositivi per nome.)


Hai trovato un numero per la tua domanda?
Ramis,

Risposte:


9

Non riesco a vedere che le specifiche Bluetooth facciano alcun riferimento ai limiti dei dispositivi nella stessa area. Questo è molto difficile da determinare praticamente poiché è collegato non solo ai dispositivi Bluetooth, ma anche al WiFi.

Questo documento esamina come l'aumento del conteggio dei dispositivi, aumenta il tempo necessario per il rilevamento dei dispositivi: http://www.shiratori.riec.tohoku.ac.jp/~deba/PAPER/Journal/WINET-onlineFinal.pdf

Considera anche quanto segue:

I dispositivi Bluetooth funzionano con la banda radio a 2,4 GHz, che è la stessa frequenza senza licenza utilizzata da molti altri dispositivi wireless. Se molti dispositivi nella stessa area utilizzano tutti lo stesso tratto di larghezza di banda, ciò può portare a problemi generali di rete, poiché i segnali si scontrano e le informazioni devono essere reinviate. Il segnale Bluetooth è stato progettato per modificare la frequenza più volte al secondo per ridurre questa interferenza, ma se un numero sufficiente di dispositivi sta tentando di utilizzare lo stesso piccolo tratto di larghezza di banda, le interferenze sono inevitabili. Il Bluetooth 3.0, utilizzato nei dispositivi creati nel 2010, utilizza lo spettro 6-9 GHz, quindi avrà molti meno problemi di interferenza. I dispositivi Bluetooth 3.0 sono anche in grado di trasmettere a 2,4 GHz per comunicare con le precedenti tecnologie Bluetooth. Bluetooth 3.0, funzionante a 2,4 GHz,

Riassumendo: è necessario considerare attentamente la possibile interferenza e i vincoli temporali che si avranno. Sospetto che si possano fare 25 dispositivi. Ma per essere sicuri, dovrai testarlo praticamente


5

Non ci sono limiti teorici superiori a quanti dispositivi possono essere scoperti, è direttamente proporzionale al tempo di scoperta. Aumentare la quantità di tempo trascorso nella scoperta aumenterà le possibilità di rilevare tutti i dispositivi nel raggio d'azione.

Fondamentalmente il rilevamento viene eseguito dalla scansione del dispositivo di scansione su una delle 32 frequenze e dal dispositivo pubblicitario che invia un radiofaro su tutte le 32 frequenze. I dispositivi pubblicitari continuano a ripetere questa sequenza e il dispositivo di scansione, una volta ricevuto un radiofaro, risponderà e si spegnerà casualmente per qualche tempo, si aggancerà a una nuova frequenza e ripeterà lo stesso processo. Quindi, anche se ci sono più dispositivi che eseguono la scansione a una certa frequenza, la prima volta che le loro risposte si scontrano, ma dopo un back-off finiscono casualmente in frequenze diverse e aumentano le loro probabilità di non scontrarsi di nuovo.

Nel tuo caso d'uso di 25 dispositivi attivi non è affatto un problema, ho lavorato con dispositivi e ambienti in cui c'erano 50-100 dispositivi e una scoperta di 10-15 secondi può facilmente trovare la maggior parte dei dispositivi. Spero che sia di aiuto.


1

Di recente ho studiato la stessa domanda. Le mie scoperte sono che i limiti sono o dall'IC o dal software.

Il miglior chip da utilizzare è basato su TI e su software su chip.

Android / Apple / Windows hanno i loro limiti nel kernel, quindi l'utilizzo del software per enumerare BT sarà limitato dal BT-Stack / Kernel. L'uso del SoC non ha limiti in quanto lo stack dell'IC è semplice.

Utilizza un modo personalizzato per reindirizzare le informazioni al tuo programma.

A quel giorno ho deciso di non usare BT perché è un dolore assoluto nel culo.

A meno che non sia il nuovo standard V4 che gestisce la pubblicità in un modo nuovo e migliore.

Avevo anche bisogno di avere un numero illimitato di BT in una stanza .. ho deciso di creare il mio PCB e ricevitore propri - perché? perché era più facile ed economico crederci o no.

Torna alla tua domanda.

(Usando qualcosa come WP7 / iPhone3,4 / Android)

BTv2.1 BT3

Affidabilmente non più di 10 in generale. Il massimo che ho visto gestito 32.

BT4

Il white paper dice 128 .. Solo Apple 4S supporta questa versione, quindi non l'ho testato.


0

Un dispositivo Bluetooth può connettere circa 7 dispositivi alla volta ed è la sua capacità massima.
Ma può variare secondo le configurazioni del dispositivo.
Domanda
Domanda 1
Dai un'occhiata al link sopra che può essere utile per te


3
La domanda non è per quanti dispositivi possono connettersi, ma per quanti possono essere rilevati. Non verrà eseguita alcuna associazione.
Kortuk,

0

Non credo ci sia un limite. Il modo in cui ho implementato il rilevamento dei dispositivi nelle vicinanze è stato quello di utilizzare la libreria InTheHand.Net ( http://32feet.codeplex.com/ ), eseguire periodicamente il rilevamento per tutti i dispositivi vicini e quindi connettersi brevemente a ciascun dispositivo per assicurarsi che sia ancora disponibile. Senza la connessione ho capito che non esiste alcuna garanzia che saprai esattamente quando un dispositivo è arrivato o lasciato.

Un esempio di seguito:

public static List<Device> DiscoverDevices() {
        BluetoothClient bc = new BluetoothClient();
        m_btc = bc;
        List<Device> devices = new List<Device>();
        DateTime startDisc;
        Boolean canConnect;
        BluetoothDeviceInfo[] array = bc.DiscoverDevices(15, true, true, true); 
        int count = array.Length;
        startDisc = DateTime.Now;
        for (int i = 0; i < count; i++) {
            Device device = new Device(array[i]);
            if (MZPState.Instance == null) {
                MLog.Log(null, "BT discovery interrupted");
                return devices;
            }

            canConnect = CanConnect(device);
            if (canConnect) {
                //MLog.Log(null, "Active BT device detected " + device.ToString());
                devices.Add(device);
            }
            //MLog.Log(null, "Discovery result="+canConnect+" on " + device.DeviceName + " " + device.Address+ " took " 
            //  + Utilities.DurationAsTimeSpan(DateTime.Now.Subtract(startDisc)));
        }
        Performance.Create("Bluetooth local discovery", false, "",
            Performance.PerformanceFlags.Speed, DateTime.Now.Subtract(startDisc).TotalMilliseconds);
        return devices;
    }

public static Boolean CanConnect(Device device) {


        bool inRange;
        Guid fakeUuid = new Guid("{F13F471D-47CB-41d6-9609-BAD0690BF891}"); // A specially created value, so no matches.
        try {
            ServiceRecord[] records = device.DevInfo.GetServiceRecords(fakeUuid);
            //Debug.Assert(records.Length == 0, "Why are we getting any records?? len: " + records.Length);
            inRange = true;
        }
        catch (Exception) {
            inRange = false;
        }
        return inRange;

    }
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.