¿Cuántos dispositivos Bluetooth activos puedo detectar de manera confiable en un solo espacio?

8

Estoy diseñando una atracción de bajo costo y espero usar la identificación del dispositivo Bluetooth para la detección de proximidad, es decir, es el invitado A dentro del rango de la ubicación estática X. Cada invitado recibirá un dispositivo móvil personalizado (basado en iPod o Android) .

¿Qué es un límite superior realista en la "densidad" de los dispositivos Bluetooth antes de que la enumeración de todos los dispositivos cercanos no sea confiable? Por ejemplo, ¿tener 25 dispositivos activos cerca de una PC estacionaria con capacidad para Bluetooth en un solo lugar para detectar de manera confiable y total (todos los dispositivos)? ¿Esto es demasiada congestión?

(Para que quede claro: no necesito establecer conexiones. Solo necesito detectar de forma confiable la presencia o ausencia de dispositivos por nombre.)

    
pregunta DuckMaestro

5 respuestas

8

No puedo ver que la Especificación Bluetooth haga referencia a los límites de dispositivos en la misma área. Esto es muy difícil de determinar en la práctica, ya que está relacionado no solo con dispositivos Bluetooth, sino también con WiFi.

Este documento analiza cómo el aumento en el recuento de dispositivos aumenta el tiempo que lleva descubrirlo: enlace

También considera lo siguiente:

  

Los dispositivos Bluetooth funcionan con la banda de radio de 2.4 GHz, que es la misma frecuencia sin licencia utilizada por muchos otros dispositivos inalámbricos. Si muchos dispositivos en la misma área utilizan todos el mismo ancho de banda, pueden surgir problemas generales en la red, ya que las señales chocan y la información se debe reenviar. La señal de Bluetooth fue diseñada para cambiar su frecuencia muchas veces por segundo para reducir esta interferencia, pero si suficientes dispositivos intentan utilizar el mismo ancho de banda, la interferencia es inevitable. Bluetooth 3.0, que se usa en dispositivos creados en 2010, utiliza el espectro de 6-9 GHz, por lo que tendrá muchos menos problemas de interferencia. Los dispositivos Bluetooth 3.0 también son capaces de transmitir a 2,4 GHz para comunicarse con tecnologías Bluetooth anteriores. Bluetooth 3.0, que funciona a 2.4 GHz, tiene los mismos problemas con la interferencia que las tecnologías Bluetooth anteriores.

Para resumir: debe considerar cuidadosamente la posible interferencia y las restricciones de tiempo que tendrá. Sospecho que se pueden hacer 25 dispositivos. Pero para estar seguro de que necesitarás probar esto prácticamente

    
respondido por el Konsalik
5

No hay límites superiores teóricos sobre cuántos dispositivos se pueden descubrir, es directamente proporcional al tiempo de descubrimiento. Aumentar la cantidad de tiempo empleado en el descubrimiento aumentará las posibilidades de detectar todos los dispositivos dentro del alcance.

Básicamente, el descubrimiento se realiza mediante el escaneo del dispositivo de escaneo en una de las 32 frecuencias y el dispositivo de publicidad enviando una baliza en todas las 32 frecuencias. Los dispositivos de publicidad siguen repitiendo esta secuencia y el dispositivo de escaneo, una vez que recibe una baliza, responderá y retrocederá aleatoriamente durante algún tiempo, se conectará a una nueva frecuencia y repetirá el mismo proceso. Entonces, incluso si hay varios dispositivos escaneando a una cierta frecuencia, la primera vez que sus respuestas colisionarán, pero después de un retroceso, al azar terminarán en diferentes frecuencias y aumentarán sus posibilidades de que las respuestas no vuelvan a colisionar.

En su caso de uso de 25 dispositivos activos no es en absoluto un problema, he trabajado con dispositivos y entornos donde había 50-100 dispositivos y un descubrimiento de 10-15 segundos puede encontrar fácilmente la mayoría de los dispositivos. Espero que esto ayude.

    
respondido por el Dennis Mathews
1

Recientemente estudié la misma pregunta- Mis conclusiones son que las limitaciones son por parte del IC o del Software.

El mejor chip para usar está basado en TI y en software en chip.

Android / Apple / Windows tienen sus propios límites en el kernel, por lo que al usar software, cualquier software para enumerar BT estará limitado por el BT-Stack / Kernel. El uso del SoC no tiene límites, ya que la pila de IC es simple.

Use una forma personalizada para canalizar información a su programa.

En la actualidad decidí no usar BT porque es un dolor absoluto en el culo.

A menos que sea el nuevo estándar V4 que maneja la publicidad de una mejor manera.

También necesitaba tener un número ilimitado de BT en una habitación ... decidí hacer mi propia PCB y mi receptor, ¿por qué? Porque era más fácil y más barato, lo creas o no.

Vuelve a tu pregunta.

(Uso de algo como WP7 / iPhone3,4 / Android)

BTv2.1 BT3

Confiablemente no más de 10 en general. Lo más que he visto manejado 32.

BT4

El documento técnico dice 128. Solo Apple 4S es compatible con esta versión, así que no la he probado.

    
respondido por el ppumkin
0

Un dispositivo Bluetooth puede conectar aproximadamente 7 dispositivos a la vez. Es su capacidad máxima.
Pero puede variar según las configuraciones del dispositivo.
Question
Question1
échale un vistazo al enlace anterior, esto puede ser útil para ti

    
respondido por el Gouse Moinuddin Shaik
0

No creo que haya un límite. La forma en que implementé la detección de dispositivos cercanos fue utilizar la biblioteca InTheHand.Net ( enlace ), ejecutar el descubrimiento para todos los dispositivos cercanos periódicamente y en breve, conéctese a cada dispositivo para asegurarse de que aún esté disponible. Sin conectarme, me di cuenta de que no hay ninguna garantía de que sabrá con exactitud cuándo llegó o se fue un dispositivo.

Un ejemplo a continuación:

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;

    }
    
respondido por el dancri77

Lea otras preguntas en las etiquetas