Сколько активных Bluetooth-устройств я могу надежно обнаружить в одном месте?

9

Я проектирую недорогой аттракцион и надеюсь использовать идентификацию устройства Bluetooth для обнаружения близости - то есть гость А находится в пределах диапазона статического местоположения X. Каждому гостю будет предоставлено настроенное мобильное устройство (на базе iPod или Android).

Какова реалистичная верхняя граница «плотности» устройства Bluetooth до того, как перечисление всех соседних устройств станет ненадежным? Например, наличие 25 активных устройств в непосредственной близости от стационарного ПК с поддержкой Bluetooth слишком много в одном месте для надежного и полного обнаружения (все устройства)? Это слишком много заторов?

(Для ясности: мне не нужно устанавливать соединения. Мне нужно только надежно определять наличие или отсутствие устройств по имени.)

DuckMaestro
источник
Вы нашли номер для вашего вопроса?
Рамис

Ответы:

9

Я не вижу, чтобы в спецификации Bluetooth содержалась ссылка на ограничения устройств в той же области. Это очень трудно определить практически, поскольку это относится не только к Bluetooth-устройствам, но и к WiFi.

В этой статье рассказывается, как увеличение количества устройств увеличивает время обнаружения устройства: http://www.shiratori.riec.tohoku.ac.jp/~deba/PAPER/Journal/WINET-onlineFinal.pdf.

Также учтите следующее:

Устройства Bluetooth работают с радиодиапазоном 2,4 ГГц, который является той же нелицензированной частотой, которую используют многие другие беспроводные устройства. Если все устройства в одной и той же области используют одинаковую полосу пропускания, это может привести к общим проблемам в сети, поскольку сигналы сталкиваются и информация должна быть повторно отправлена. Сигнал Bluetooth был разработан, чтобы изменять его частоту много раз в секунду, чтобы уменьшить эти помехи, но если достаточное количество устройств пытаются использовать одну и ту же небольшую полосу пропускания, помехи неизбежны. Bluetooth 3.0, используемый в устройствах, созданных в 2010 году, использует спектр 6–9 ГГц, поэтому у него будет гораздо меньше проблем с помехами. Устройства Bluetooth 3.0 также способны передавать на частоте 2,4 ГГц для связи с более ранними технологиями Bluetooth. Bluetooth 3.0, работающий на частоте 2,4 ГГц,

Подводя итог: Вам необходимо тщательно рассмотреть возможные помехи и ограничения по времени, которые у вас будут. Я подозреваю, что можно сделать 25 устройств. Но чтобы убедиться, что вам нужно будет практически проверить это

Konsalik
источник
5

Не существует теоретических верхних границ того, сколько устройств может быть обнаружено, оно прямо пропорционально времени обнаружения. Увеличение количества времени, затрачиваемого на обнаружение, увеличит вероятность обнаружения всех устройств в пределах диапазона.

В основном обнаружение выполняется сканирующим устройством, сканирующим на одной из 32 частот, и рекламным устройством, посылающим маяковый сигнал на всех 32 частотах. Рекламные устройства продолжают повторять эту последовательность, и сканирующее устройство, как только оно получает маяк, будет реагировать и произвольно отключаться в течение некоторого времени, фиксироваться на новой частоте и повторять тот же процесс. Таким образом, даже если несколько устройств сканируют на определенной частоте, в первый раз их отклики будут конфликтовать, но после отката они случайным образом оказываются на разных частотах и ​​увеличивают вероятность того, что отклики не столкнутся снова.

В вашем случае использования 25 активных устройств это не проблема, я работал с устройствами и средами, в которых было 50-100 устройств, и обнаружение в 10-15 секунд может легко найти большинство устройств. Надеюсь это поможет.

Деннис Мэтьюз
источник
1

Недавно я изучал тот же вопрос: мои выводы заключаются в том, что ограничения принадлежат либо IC, либо программному обеспечению.

Лучший чип для использования на основе TI и программного обеспечения на чипе.

Android / Apple / Windows имеют свои собственные ограничения в ядре, поэтому при использовании программного обеспечения любое программное обеспечение для перечисления BT будет ограничено BT-Stack / Kernel. Использование SoC не имеет ограничений, поскольку стек IC прост.

Используйте пользовательский способ передачи информации в вашу программу.

В тот день я решил не использовать BT, потому что его абсолютная боль в заднице.

Если это не новый стандарт V4, который обрабатывает рекламу по-новому.

Мне также нужно было иметь неограниченное количество BT в комнате ... решил сделать свою собственную PCB и приемник - почему? потому что это было проще и дешевле, хотите верьте, хотите нет.

Вернемся к вашему вопросу.

(Используя что-то вроде WP7 / iPhone3,4 / Android)

BTv2.1 BT3

Надежно не более 10 в целом. Максимум, что я видел, занимался 32.

BT4

В Белой книге написано 128. Только Apple 4S поддерживает эту версию, поэтому я не тестировал.

Петр Кула
источник
0

Устройство Bluetooth может одновременно подключать до 7 устройств. Это его максимальная емкость.
Но это может варьироваться в зависимости от конфигурации устройства.
Вопрос
Вопрос1:
проверьте ссылку выше, это может быть полезно для вас.

Gouse Shaik
источник
3
Вопрос не в том, сколько устройств можно подключить, а в том, сколько можно обнаружить. Сопряжение не будет выполнено.
Кортук
0

Я не думаю, что есть предел. Я реализовал обнаружение соседних устройств таким образом, чтобы использовать библиотеку InTheHand.Net ( http://32feet.codeplex.com/ ), периодически запускать обнаружение для всех соседних устройств, а затем кратко подключаться к каждому устройству, чтобы убедиться, что оно все еще доступно. Без подключения я понял, что нет никакой гарантии, что вы точно будете знать, когда прибыло или уехало одно устройство.

Пример ниже:

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
источник