Spisu treści:

Odczytywanie wartości z urządzenia BLE za pomocą CSR1010 i Dragonboard 410c: 6 kroków
Odczytywanie wartości z urządzenia BLE za pomocą CSR1010 i Dragonboard 410c: 6 kroków

Wideo: Odczytywanie wartości z urządzenia BLE za pomocą CSR1010 i Dragonboard 410c: 6 kroków

Wideo: Odczytywanie wartości z urządzenia BLE za pomocą CSR1010 i Dragonboard 410c: 6 kroków
Wideo: Prosty sposób na samodzielną diagnostykę auta! #101_Gadżetów 2024, Listopad
Anonim
Odczytywanie wartości z urządzenia BLE za pomocą CSR1010 i Dragonboard 410c
Odczytywanie wartości z urządzenia BLE za pomocą CSR1010 i Dragonboard 410c

Ten samouczek pokazuje, jak odczytać wartości z urządzenia BLE CSR1010 przy użyciu Dragonboard 410c z Linaro

W tym przykładzie CSR1010 emuluje czujnik tętna.

Krok 1: Skanuj urządzenie BLE

W tym kroku sprawdź, czy Twój klient BT jest gotowy do skanowania urządzeń BLE.

root@linaro-alip:/home/linaro# sudo hcitool lescan

LE Scan …18:EE:69:00:CE:00 (nieznane) 18:EE:69:00:CE:00 (nieznane) EE:52:5B:04:00:02 Czujnik HR CSR

Krok 2: Podłączanie urządzenia

Do podłączenia naszego urządzenia użyjemy gatttool

-b: Adres MAC urządzenia

-t: typ adresu LE. Może być publiczny lub losowy, należy sprawdzić specyfikację urządzenia. W tym przypadku jest publiczne.

-I: tryb interaktywny Gatttool. Otworzy się monit o wysłanie cmds do urządzenia

root@linaro-alip:/home/linaro# sudo gatttool -b EE:52:5B:04:00:02 -t public -I

Po otwarciu monitu możemy wysłać polecenie connect do urządzenia.

[EE:52:5B:04:00:02][LE]> połączPróba połączenia z EE:52:5B:04:00:02

Połączenie powiodło się

[EE:52:5B:04:00:02][LE]>

Krok 3: Pobieranie charakterystyk urządzenia

Pobieranie charakterystyk urządzenia
Pobieranie charakterystyk urządzenia

Po podłączeniu urządzenia możemy odczytać wszystkie dostępne usługi, wysyłając cmd „primary”

Na podstawie UUID usługi możemy odkryć typ usługi w specyfikacji GATT

www.bluetooth.com/specyfikacje/gatt/services

Krok 4: Odczytywanie nazwy urządzenia

Odczytywanie nazwy urządzenia
Odczytywanie nazwy urządzenia

Przyjrzyjmy się cechom opisanym w Ogólnym profilu dostępu (uuid=1800). Najpierw musimy uzyskać wartości uchwytów usługi, opisane na pierwszym obrazku, w tym przypadku zaczyna się od 5 do 11. Teraz możemy pobrać wszystkie uchwyty w tym przedziale za pomocą polecenia cmd char-desc

[EE:52:5B:04:00:02][LE]> znak-desc 05 11handle: 0x0005, uuid: 00002800-0000-1000-8000-00805f9b34fb uchwyt: 0x0006, uuid: 00002803-0000-1000-8000- 00805f9b34fb uchwyt: 0x0007, uuid: 00002a00-0000-1000-8000-00805f9b34fb uchwyt: 0x0008, uuid: 00002803-0000-1000-8000-00805f9b34fb uchwyt: 0x0009, uuid: 00002a01-0000-1000-8000-00805, uchwytf9b34fb uuid: 00002803-0000-1000-8000-00805f9b34fb uchwyt: 0x000b, uuid: 00002a04-0000-1000-8000-00805f9b34fb uchwyt: 0x000c, uuid: 00002800-0000-1000-8000-00805f9b34fb uchwyt: 0x000d, uuid: 00002803-0000 -1000-8000-00805f9b34fb uchwyt: 0x000e, uuid: 00002a37-0000-1000-8000-00805f9b34fb uchwyt: 0x000f, uuid: 00002902-0000-1000-8000-00805f9b34fb uchwyt: 0x0010, uuid: 00002803-0000-1000-8000- 00805f9b34fb uchwyt: 0x0011, uuid: 00002a38-0000-1000-8000-00805f9b34fb

Zgodnie ze specyfikacją Generic Access Profile, UUID 2A00 odnosi się do nazwy urządzenia.

Biorąc pod uwagę, że 2a00 to uchwyt 0x0007 w naszym urządzeniu, odczytajmy wartość

