Ile aktywnych urządzeń Bluetooth mogę niezawodnie wykryć w jednym miejscu?

9

Projektuję niedrogą atrakcję i mam nadzieję, że do wykrywania bliskości wykorzystam identyfikację urządzenia Bluetooth - tj. Jest gościem A w zasięgu stałej lokalizacji X. Każdy gość otrzyma dostosowane urządzenie mobilne (oparte na iPodzie lub systemie Android).

Jaka jest realistyczna górna granica „gęstości” urządzenia Bluetooth, zanim wyliczenie wszystkich pobliskich urządzeń stanie się niewiarygodne? Na przykład, czy 25 aktywnych urządzeń w pobliżu stacjonarnego komputera z obsługą Bluetooth jest zbyt wielu w jednym miejscu, aby wykryć niezawodnie i całkowicie (wszystkie urządzenia)? Czy to za dużo zatorów?

(Żeby było jasne: nie muszę nawiązywać połączeń. Muszę tylko niezawodnie wykrywać obecność lub brak urządzeń według nazwy).

DuckMaestro
źródło
Czy znalazłeś numer swojego pytania?
Ramis

Odpowiedzi:

9

Nie widzę, aby specyfikacja Bluetooth odnosiła się do limitów urządzeń w tym samym obszarze. Jest to bardzo trudne do ustalenia w praktyce, ponieważ dotyczy nie tylko urządzeń Bluetooth, ale także WiFi.

Ten artykuł przedstawia, jak wzrost liczby urządzeń zwiększa czas potrzebny na wykrycie urządzenia: http://www.shiratori.riec.tohoku.ac.jp/~deba/PAPER/Journal/WINET-onlineFinal.pdf

Weź również pod uwagę następujące kwestie:

Urządzenia Bluetooth współpracują z pasmem radiowym 2,4 GHz, czyli taką samą nielicencjonowaną częstotliwością, z jakiej korzysta wiele innych urządzeń bezprzewodowych. Jeśli wiele urządzeń w tym samym obszarze korzysta z tego samego pasma, może to prowadzić do ogólnych problemów z siecią, ponieważ sygnały kolidują i informacje muszą zostać ponownie wysłane. Sygnał Bluetooth został zaprojektowany w celu zmiany jego częstotliwości wiele razy na sekundę w celu zmniejszenia tych zakłóceń, ale jeśli wystarczająca liczba urządzeń próbuje wykorzystać ten sam niewielki odcinek pasma, zakłócenia są nieuniknione. Bluetooth 3.0, wykorzystywany w urządzeniach utworzonych w 2010 roku, wykorzystuje widmo 6-9 GHz, więc będzie miał znacznie mniej problemów z zakłóceniami. Urządzenia Bluetooth 3.0 mogą również transmitować z częstotliwością 2,4 GHz, aby komunikować się z wcześniejszymi technologiami Bluetooth. Bluetooth 3.0, działający z częstotliwością 2,4 GHz,

Podsumowując: Musisz dokładnie rozważyć ewentualną ingerencję i ograniczenia czasowe. Podejrzewam, że można wykonać 25 urządzeń. Ale dla pewności będziesz musiał praktycznie to przetestować

Konsalik
źródło
5

Nie ma teoretycznych górnych granic liczby urządzeń, które można wykryć, jest to wprost proporcjonalne do czasu odkrycia. Zwiększenie czasu spędzonego na odkrywaniu zwiększy szanse na wykrycie wszystkich urządzeń w zasięgu.

Zasadniczo wykrywanie odbywa się poprzez skanowanie urządzenia skanującego na jednej z 32 częstotliwości, a urządzenie reklamowe wysyła sygnał nawigacyjny na wszystkich 32 częstotliwościach. Urządzenia reklamowe powtarzają tę sekwencję, a urządzenie skanujące, gdy otrzyma sygnał nawigacyjny, zareaguje i losowo wycofa się na pewien czas, a następnie włączy się na nowej częstotliwości i powtórzy ten sam proces. Więc nawet jeśli istnieje wiele urządzeń skanujących z określoną częstotliwością, po raz pierwszy ich odpowiedzi zderzą się, ale po wycofaniu się losowo kończą na różnych częstotliwościach i zwiększają swoje szanse na to, że odpowiedzi nie zderzą się ponownie.

W twoim przypadku 25 aktywnych urządzeń nie stanowi żadnego problemu, pracowałem z urządzeniami i środowiskami, w których było 50-100 urządzeń, a odkrycie 10-15 sekund może z łatwością znaleźć większość urządzeń. Mam nadzieję że to pomoże.

Dennis Mathews
źródło
1

Ostatnio studiowałem to samo pytanie - moje ustalenia są takie, że ograniczenia dotyczą IC lub oprogramowania.

Najlepszy chip do użycia to TI i oprogramowanie na chipie.

Android / Apple / Windows mają swoje własne ograniczenia w jądrze, więc używanie oprogramowania do wyliczania BT będzie ograniczone przez BT-Stack / Jądro. Korzystanie z SoC nie ma żadnych ograniczeń, ponieważ stos IC jest prosty.

Użyj niestandardowego sposobu przesyłania informacji do swojego programu.

Tego dnia zdecydowałem, że nie używam BT, ponieważ jest to absolutny ból w dupie.

Chyba że nowy standard V4, który obsługuje reklamy w nowy, lepszy sposób.

Musiałem też mieć nieograniczoną liczbę BT w pokoju. Postanowiłem stworzyć własną płytkę drukowaną i odbiornik - dlaczego? ponieważ było łatwiej i taniej w to uwierz lub nie.

Wróć do twojego pytania.

(Używając czegoś takiego jak WP7 / iPhone3,4 / Android)

BTv2.1 BT3

Ogólnie nie więcej niż 10. Najwięcej widziałem obsadzonych 32.

BT4

Biała księga mówi 128 .. Tylko Apple 4S obsługuje tę wersję, więc nie testowałem.

Piotr Kula
źródło
0

Urządzenie Bluetooth może łączyć jednocześnie około 7 urządzeń. Jest to jego maksymalna pojemność.
Ale może się różnić w zależności od konfiguracji urządzenia.
Pytanie
Pytanie 1
sprawdź powyższy link, który może Ci pomóc

Gouse Shaik
źródło
3
Nie chodzi o to, ile urządzeń można połączyć, chodzi o to, ile można wykryć. Parowanie nie zostanie wykonane.
Kortuk
0

Nie sądzę, że jest limit. Sposób, w jaki zaimplementowałem wykrywanie pobliskich urządzeń, to użycie biblioteki InTheHand.Net ( http://32feet.codeplex.com/ ), okresowe uruchamianie wykrywania dla wszystkich pobliskich urządzeń, a następnie szybkie połączenie z każdym urządzeniem, aby zapewnić jego dostępność. Bez połączenia zdałem sobie sprawę, że nie ma gwarancji, że dokładnie dowiesz się, kiedy jedno urządzenie dotarło lub wyszło.

Przykład poniżej:

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
źródło