Cuprins:
- Pasul 1: Scanați dispozitivul BLE
- Pasul 2: Conectarea dispozitivului
- Pasul 3: Preluarea caracteristicilor dispozitivului
- Pasul 4: Citirea numelui dispozitivului
- Pasul 5: Citirea BPM
- Pasul 6: Citirea locației senzorului corporal
Video: Citirea valorilor de pe un dispozitiv BLE folosind CSR1010 și Dragonboard 410c: 6 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:45
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
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
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
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:
Dispozitiv ASS (dispozitiv social anti-social): 7 pași
Dispozitiv ASS (dispozitiv social anti-social): spuneți că sunteți o persoană care îi place să fie în preajma oamenilor, dar nu-i place să se apropie prea mult. De asemenea, ești plăcut oamenilor și îți este greu să spui nu oamenilor. Deci, nu știi cum să le spui să se retragă. Ei bine, introduceți - dispozitivul ASS! Da
Citirea datelor senzorului cu ultrasunete (HC-SR04) pe un ecran LCD 128 × 128 și vizualizarea acestuia folosind Matplotlib: 8 pași
Citirea datelor senzorului cu ultrasunete (HC-SR04) pe un ecran LCD de 128 × 128 și vizualizarea acestuia folosind Matplotlib: În acest instructable, vom folosi MSP432 LaunchPad + BoosterPack pentru a afișa datele unui senzor ultrasonic (HC-SR04) pe un 128 × 128 LCD și trimiteți datele către PC în serie și vizualizați-le folosind Matplotlib
Citirea temperaturii folosind senzorul de temperatură LM35 cu Arduino Uno: 4 pași
Citirea temperaturii folosind senzorul de temperatură LM35 cu Arduino Uno: Bună băieți, în acest instructables vom învăța cum să utilizați LM35 cu Arduino. Lm35 este un senzor de temperatură care poate citi valori de temperatură de la -55 ° C la 150 ° C. Este un dispozitiv cu 3 terminale care furnizează tensiune analogică proporțională cu temperatura. Bună g
Citirea și scrierea datelor pe EEPROM externă folosind Arduino: 5 pași
Citirea și scrierea de date către EEPROM externă Utilizând Arduino: EEPROM înseamnă Memorie numai în citire programabilă ștergibil electric. EEPROM este foarte importantă și utilă, deoarece este o formă de memorie nevolatilă. Aceasta înseamnă că, chiar și când placa este oprită, cipul EEPROM păstrează în continuare programul care
Detectarea obiectelor cu Dragonboard 410c sau 820c folosind OpenCV și Tensorflow .: 4 pași
Detectarea obiectelor W / Dragonboard 410c sau 820c folosind OpenCV și Tensorflow .: Acest instructable descrie cum să instalați OpenCV, Tensorflow și cadrele de învățare automată pentru Python 3.5 pentru a rula aplicația de detectare a obiectelor