[EE:52:5B:04:00:02][LE]> znak-odczyt-hnd 7Wartość/deskryptor cechy: 43 53 52 20 48 52 20 53 65 6e 73 6f 72

Konwertując szesnastkę na ASCII, nazwa urządzenia to: „CSR HR Sensor”

Krok 5: Odczytywanie BPM

[EE:52:5B:04:00:02][LE]> uchwyt atrybutu pierwotnego: 0x0001, uchwyt końcowy grp: 0x0004 uuid: 00001801-0000-1000-8000-00805f9b34fb uchwyt atrybutu: 0x0005, uchwyt końcowy grp: 0x000b uuid: 00001800-0000-1000-8000-00805f9b34fb attr handle: 0x000c, end grp handle: 0x0013 uuid: 0000180d-0000-1000-8000-00805f9b34fb attr handle: 0x0014 end grp handle: 0x0017 uuid: 0000180f-0000-1000-8000- 00805f9b34fb attr handle: 0x0018, end grp handle: 0x0021 uuid: 00001016-d102-11e1-9b23-00025b00a5a5 attr handle: 0x0022, end grp handle: 0xffff uuid: 0000180a-0000-1000-8000-00805f9b34fb

UUID usługi Tętno to 0x180d, więc interwał obsługi wynosi od 0x000c do 0x0013

[EE:52:5B:04:00:02][LE]> znak-opis 0x00c 0x0013

uchwyt: 0x000c, uuid: 00002800-0000-1000-8000-00805f9b34fb uchwyt: 0x000d, uuid: 00002803-0000-1000-8000-00805f9b34fb uchwyt: 0x000e, uuid: 00002a37-0000-1000-8000-00805f9b34fb uchwyt: 0x000f, uu: 00002902-0000-1000-8000-00805f9b34fb uchwyt: 0x0010, uuid: 00002803-0000-1000-8000-00805f9b34fb uchwyt: 0x0011, uuid: 00002a38-0000-1000-8000-00805f9b34fb uchwyt: 0x0012, uuid: 00002803-0000- 1000-8000-00805f9b34fb uchwyt: 0x0013, uuid: 00002a39-0000-1000-8000-00805f9b34fb

Odczytywanie wszystkich deklaracji charakterystycznych (UUID 0x2803).

[EE:52:5B:04:00:02][LE]> odczyt-hnd znaków 0x000d

Wartość/deskryptor cechy: 10 0e 00 37 2a [EE:52:5B:04:00:02][LE]> char-read-hnd 0x0010 Wartość/deskryptor cechy: 02 11 00 38 2a [EE:52:5B: 04:00:02][LE]> znak-odczyt-hnd 0x0012 Wartość charakterystyczna/deskryptor: 08 13 00 39 2a

Zauważ, że:

- uchwyt 0x000d to CCCD dla usługi 2a37 (Pomiar tętna) z bitem 10 (obsługa NOTIFY)

- uchwyt 0x0010 to CCCD dla usługi 2a38 (Body Sensor Location) z bitem 02 (obsługa READ)

- uchwyt 0x0012 to CCCD dla usługi 2a39 (Heart Rate Control Point) z bitem 08 (wsparcie WRITE)

Teraz wiemy, że pomiar tętna działa tylko z powiadomieniem. Oznacza to, że najpierw musimy zarejestrować zmiany wartości w jego CCCD (UUID 0x2902), co w tym przypadku jest handlem 0xf

[EE:52:5B:04:00:02][LE]> żądane-zapisu-znaków 0x00f 0100

Uchwyt powiadomienia = wartość 0x000e: 16 65 f3 01 Wartość charakterystyczna została zapisana pomyślnie Uchwyt powiadomienia = wartość 0x000e: 16 6d fa 01 Uchwyt powiadomienia = wartość 0x000e: 16 6d fa 01 Uchwyt powiadomienia = wartość 0x000e: 16 6c f9 01 Uchwyt powiadomienia = wartość 0x000e: 16 6a f7 01 Uchwyt powiadomienia = 0x000e wartość: 16 69 f6 01

Zgodnie ze specyfikacją profilu, druga liczba szesnastkowa to informacja BPM.

BPM:

6d = 109

6d = 109

6c = 108

6a = 106

69 = 105

Krok 6: Odczytanie lokalizacji czujnika ciała

Odczytywanie lokalizacji czujnika ciała
Odczytywanie lokalizacji czujnika ciała

Lokalizacja czujnika ciała to UUID 0x2A38. Zgodnie z jej deskryptorem ta cecha wspiera podstawowe czytanie, dzięki czemu możemy bezpośrednio odczytać jej wartość.

[EE:52:5B:04:00:02][LE]> znak-odczyt-hnd 0x11Wartość/deskryptor cechy: 03

Zgodnie ze specyfikacją SIG, 03 oznacza „palec”

Zalecana: