Tek bir alanda kaç tane etkin Bluetooth cihazını güvenilir bir şekilde tespit edebilirim?


9

Düşük maliyetli bir cazibe tasarlıyorum ve yakınlık tespiti için Bluetooth cihaz tanımlamasını kullanmayı umuyorum - yani, misafir A statik konum X aralığındadır. Her misafire özelleştirilmiş bir mobil cihaz (iPod veya Android tabanlı) verilecektir.

Yakındaki tüm cihazların numaralandırılması güvenilir hale gelmeden önce Bluetooth cihazının "yoğunluğu" üzerinde gerçekçi bir üst sınır nedir? Örneğin, sabit bir Bluetooth özellikli PC'nin yakınında 25 etkin cihaza tek bir yerde güvenilir ve tamamen algılamak için çok fazla mı (tüm cihazlar) sahip? Bu çok fazla tıkanıklık mı?

(Açık olmak gerekirse: Bağlantı kurmama gerek yok. Yalnızca cihazların varlığını veya yokluğunu isimle güvenilir bir şekilde tespit etmem gerekiyor.)


Sorunuz için bir numara buldunuz mu?
Ramis

Yanıtlar:


9

Bluetooth Spesifikasyonu'nun aynı alandaki cihaz sınırlarına herhangi bir referans yaptığını göremiyorum. Bu sadece Bluetooth cihazlarla değil, WiFi ile de ilgili olduğu için pratik olarak belirlemek çok zordur.

Bu makale, cihaz sayısındaki artışın cihaz keşfetme süresini nasıl artırdığını incelemektedir: http://www.shiratori.riec.tohoku.ac.jp/~deba/PAPER/Journal/WINET-onlineFinal.pdf

Ayrıca aşağıdakileri de göz önünde bulundurun:

Bluetooth cihazları, diğer birçok kablosuz cihaz tarafından kullanılan aynı lisanssız frekans olan 2,4 GHz radyo bandıyla çalışır. Aynı alandaki birçok aygıt aynı bant genişliğini kullanıyorsa, sinyallerin çarpışması ve bilginin yeniden gönderilmesi gerektiği için genel ağ sorunlarına yol açabilir. Bluetooth sinyali, bu paraziti azaltmak için saniyede birçok kez frekansını değiştirmek üzere tasarlanmıştır, ancak yeterli sayıda cihaz aynı küçük bant genişliğini kullanmaya çalışıyorsa, parazit kaçınılmazdır. 2010'da oluşturulan cihazlarda kullanılan Bluetooth 3.0, 6-9 GHz spektrumunu kullanıyor, bu nedenle çok daha az parazit sorunu olacak. Bluetooth 3.0 cihazları ayrıca daha önceki Bluetooth teknolojileriyle iletişim kurmak için 2,4 GHz hızında iletim yapabilir. 2.4 GHz hızında çalışan Bluetooth 3.0,

Özetlemek gerekirse: Olası müdahaleyi sahip olacağınız zaman kısıtlamalarını dikkatlice düşünmeniz gerekir. 25 cihazın yapılabileceğinden şüpheleniyorum. Ancak, bunu pratik olarak test etmeniz gerekeceğinden emin olmak için


5

Kaç cihazın keşfedilebileceğine dair teorik üst sınır yoktur, keşif zamanıyla doğru orantılıdır. Keşif için harcanan zamanın arttırılması, menzil içindeki tüm cihazları algılama şansını artıracaktır.

Temel olarak keşif, 32 frekanstan birinde tarama cihazı ve 32 frekansın tümüne bir işaret gönderen reklam cihazı ile gerçekleştirilir. Reklam cihazları bu diziyi tekrarlamaya devam eder ve bir işaret aldıktan sonra tarama cihazı bir süre yanıt verir ve rastgele bir süre geri döner ve yeni bir frekansa kilitlenir ve aynı işlemi tekrarlar. Bu nedenle, belirli bir frekansta tarama yapan birden fazla cihaz olsa bile, ilk kez yanıtları çarpışır, ancak geri çekildikten sonra rastgele farklı frekanslarda sonuçlanır ve yanıtların tekrar çarpışmama şansını arttırır.

25 aktif cihaz kullanım durumunuzda hiç sorun değil, 50-100 cihazın bulunduğu cihazlarla ve ortamlarla çalıştım ve 10-15 saniyelik bir keşif çoğu cihazı kolayca bulabilir. Bu yardımcı olur umarım.


1

Son zamanlarda aynı soruyu inceledim- Bulgularım, sınırlamaların IC veya Yazılım tarafından yapıldığı yönündedir.

Kullanılacak en iyi çip TI tabanlı ve çip üzerindeki yazılımdır.

Android / Apple / Windows çekirdeğinde kendi sınırları vardır - bu nedenle BT'yi numaralandırmak için herhangi bir yazılım kullanmak BT-Stack / Kernel tarafından sınırlandırılacaktır. IC'nin Yığını basit olduğundan SoC'yi kullanmanın herhangi bir sınırı yoktur.

Bilgileri programınıza aktarmak için özel bir yol kullanın.

Gün ben eşek kullanılmadan çünkü mutlak ağrı BT BT karar verdi.

Tabii reklamları daha iyi bir şekilde ele alan yeni V4 standardı olmadığı sürece.

Ben de bir odada sınırsız BT olması gerekiyordu .. kendi uygun PCB ve alıcı yapmaya karar verdi - neden? çünkü inanın ya da inanmayın daha kolay ve daha ucuzdu.

Sorunuza geri dönün.

(WP7 / iPhone3,4 / Android gibi bir şey kullanmak)

BTv2.1 BT3

Genel olarak güvenilir bir şekilde 10'dan fazla değil. Gördüğüm en çok şey 32.

BT4

Beyaz kitap 128 diyor.


0

Bir Bluetooth cihazı bir seferde yaklaşık 7 cihaz bağlayabilir ve maksimum kapasitesidir.
Ancak cihaz konfigürasyonlarına göre değişebilir.
Soru
Soru1
Yukarıdaki bağlantıyı kontrol edin, bu sizin için yararlı olabilir


3
Soru, kaç cihazın bağlanabileceği değil, kaç cihazın tespit edilebileceği ile ilgilidir. Eşleştirme yapılmayacak.
Kortuk

0

Bir sınır olduğunu düşünmüyorum. Yakındaki cihaz algılamasını uygulama şeklim InTheHand.Net kütüphanesini ( http://32feet.codeplex.com/ ) kullanmak, yakındaki tüm cihazların keşfini periyodik olarak çalıştırmak ve daha sonra hala kullanılabilir olduğundan emin olmak için her cihaza kısa bir süre bağlamaktı. Bağlanmadan, bir cihazın ne zaman geldiğini veya terk edildiğini kesin olarak bileceğinizin hiçbir garantisi olmadığını fark ettim.

Aşağıda bir örnek:

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;

    }
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.