Eşleşmeden Bluetooth İletişimi Mümkün Mü?


35

Bir sistemi "anında" kablosuz olarak etkinleştiren bir cihaz üzerinde çalışıyorum. Akla gelen ilk şey, anlık ve ucuz iletişim avantajına sahip olan RFID teknolojisini kullanmaktı. Ancak, bu görevi yerine getirmek için telefonumun bluetooth özelliklerini kullanmakla ilgileniyorum.

Öyleyse sorum şu, Bluetooth iletişimini kullanmak için eşleşmeden iletişim kurmanın bir yolu var mı? Başka bir deyişle, çok basit bir düzeyde, Bluetooth alıcımın "abc123" kodunu beklediğini varsayalım. Telefon gibi bir Bluetooth cihazı bu kodu sürekli olarak iletecek şekilde programlanmıştır. Kodun alınması üzerine, sistem bir kez erişim hakkı verildiğinde ne gerekiyorsa yapmaya başlar. Böyle bir sistem, güvenlik pahasına eşleştirme engelini ortadan kaldıracaktır.

Peki bu kavram bir olasılık mı? Çok fazla teknik düzeyde Bluetooth bağlantı protokolleri hakkında çok az bilgim var, ancak birisi bana bir ipucu verebilirse, o noktadan öğrenmeye başlayabilirim. Sınırlı anlayışımı bir kısıtlama olarak düşünmeyin.


Bunu yapan bir Bluetooth modu var, ama ne dendiğini bilmiyorum. Cep telefonlarına yerel reklamlar göndermek için kullanıldı.
jippie

2
Açma / kapama sinyalini "anında" iletecek olan çeşitli 433MHz modülleri vardır; Garaj kapısı açıcılarında sıklıkla kullanılır. Ayrıca, doğal güvenlik sağlamakla birlikte, ucuz ve kullanımı kolaydır.
pjc50

Yanıtlar:


24

Evet, tamamen mümkün. Bunu daha önce yorumladım ve o zamandan beri daha fazla araştırdım. Tetikleyici Bluetooth cihazının etkinleştirme sinyalini kolay adından göndermesini sağlayabilirsiniz .

Kolay ad, eşleştirilecek bir Bluetooth cihazı ararken listede görünen insan tarafından okunabilir addır. Bunun devreye girme hızı, alıcı cihazın kolay adlar için ne kadar hızlı oy kullandığına bağlıdır. Ne tür bir alıcı cihaz kullandığınızdan bahsetmediniz, ancak bu PDF'yi (Pg.35), menzil içindeki Bluetooth cihazlarının kolay adlarını güncelleme işlemini ayrıntılarıyla anladım.

Kolay adlar için istediğiniz sıklıkta anket yapabilirsiniz. Tetikleme cihazınız kolay adını aktivasyon koduyla değiştirirse, abc123alıcı cihaz bu adı eşleştirmeden görebilir ve gerçekleştirmeye çalıştığınız görevi etkinleştirir. Bu aynı zamanda çok sayıda aktivasyon koduna sahip olmanızı sağlar, dost Bluetooth adı için 248 bayta kadar alabileceğinizi düşünüyorum.

Ayrıca kendinizi kasıtlı olarak Bluejacking'e açmaya da bakabilirsiniz . Buna aşina değilim, ancak güvenlik bir sorun değilse işe yarayabilir.


2
Mükemmel, bu en umut verici görünüyor. Dost isim yönteminin sadeliğini seviyorum ve Bluejacking de harika bir aday gibi görünüyor.
capcom

12

Kısa cevap evet, Bluetooth'u eşleştirmeden kullanmak mümkündür. Ancak yine de her zaman noktadan noktaya bir bağlantı olacak. Eşleştirmeyi kullanmamaya ilişkin olası sorunlar da vardır (esas olarak güvenlik eksikliği ve bu çalışma modu için iyi destek eksikliği). Bunun yapılıp yapılmayacağı alıcınızın Bluetooth donanımına bağlıdır. Bluetooth düşük enerji yerine 'standart' Bluetooth kullandığınızı farz ediyorum (bu tamamen farklı ve özellikle cep telefonlarında iyi bir şekilde desteklenmiyor). Düşük enerjili kullanıyorsanız vericiniz düşük enerjili bir cihaz olacak ve alıcının mesajları dinleyen bir şey olacaksınız. Bunu kullanmadım, bu yüzden size bu konuda herhangi bir bilgi veremem, bu yüzden 'normal' Bluetooth'a bağlı kalacağım.

Gördüğüm gibi aşılması gereken iki konu var:

  1. Pim eşleştirmesini kapatma

  2. Otomatik bağlantı başlatma

Bu gerçekten ilgilendiğiniz şey olduğu izlenimini edindiğimde ilk 2 numarayı ele alacağım (özür dilerim). Bunu bir telefondan veya başka bir 'ana' cihazdan yapmak için, uzak Bluetooth cihazlarını sürekli aramak zorunda kalır. Uygulanabilir olanı tanıdığında, otomatik olarak ona bağlanacak ve ne yapılması gerekiyorsa onu başlatacak bir veri veya başka bir veri gönderecektir. Diğerleri bu işlem için Bluetooth dostu adın kullanılmasından bahsetmiştir ve bu kesinlikle bunu yapmanın bir yoludur. Bluetooth dostu adlarla ilgili deneyimlerim (özellikle de yalnızca Microsoft Bluetooth yığınıyla değil), bu kadar sağlam olmadıkları bir tarama yöntemi değil. Bluetooth Device Class'ı kullanmak için muhtemelen çok daha iyisini yaparsınız, benzersiz cihaz adresiyle aynı anda yayınlanır. Bu cihaz sınıfı, cep telefonları, dizüstü bilgisayarlar, masaüstü bilgisayarlar vb. Şeyler için önceden belirlenmiş sayıda girişe sahiptir. Standart olmayan cihaz sınıflarından birini kullanıyorsanız (örneğin, 00:00:00), Bluetooth cihazlarının büyük çoğunluğunu filtrelemek için. Ardından kalan cihaza bağlanabilir ve işleminizi başlatmak için bir tür istek onay iletişimi yapabilirsiniz. Bunu uygun şekilde gizletirseniz (veya dost adını ikinci bir değerlendirme olarak kontrol edin), kalan yanlış cihazları örtük olarak filtrelemelidir.


1 numaraya gelince, geçici bağlantılar oluşturuyorsanız pin eşleştirme özellikle mantıklı değildir, ancak yine de yapmak istediğinizi elde etmenin en iyi yolu olabilir. Pim eşlemesinden kaçınmak istiyorsanız, kapatılabilir ve eşleştirilmemiş bir bağlantı yapılabilir. Bunu nasıl yapacağınız Bluetooth alıcısı uygulamasına bağlıdır, ancak işte birkaç örnek:

  1. Bluegiga WT12: SET BT AUTH * komutunu kullanın.
  2. Ulusal Yarı İletken LMX9838: GAP_SET_SECURITY_MODE komutunu güvenlik modu 1 ile kullanın (eşleştirme yok)

vb.

Cihaza bağlanma daha sonra eşleştirmeden yapılabilir. Bağlantıyı başlatan cihaz alıcıyla aynıysa, bu çok basittir. Windows PC kullanıyorsanız, zahmetli bir şekilde yeni bir bağlantı süreci oluşturabilir ve "pim kullanmayın" ı seçebilirsiniz, ancak Windows muhtemelen bağlandığınızda hala bir pim isteyecektir (genellikle 0000 çalışır, ancak çok lapa lapa). Pybluez ile python kullanıyorsanız, çok basit:

import bluetooth
sock = bluetooth.BluetoothSocket(bluetooth.RFCOMM)
sock.connect((<insert MAC address>, <insert port number>))

