Want to Contribute to us or want to have 15k+ Audience read your Article ? Or Just want to make a strong Backlink?

Bluetooth LE cihazlarla çalışma – DEV Community 👩‍💻👨‍💻

Düşük enerjili Bluetooth (Bluetooth Low Vitality), düşük güce sahip sensör ve çeşitli cihazlar için tasarlanmış, klasik Bluetooth’a göre çok daha düşük güçlü Bluetooth imkanı veren yapıdır. Özellikle sürekli bağlantı gerektirmeyen fakat uzun pil ömrüne sahip olması istenen uygulamalar için kullanılmaktadır.

Öncelikle sisteminizde bir Bluetooth alıcısı olması gerekiyor. Tabi ki bu alıcıları çok fazla görmüş olabilirsiniz. Bu alıcılar USB olarak takılabildiği gibi sisteminizin içerisinde entegre olarak da bulunuyor olabilir.

Öncelikle sistemimizde bluetooth cihazı olup olmadığını anlayabilmek için kullanacağımız komut hcitool ile sisteminize takılı olan bluetooth cihazlarını listeleyebilirsiniz.

hcitool dev
Enter fullscreen mode

Exit fullscreen mode

Bu komut yazıldıktan sonra aşağıdaki gibi bir çıktı beklenmektedir:

Units:
    hci0    00:1A:4D:BA:B1:15
Enter fullscreen mode

Exit fullscreen mode

Burada MAC adresi gözüken cihaz kendi Bluetooth alıcınızdır. Eğer cihaz göremiyorsanız alıcıyı kapatıp açmak veya çıkartıp takmayı deneyebilirsiniz.

Aynı komut ile sistemde aktif olarak yayın yapan Bluetooth cihazlarını tarayabilirsiniz. Tarama işlemi için aşağıdaki gibi komut çalıştırılmalıdır. Bu tarama işlemi CTRL + C ile kapatmadıkça taramaya devam edecektir.

sudo hcitool lescan
Enter fullscreen mode

Exit fullscreen mode

Bu komut sonrasında aşağıdaki gibi akan şekilde Bluetooth cihazlarının MAC adresleri ve tespit edilebiliyorsa isimleri görüntülenmektedir.

LE Scan ...
CB:...:9D (unknown)
CB:...:9D Amazfit Neo
A4:...:91 (unknown)
A4:...:91 LYWSD03MMC
.....
A4:...:91 (unknown)
A4:...:91 LYWSD03MMC
Enter fullscreen mode

Exit fullscreen mode

Bu adımla birlikte düşük enerjili Bluetooth cihazının MAC adresini tespit etmiş oluyorsunuz ve erişim için kullanılabilir hale gelmektedir.

Düşük enerjili Bluetooth cihazlara erişebilmek için farklı bir araç olan gantttool kullanılmaktadır. Bu uygulama, örneğin Ubuntu üzerinde bluez isimli paket ile gelmektedir. Dolayısıyla öncelikle ilgili paketi yüklemeniz gerekir.

sudo apt set up bluez
Enter fullscreen mode

Exit fullscreen mode

Önceki başlıkta öğrendiğimiz Bluetooth cihazının MAC adresini bu araca vererek öncelikli olarak interaktif bir oturum açılması mantıklı olacaktır.

sudo gatttool -b CB:1A:4D:BA:B1:9D -I
Enter fullscreen mode

Exit fullscreen mode

Bu şekilde ekranda aşağıdaki gibi bir kabuk açıldığını göreceksiniz.

[CB:1A:4D:BA:B1:9D][LE]>
Enter fullscreen mode

Exit fullscreen mode

Bu kabuk üzerinde ilk olarak join komutu ile bağlantı sağlanması gerekiyor ve “connection profitable” cevabı alınması gerekiyor. Bu alınmıyorsa gerçekten bağlantı sağlandığı anlamı kesinlikle taşımamaktadır.

[CB:1A:4D:BA:B1:9D][LE]>join
Making an attempt to connect with CB:1A:4D:BA:B1:9D
Connection profitable
[CB:1A:4D:BA:B1:9D][LE]>
Enter fullscreen mode

Exit fullscreen mode

Bu adım gerçekleştiğinde cihaz ile erişime açık bir kabuğa eriştiğinizi söyleyebiliriz.

Cihaza interaktif mod ile bağlantı kurduktan sonra özellikle aşağıdaki 3 komut ile birlikte servisler, handlerlar ve karakteristikler görüntülenebiliyor.

İlk olarak main komutu uygulanarak aşağıdaki gibi UUID’lere sahip servisleri gözlemleyebilirsiniz:

[CB:1A:4D:BA:B1:9D][LE]> main
attr deal with: 0x0001, finish grp deal with: 0x0004 uuid: 00001801-0000-1000-8000-00805f9b34fb
attr deal with: 0x0005, finish grp deal with: 0x000b uuid: 00001800-0000-1000-8000-00805f9b34fb
attr deal with: 0x000c, finish grp deal with: 0x000f uuid: 00001623-1212-efde-1623-785feabcd123
Enter fullscreen mode

Exit fullscreen mode

Ayrıca char-desc komutu ile kullanılabilir karakter handlerlarına erişebilirsiniz.

[CB:1A:4D:BA:B1:9D][LE]> char-desc
deal with: 0x0001, uuid: 00002800-0000-1000-8000-00805f9b34fb
deal with: 0x0002, uuid: 00002803-0000-1000-8000-00805f9b34fb
deal with: 0x0003, uuid: 00002a05-0000-1000-8000-00805f9b34fb
deal with: 0x0004, uuid: 00002902-0000-1000-8000-00805f9b34fb
deal with: 0x0005, uuid: 00002800-0000-1000-8000-00805f9b34fb
deal with: 0x0006, uuid: 00002803-0000-1000-8000-00805f9b34fb
deal with: 0x0007, uuid: 00002a00-0000-1000-8000-00805f9b34fb
deal with: 0x0008, uuid: 00002803-0000-1000-8000-00805f9b34fb
deal with: 0x0009, uuid: 00002a01-0000-1000-8000-00805f9b34fb
deal with: 0x000a, uuid: 00002803-0000-1000-8000-00805f9b34fb
deal with: 0x000b, uuid: 00002a04-0000-1000-8000-00805f9b34fb
deal with: 0x000c, uuid: 00002800-0000-1000-8000-00805f9b34fb
deal with: 0x000d, uuid: 00002803-0000-1000-8000-00805f9b34fb
deal with: 0x000e, uuid: 00001624-1212-efde-1623-785feabcd123
deal with: 0x000f, uuid: 00002902-0000-1000-8000-00805f9b34fb
Enter fullscreen mode

Exit fullscreen mode

Ve son olarak da traits komutu ile karakteristik değerleri görebilirsiniz.

[CB:1A:4D:BA:B1:9D][LE]> traits
deal with: 0x0002, char properties: 0x20, char worth deal with: 0x0003, uuid: 00002a05-0000-1000-8000-00805f9b34fb
deal with: 0x0006, char properties: 0x4e, char worth deal with: 0x0007, uuid: 00002a00-0000-1000-8000-00805f9b34fb
deal with: 0x0008, char properties: 0x4e, char worth deal with: 0x0009, uuid: 00002a01-0000-1000-8000-00805f9b34fb
deal with: 0x000a, char properties: 0x02, char worth deal with: 0x000b, uuid: 00002a04-0000-1000-8000-00805f9b34fb
deal with: 0x000d, char properties: 0x1e, char worth deal with: 0x000e, uuid: 00001624-1212-efde-1623-785feabcd123
Enter fullscreen mode

Exit fullscreen mode

Bir karakteristiği okuma yapmak için o karakteristiğin handler’ını kullanarak okuma sağlanabilmektedir.

[CB:1A:4D:BA:B1:9D][LE]> char-read-hnd 0x0005
Attribute worth/descriptor: 00 18 
Enter fullscreen mode

Exit fullscreen mode

Ve tabi cihazın dokümantasyonları incelerenek aşağıdaki gibi yazma işlemleri de yapılabilmektedir. Bu sayede örneğin LEGO HUB üzerinden motor çalıştırabilme, hızı ayarlayabilme gibi şeyler yapılabilmektedir.

[CB:1A:4D:BA:B1:9D][LE]> char-write-req 0x000f 0100
Attribute worth was written efficiently
Notification deal with = 0x000e worth: 0f 00 04 00 01 02 00 00 00 00 00 00 00 00 00 
Notification deal with = 0x000e worth: 0f 00 04 32 01 17 00 00 00 00 10 00 00 00 10 
Notification deal with = 0x000e worth: 0f 00 04 3b 01 15 00 02 00 00 00 02 00 00 00 
Notification deal with = 0x000e worth: 0f 00 04 3c 01 14 00 02 00 00 00 02 00 00 00 
Enter fullscreen mode

Exit fullscreen mode

İnteraktif mode’tan çıkış için exit komutu uygulanması yeterlidir.

Yukarıda anlatılan fonksiyonların bir benzeri interaktif olarak açılmadan CLI üzerinden çalıştırılabilmesi de sağlanabilmektedir.

gatttool -b CB:1A:4D:BA:B1:9D --char-write-req --handle 0x000e --value 0a0081000060007f0000
gatttool -b CB:1A:4D:BA:B1:9D --char-read-hnd --handle 0x000e
Enter fullscreen mode

Exit fullscreen mode

Add a Comment

Your email address will not be published. Required fields are marked *

Want to Contribute to us or want to have 15k+ Audience read your Article ? Or Just want to make a strong Backlink?