Wie viele aktive Bluetooth-Geräte kann ich in einem einzigen Raum zuverlässig erkennen?

9

Ich entwickle eine kostengünstige Attraktion und hoffe, die Bluetooth-Geräteidentifikation für die Näherungserkennung verwenden zu können - dh Gast A befindet sich in Reichweite des statischen Standorts X. Jeder Gast erhält ein benutzerdefiniertes Mobilgerät (entweder iPod oder Android-basiert).

Was ist eine realistische Obergrenze für die "Dichte" von Bluetooth-Geräten, bevor die Aufzählung aller in der Nähe befindlichen Geräte unzuverlässig wird? Befinden sich beispielsweise 25 aktive Geräte in der Nähe eines stationären Bluetooth-fähigen PCs zu viele an einem Ort, um sie zuverlässig und vollständig zu erkennen (alle Geräte)? Ist das zu viel Stau?

(Um es klar auszudrücken: Ich muss keine Verbindungen herstellen. Ich muss nur das Vorhandensein oder Fehlen von Geräten anhand des Namens zuverlässig erkennen.)

DuckMaestro
quelle
Haben Sie eine Nummer für Ihre Frage gefunden?
Ramis

Antworten:

9

Ich kann nicht sehen, dass die Bluetooth-Spezifikation einen Verweis auf Grenzwerte von Geräten in demselben Bereich enthält. Dies ist praktisch sehr schwer zu bestimmen, da es sich nicht nur um Bluetooth-Geräte, sondern auch um WLAN handelt.

In diesem Artikel wird untersucht, wie sich die Anzahl der Geräte erhöht und wie lange die Geräteerkennung dauert: http://www.shiratori.riec.tohoku.ac.jp/~deba/PAPER/Journal/WINET-onlineFinal.pdf

Beachten Sie auch Folgendes:

Bluetooth-Geräte arbeiten mit dem 2,4-GHz-Funkband, der gleichen nicht lizenzierten Frequenz, die von vielen anderen drahtlosen Geräten verwendet wird. Wenn viele Geräte in demselben Bereich alle dieselbe Bandbreite verwenden, kann dies zu allgemeinen Netzwerkproblemen führen, da die Signale kollidieren und Informationen erneut gesendet werden müssen. Das Bluetooth-Signal wurde so konzipiert, dass es seine Frequenz viele Male pro Sekunde ändert, um diese Interferenz zu reduzieren. Wenn jedoch genügend Geräte versuchen, dieselbe kleine Bandbreite zu verwenden, sind Interferenzen unvermeidlich. Bluetooth 3.0, das in Geräten verwendet wird, die 2010 erstellt wurden, verwendet das 6-9-GHz-Spektrum, sodass weniger Interferenzprobleme auftreten. Bluetooth 3.0-Geräte können auch mit 2,4 GHz senden, um mit früheren Bluetooth-Technologien zu kommunizieren. Bluetooth 3.0 mit 2,4 GHz,

Zusammenfassend: Sie müssen die möglichen Störungen und zeitlichen Einschränkungen sorgfältig abwägen. Ich vermute, dass 25 Geräte gemacht werden können. Aber um sicherzugehen, müssen Sie dies praktisch testen

Konsalik
quelle
5

Es gibt keine theoretischen Obergrenzen für die Anzahl der zu erkennenden Geräte. Sie sind direkt proportional zum Zeitpunkt der Erkennung. Wenn Sie mehr Zeit für die Ermittlung aufwenden, erhöht sich die Wahrscheinlichkeit, dass alle Geräte in Reichweite erkannt werden.

Grundsätzlich wird die Erkennung durchgeführt, indem das Scan-Gerät auf einer von 32 Frequenzen scannt und das Werbegerät auf allen 32 Frequenzen ein Beacon sendet. Die Werbegeräte wiederholen diese Sequenz immer wieder, und das Scan-Gerät reagiert, sobald es ein Signal erhält, und schaltet sich für einige Zeit nach dem Zufallsprinzip zurück, um eine neue Frequenz zu erreichen und den gleichen Vorgang zu wiederholen. Selbst wenn mehrere Geräte mit einer bestimmten Frequenz scannen, kollidieren ihre Antworten beim ersten Mal, aber nach einem Zurücksetzen landen sie zufällig auf unterschiedlichen Frequenzen und erhöhen die Wahrscheinlichkeit, dass Antworten nicht erneut kollidieren.

In Ihrem Anwendungsfall von 25 aktiven Geräten ist das überhaupt kein Problem. Ich habe mit Geräten und Umgebungen gearbeitet, in denen es 50 bis 100 Geräte gab und eine Erkennung von 10 bis 15 Sekunden die meisten Geräte leicht finden kann. Hoffe das hilft.

Dennis Mathews
quelle
1

Kürzlich habe ich die gleiche Frage untersucht. Meine Ergebnisse sind, dass die Einschränkungen entweder vom IC oder von der Software stammen.

Der beste Chip ist TI-basiert und basiert auf Software on Chip.

Android / Apple / Windows haben ihre eigenen Grenzen im Kernel. Bei Verwendung von Software wird jede Software zur Aufzählung von BT durch den BT-Stack / Kernel eingeschränkt. Die Verwendung des SoC kennt keine Grenzen, da der IC-Stack einfach ist.

Verwenden Sie eine benutzerdefinierte Methode, um Informationen an Ihr Programm weiterzuleiten.

Zu der Zeit entschied ich mich, BT nicht zu verwenden, weil es absolut schmerzhaft im Arsch ist.

Es sei denn, es ist der neue V4-Standard, der Werbung besser handhabt.

Ich musste auch unbegrenzt viele BTs in einem Raum haben. Ich entschied mich, meine eigene Leiterplatte und meinen eigenen Empfänger herzustellen - warum? weil es einfacher und billiger war, ob Sie es glauben oder nicht.

Zurück zu Ihrer Frage.

(Mit etwas wie WP7 / iPhone3,4 / Android)

BTv2.1 BT3

Zuverlässig nicht mehr als 10 im Allgemeinen. Das meiste was ich gesehen habe handhabte 32.

BT4

Whitepaper sagt 128 .. Nur Apple 4S unterstützt diese Version, daher habe ich nicht getestet.

Piotr Kula
quelle
0

Ein Bluetooth-Gerät kann ungefähr 7 Geräte gleichzeitig verbinden. Dies ist die maximale Kapazität.
Es kann jedoch je nach Gerätekonfiguration variieren.
Frage
Frage1
Schauen Sie sich den obigen Link an. Dies kann für Sie hilfreich sein

Gouse Shaik
quelle
3
Die Frage ist nicht, wie viele Geräte eine Verbindung herstellen können, sondern wie viele erkannt werden können. Es wird keine Kopplung durchgeführt.
Kortuk
0

Ich glaube nicht, dass es eine Grenze gibt. Die Art und Weise, wie ich die Geräteerkennung in der Nähe implementiert habe, bestand darin, die InTheHand.Net-Bibliothek ( http://32feet.codeplex.com/ ) zu verwenden, die Erkennung für alle Geräte in der Nähe regelmäßig auszuführen und dann in Kürze eine Verbindung zu jedem Gerät herzustellen , um sicherzustellen, dass es noch verfügbar ist. Ohne Verbindung wurde mir klar, dass es keine Garantie gibt, dass Sie genau wissen, wann ein Gerät angekommen oder abgereist ist.

Ein Beispiel unten:

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;

    }
dancri77
quelle