Cuprins:

Citirea valorilor de pe un dispozitiv BLE folosind CSR1010 și Dragonboard 410c: 6 pași
Citirea valorilor de pe un dispozitiv BLE folosind CSR1010 și Dragonboard 410c: 6 pași

Video: Citirea valorilor de pe un dispozitiv BLE folosind CSR1010 și Dragonboard 410c: 6 pași

Video: Citirea valorilor de pe un dispozitiv BLE folosind CSR1010 și Dragonboard 410c: 6 pași
Video: ESP32. Convertorul Analog-Digital în acțiune (ADC). Serial Plotter. Citire valori de la senzori 2024, Noiembrie
Anonim
Citirea valorilor de pe un dispozitiv BLE folosind CSR1010 și Dragonboard 410c
Citirea valorilor de pe un dispozitiv BLE folosind CSR1010 și Dragonboard 410c

Acest tutorial arată cum să citiți valorile de pe dispozitivul BLE CSR1010 folosind Dragonboard 410c cu Linaro

În acest exemplu, CSR1010 emulează un senzor de ritm cardiac.

Pasul 1: Scanați dispozitivul BLE

În acest pas, verificați dacă clientul dvs. BT este pregătit pentru scanarea dispozitivelor BLE.

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

Scanare LE … 18: EE: 69: 00: CE: 00 (necunoscut) 18: EE: 69: 00: CE: 00 (necunoscut) EE: 52: 5B: 04: 00: 02 CSR HR Sensor

Pasul 2: Conectarea dispozitivului

Vom folosi gatttool pentru a ne conecta dispozitivul

-b: adresa MAC a dispozitivului

-t: tip de adresă LE. Poate fi public sau aleatoriu, trebuie să verificați specificațiile dispozitivului. În acest caz este public.

-I: modul interactiv gatttool. Se va deschide o solicitare pentru a trimite cmds pe dispozitiv

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

Odată ce solicitarea este deschisă, putem trimite conectare cmd la dispozitiv.

[EE: 52: 5B: 04: 00: 02] [LE]> conectare Încercarea de conectare la EE: 52: 5B: 04: 00: 02

Conexiunea a reușit

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

Pasul 3: Preluarea caracteristicilor dispozitivului

Preluarea caracteristicilor dispozitivului
Preluarea caracteristicilor dispozitivului

Odată ce dispozitivul este conectat, putem citi toate serviciile disponibile trimițând cmd „primar”

Pe baza serviciului UUID, putem descoperi tipul de serviciu în specificațiile GATT

www.bluetooth.com/specifications/gatt/services

Pasul 4: Citirea numelui dispozitivului

Citirea numelui dispozitivului
Citirea numelui dispozitivului

Să explorăm caracteristicile citite în profilul de acces generic (uuid = 1800). Mai întâi trebuie să obținem valorile de identificare a serviciului, descrise în prima imagine, în acest caz, începe de la 5 până la 11. Acum putem prelua toate mânerele din acest interval folosind cmd char-desc

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

Conform specificațiilor Generic Access Profile, UUID 2A00 se referă la numele dispozitivului.

Având în vedere că 2a00 este mânerul 0x0007 din dispozitivul nostru, să citim valoarea

[EE: 52: 5B: 04: 00: 02] [LE]> char-read-hnd 7 Valoare / descriptor caracteristic: 43 53 52 20 48 52 20 53 65 6e 73 6f 72

Conversia hexagonală în ASCII, numele dispozitivului este: '' CSR HR Sensor"

Pasul 5: Citirea BPM

[EE: 52: 5B: 04: 00: 02] [LE]> mâner primar: 0x0001, mâner final grp: 0x0004 uuid: 00001801-0000-1000-8000-00805f9b34fb mâner attr: 0x0005, mâner final grp: 0x000b uuid: 00001800-0000-1000-8000-00805f9b34fb mâner attr: 0x000c, mâner grp final: 0x0013 uuid: 0000180d-0000-1000-8000-00805f9b34fb mâner attr: 0x0014, mâner final grp: 0x0017 uuid: 0000180f-0000-1000-8000- 00805f9b34fb mâner de attr: 0x0018, mâner de capăt grp: 0x0021 uuid: 00001016-d102-11e1-9b23-00025b00a5a5 mâner de attr: 0x0022, mâner de capăt grp: 0xffff uuid: 0000180a-0000-1000-8000-00805f9b34fb

UUID-ul serviciului de ritm cardiac este 0x180d, deci intervalul de manipulare este de la 0x000c până la 0x0013

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

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

Citirea tuturor declarațiilor caracteristice (UUID 0x2803).

[EE: 52: 5B: 04: 00: 02] [LE]> char-read-hnd 0x000d

Valoare caracteristică / descriptor: 10 0e 00 37 2a [EE: 52: 5B: 04: 00: 02] [LE]> char-read-hnd 0x0010 Valoare caracteristică / descriptor: 02 11 00 38 2a [EE: 52: 5B: 04:00:02] [LE]> char-read-hnd 0x0012 Valoare caracteristică / descriptor: 08 13 00 39 2a

Observa asta:

- mânerul 0x000d este CCCD pentru serviciul 2a37 (Măsurarea ritmului cardiac) cu bitul 10 (suport NOTIFICARE)

- mânerul 0x0010 este CCCD pentru serviciul 2a38 (Locația senzorului de corp) cu bitul 02 (suport CITIȚI)

- mânerul 0x0012 este CCCD pentru serviciul 2a39 (Punct de control al ritmului cardiac) cu bitul 08 (suport WRITE)

Acum știm că măsurarea ritmului cardiac funcționează numai cu notificare. Înseamnă că mai întâi trebuie să ne înregistrăm pentru modificări de valoare în CCCD (UUID 0x2902), care în acest caz este handle 0xf

[EE: 52: 5B: 04: 00: 02] [LE]> char-write-req 0x00f 0100

Mâner de notificare = valoarea 0x000e: 16 65 f3 01 Valoarea caracteristică a fost scrisă cu succes Mâner de notificare = 0x000e valoare: 16 6d fa 01 Mâner de notificare = 0x000e valoare: 16 6d fa 01 Mâner de notificare = 0x000e valoare: 16 6c f9 01 Mâner de notificare = 0x000e valoare: 16 6a f7 01 Mâner de notificare = 0x000e valoare: 16 69 f6 01

Conform specificațiilor profilului, al doilea număr hex este informația BPM.

BPM:

6d = 109

6d = 109

6c = 108

6a = 106

69 = 105

Pasul 6: Citirea locației senzorului corporal

Citirea locației senzorului corporal
Citirea locației senzorului corporal

Localizarea senzorului corporal este UUID 0x2A38. Conform descriptorului său, această caracteristică acceptă citirea de bază, astfel încât să îi putem citi direct valoarea.

[EE: 52: 5B: 04: 00: 02] [LE]> char-read-hnd 0x11 Valoare caracteristică / descriptor: 03

Conform specificațiilor SIG, 03 înseamnă „Deget”

Recomandat: