Logo

dev-resources.site

for different kinds of informations.

Bluetooth LE cihazlarla çalışma

Published at
12/10/2022
Categories
bluetooth
hcitool
gantttool
Author
aliorhun
Categories
3 categories in total
bluetooth
open
hcitool
open
gantttool
open
Author
8 person written this
aliorhun
open
Bluetooth LE cihazlarla çalışma

Düşük enerjili Bluetooth (Bluetooth Low Energy), 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.

Sisteminizdeki Bluetooth alıcısını öğrenme

Ö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:

Devices:
    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.

Düşük enerjili Bluetooth cihazlarını tarama

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.

Cihaz ile ilk temas

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 install 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 connect komutu ile bağlantı sağlanması gerekiyor ve "connection successful" 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]>connect
Attempting to connect to CB:1A:4D:BA:B1:9D
Connection successful
[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.

Temel bilgilere erişim

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 primary komutu uygulanarak aşağıdaki gibi UUID'lere sahip servisleri gözlemleyebilirsiniz:

[CB:1A:4D:BA:B1:9D][LE]> primary
attr handle: 0x0001, end grp handle: 0x0004 uuid: 00001801-0000-1000-8000-00805f9b34fb
attr handle: 0x0005, end grp handle: 0x000b uuid: 00001800-0000-1000-8000-00805f9b34fb
attr handle: 0x000c, end grp handle: 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
handle: 0x0001, uuid: 00002800-0000-1000-8000-00805f9b34fb
handle: 0x0002, uuid: 00002803-0000-1000-8000-00805f9b34fb
handle: 0x0003, uuid: 00002a05-0000-1000-8000-00805f9b34fb
handle: 0x0004, uuid: 00002902-0000-1000-8000-00805f9b34fb
handle: 0x0005, uuid: 00002800-0000-1000-8000-00805f9b34fb
handle: 0x0006, uuid: 00002803-0000-1000-8000-00805f9b34fb
handle: 0x0007, uuid: 00002a00-0000-1000-8000-00805f9b34fb
handle: 0x0008, uuid: 00002803-0000-1000-8000-00805f9b34fb
handle: 0x0009, uuid: 00002a01-0000-1000-8000-00805f9b34fb
handle: 0x000a, uuid: 00002803-0000-1000-8000-00805f9b34fb
handle: 0x000b, uuid: 00002a04-0000-1000-8000-00805f9b34fb
handle: 0x000c, uuid: 00002800-0000-1000-8000-00805f9b34fb
handle: 0x000d, uuid: 00002803-0000-1000-8000-00805f9b34fb
handle: 0x000e, uuid: 00001624-1212-efde-1623-785feabcd123
handle: 0x000f, uuid: 00002902-0000-1000-8000-00805f9b34fb
Enter fullscreen mode Exit fullscreen mode

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

[CB:1A:4D:BA:B1:9D][LE]> characteristics
handle: 0x0002, char properties: 0x20, char value handle: 0x0003, uuid: 00002a05-0000-1000-8000-00805f9b34fb
handle: 0x0006, char properties: 0x4e, char value handle: 0x0007, uuid: 00002a00-0000-1000-8000-00805f9b34fb
handle: 0x0008, char properties: 0x4e, char value handle: 0x0009, uuid: 00002a01-0000-1000-8000-00805f9b34fb
handle: 0x000a, char properties: 0x02, char value handle: 0x000b, uuid: 00002a04-0000-1000-8000-00805f9b34fb
handle: 0x000d, char properties: 0x1e, char value handle: 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
Characteristic value/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
Characteristic value was written successfully
Notification handle = 0x000e value: 0f 00 04 00 01 02 00 00 00 00 00 00 00 00 00 
Notification handle = 0x000e value: 0f 00 04 32 01 17 00 00 00 00 10 00 00 00 10 
Notification handle = 0x000e value: 0f 00 04 3b 01 15 00 02 00 00 00 02 00 00 00 
Notification handle = 0x000e value: 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.

Komut üzerinden interaktif mod kullanmadan erişim

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
bluetooth Article's
30 articles in total
Favicon
Building a BLE Real-Time macOS Menu Bar App
Favicon
"Why is it, when something happens, it is always you TWO?"- troubleshooting Bluetooth and Wi-Fi devices on Debian 12
Favicon
🎉 The Fun Beginner’s Guide to Bluetooth on Void Linux 🎉
Favicon
Automated Session Control with Bluetooth: An Insight into ble-lock-session
Favicon
Capturing the perfect (radio) wave
Favicon
How the Web Bluetooth API Enhances Passkeys
Favicon
High-Power Bluetooth LE Modules and Their Applications
Favicon
Broadcast Audio URI
Favicon
What's the Difference of BLE Connection Roles: Central vs. Peripheral?
Favicon
Embedded Rust Bluetooth on ESP: BLE Scanner
Favicon
RF-star Introduces CC2642R-Q1 Automotive Grade BLE Module for PEPS, PaaK, and BMS
Favicon
How To Use The Web Bluetooth API
Favicon
Unraveling the Wonders of Bluetooth: Connecting the World Wirelessly
Favicon
Bluetooth Bring-Up in AOSP
Favicon
How to disable the Lock key on a non-Mac Bluetooth Keyboard
Favicon
Passkeys Bluetooth: Cross-Platform Authentication
Favicon
a2dp-sink profile Protocol not available
Favicon
Handling Bluetooth Programmatically on Windows
Favicon
Developing a Bluetooth Low energy-based application
Favicon
Interacting with Shimmer3 using Node SerialPort
Favicon
TOP 5 ALL-IN-ONE BEST PRINTERS & SCANNERS FOR 2023
Favicon
From PulseAudio to PipeWire
Favicon
Struggling to fix: Bluetooth connection failed: protocol not available?
Favicon
Bluetooth LE cihazlarla çalışma
Favicon
Demystifying machine learning via Bluetooth with Arduino
Favicon
Interacting with Polar Verity Sense using Web Bluetooth
Favicon
Hacking Nespresso Expert Machine To Brew Coffee Using Custom Applications Via Bluetooth
Favicon
A Rundown of IoT Communication Protocols — and Expert Tips for Choosing One for Your Project
Favicon
How to choose in your smart home,is Bluetooth, ZigBee, or WiFi
Favicon
Using Web Bluetooth in an Electron App in 2022

Featured ones: