Quantos dispositivos Bluetooth ativos posso detectar com segurança em um único espaço?

9

Estou criando uma atração de baixo custo e espero usar a identificação de dispositivo Bluetooth para detecção de proximidade - ou seja, o convidado A está dentro do intervalo do local estático X. Cada convidado receberá um dispositivo móvel personalizado (baseado em iPod ou Android).

O que é um limite superior realista na "densidade" do dispositivo Bluetooth antes que a enumeração de todos os dispositivos próximos se torne não confiável? Por exemplo, ter 25 dispositivos ativos nas proximidades de um PC estacionário com Bluetooth é demais em um local para detectar de forma confiável e completa (todos os dispositivos)? Isso é muito congestionamento?

(Para ser claro: não preciso estabelecer conexões. Só preciso detectar com segurança a presença ou ausência de dispositivos pelo nome.)

DuckMaestro
fonte
Você encontrou um número para sua pergunta?
Ramis

Respostas:

9

Não vejo que a especificação Bluetooth faça qualquer referência aos limites de dispositivos na mesma área. Isso é muito difícil de determinar praticamente, pois está relacionado não apenas aos dispositivos Bluetooth, mas também ao WiFi.

Este artigo analisa como o aumento na contagem de dispositivos aumenta o tempo necessário para a descoberta de dispositivos: http://www.shiratori.riec.tohoku.ac.jp/~deba/PAPER/Journal/WINET-onlineFinal.pdf

Considere também o seguinte:

Os dispositivos Bluetooth funcionam com a banda de rádio de 2,4 GHz, que é a mesma frequência não licenciada usada por muitos outros dispositivos sem fio. Se muitos dispositivos na mesma área estiverem usando o mesmo trecho de largura de banda, isso poderá levar a problemas gerais de rede, pois os sinais colidem e as informações precisam ser reenviadas. O sinal do Bluetooth foi projetado para alterar sua frequência várias vezes por segundo para reduzir essa interferência, mas se houver dispositivos suficientes tentando usar o mesmo pequeno trecho de largura de banda, a interferência é inevitável. O Bluetooth 3.0, usado em dispositivos criados em 2010, usa o espectro de 6 a 9 GHz, por isso terá muito menos problemas de interferência. Os dispositivos Bluetooth 3.0 também são capazes de transmitir a 2,4 GHz para se comunicar com as tecnologias Bluetooth anteriores. Bluetooth 3.0, rodando a 2,4 GHz,

Para resumir: Você precisa considerar cuidadosamente a possível interferência e restrições de tempo que terá. Eu suspeito que 25 dispositivos possam ser feitos. Mas para ter certeza de que você precisará praticamente testar isso

Konsalik
fonte
5

Não há limites teóricos para o número de dispositivos que podem ser descobertos, é diretamente proporcional ao tempo da descoberta. Aumentar a quantidade de tempo gasto na descoberta aumentará as chances de detectar todos os dispositivos dentro do alcance.

Basicamente, a descoberta é realizada pela varredura do dispositivo de varredura em uma das 32 frequências e pelo dispositivo de publicidade enviando um farol em todas as 32 frequências. Os dispositivos de publicidade continuam repetindo essa sequência e o dispositivo de digitalização, uma vez que recebe um farol, responde e recua aleatoriamente por algum tempo e se apega a uma nova frequência e repete o mesmo processo. Portanto, mesmo que haja vários dispositivos varrendo em uma determinada frequência, a primeira vez que suas respostas colidirem, mas após um recuo, elas aleatoriamente terminam em diferentes frequências e aumentam suas chances de respostas não colidirem novamente.

No caso de uso de 25 dispositivos ativos, não há problema algum; trabalhei com dispositivos e ambientes em que havia 50 a 100 dispositivos e uma descoberta de 10 a 15 segundos pode encontrar facilmente a maioria dos dispositivos. Espero que isto ajude.

Dennis Mathews
fonte
1

Recentemente, estudei a mesma pergunta - Minhas descobertas são de que as limitações são do IC ou do Software.

O melhor chip a ser usado é baseado na TI e no software do chip.

O Android / Apple / Windows tem seus próprios limites no kernel; portanto, usando o software, qualquer software para enumerar o BT será limitado pelo BT-Stack / Kernel. O uso do SoC não tem limites, pois a pilha do IC é simples.

Use uma maneira personalizada de canalizar informações para o seu programa.

No dia em que eu decidi não usar BT, porque é uma dor absoluta na bunda.

A menos que seja o novo padrão V4 que lida com a publicidade de uma maneira nova e melhor.

Eu também precisava ter BT ilimitados em uma sala. Decidi fazer meu próprio PCB e receptor - por quê? porque era mais fácil e barato, acredite ou não.

Voltar à sua pergunta.

(Usando algo como WP7 / iPhone3,4 / Android)

BTv2.1 BT3

Confiável não superior a 10 em geral. O máximo que eu já vi lidou com 32.

BT4

O documento oficial diz 128. Somente o Apple 4S suporta esta versão, portanto não testei.

Piotr Kula
fonte
0

Um dispositivo Bluetooth pode conectar cerca de 7 dispositivos por vez. É sua capacidade máxima.
Mas pode variar de acordo com as configurações do dispositivo.
Pergunta
Pergunta1
verifique o link acima, isto pode ser útil para você

Gouse Shaik
fonte
3
A questão não é quantos dispositivos podem ser conectados, mas quantos podem ser detectados. Nenhum emparelhamento será feito.
Kortuk
0

Eu não acho que há um limite. A maneira como implementei a detecção de dispositivos próximos era usar a biblioteca InTheHand.Net ( http://32feet.codeplex.com/ ), executar a descoberta de todos os dispositivos próximos periodicamente e depois conectar-me brevemente a cada dispositivo para garantir que ele ainda esteja disponível. Sem conectar, percebi que não há garantia de que você saberá com precisão quando um dispositivo chegou ou saiu.

Um exemplo abaixo:

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
fonte