Ancak, bir cep telefonundan bağlanmak istiyorsanız, çok daha karmaşık bir hale gelir. Android SDK, eşlenmemiş bağlantıları gerçekten desteklemiyor gibi görünüyor:

Mevcut Android Bluetooth API'leri, bir RFCOMM bağlantısı kurulmadan önce cihazların eşleştirilmesini gerektirir. (Bluetooth API'leri ile şifreli bir bağlantı başlattığınızda eşleştirme otomatik olarak yapılır.)

( http://developer.android.com/guide/topics/connectivity/bluetooth.html adresinden ). Bunun için yollar var, ama çok karmaşıklar ve iyi desteklenmiyorlar. Bir iPhone kullanıyorsanız, Bluetooth bağlantısı tamamen farklı bir solucanlar kutusudur (lisanslama vb.), Bu yüzden şimdilik bırakacağım.


Bütün bunları söyledikten sonra, hemen hemen her API şimdiye verir eşleştirme baktım vegerçekleştirilecek eşleştirme (önemli python / pybluez istisnası dışında, ancak bu Windows'taki Microsoft yığınının etrafındaki bir sarmalayıcıdır, bu nedenle her zaman düşük seviye işlevini doğrudan çağırabilirsiniz). Bu nedenle, doğru cihaz sınıfına sahip bir cihaz tespit ettiğinizde neden sadece otomatik olarak eşleşmiyorsunuz (önceden tanımlanmış bir eşleştirme pin numarasıyla), bağlantıyı yap, gerekli olan verileri gönder, bağlantıyı kes ve sonra da eşleşmeyi kaldır. Bunların hiçbiri herhangi bir kullanıcı müdahalesi gerektirmez ve binlerce kez yapmadığınız sürece (potansiyel olarak EEPROM aşınmasına neden olabilir), size herhangi bir soruna neden olmamalıdır. Ayrıca, Bluetooth kullanmanın standart dışı bir yöntem olarak algılananlarla iyi çalışması için farklı API'ler almaya çalışırken size büyük bir zorluk kazandırır.


1
Mükemmel bir yanıt için teşekkürler! Şimdi bakmam için çok şey var.
capcom

10

Bu, Bluetooth markası içindeki Bluetooth Smart (veya Bluetooth Düşük Enerji / Bluetooth 4.0) adı verilen bir teknolojiyle ve ayrıca sahip olduğunuz telefona bağlı olarak gerçekleştirilebilir.

Düzenli Bluetooth'a göre Düşük Enerji'nin en büyük avantajı, çok daha az güç harcadığı ve bir cihazın beklenen kullanım ömrünün bağlantı aralığına ve bir madeni para büyüklüğünde bir pilde ne kadar reklam verdiğine bağlı olarak yıllar olabilir.

Bu sorunu çözmek için, söz konusu kodu çipin reklam verilerinin içine koyabilirsiniz. ( Bluetooth 4.0 Core Spec. Cilt 3, Bölüm C, Bölüm 11.1.4 veya 11.1.10)

Düşük Enerji yongaları üreten 3 ana yonga üreticisi vardır (TI, CSR ve Nordic Semiconductor)

Nordic, nRF8001 (bir bağlantı yongası, tam nitelikli cihaz) ve bir SoC nRF51822 adında bir bağlantı yongasına sahiptir . Kullanmanın avantajı nRF8001 Eğer seçtiğiniz işlemci kullanabilir ve aldırmak zorunda kalmamasıdır Bluetooth Bu çip tarafından gerçekleştirilmektedir olarak şartname. NRF51822'nin avantajı, yonga üzerindeki bir sistem olması ve ürün reçetesini düşürmesi, Cortex-M0 kullanması ve serbest bırakıldığında tam olarak kalması gerektiğidir.

TI, 8051 SoC yongası cc2540'a sahip ve CSR SoC yongası CSR µEnerji'ye sahip

Her şey sizin gereksiniminize göre belirlenir ve işlemci ve işlevsellik / maliyet tercihinize göre değişir


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.