Sommario:
- Passaggio 1: scansiona il dispositivo BLE
- Passaggio 2: collegamento del dispositivo
- Passaggio 3: recupero delle caratteristiche del dispositivo
- Passaggio 4: lettura del nome del dispositivo
- Passaggio 5: lettura del BPM
- Passaggio 6: lettura della posizione del sensore corporeo
Video: Lettura dei valori da un dispositivo BLE utilizzando CSR1010 e Dragonboard 410c: 6 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:04
Questo tutorial mostra come leggere i valori dal dispositivo BLE CSR1010 utilizzando Dragonboard 410c con Linaro
In questo esempio, CSR1010 emula un sensore di frequenza cardiaca.
Passaggio 1: scansiona il dispositivo BLE
In questo passaggio, controlla se il tuo client BT è pronto per la scansione dei dispositivi BLE.
root@linaro-alip:/home/linaro# sudo hcitool lescan
LE Scan …18:EE:69:00:CE:00 (sconosciuto) 18:EE:69:00:CE:00 (sconosciuto) EE:52:5B:04:00:02 Sensore FC CSR
Passaggio 2: collegamento del dispositivo
Useremo gatttool per connettere il nostro dispositivo
-b: indirizzo MAC del dispositivo
-t: tipo di indirizzo LE. Può essere pubblico o casuale, è necessario controllare le specifiche del dispositivo. In questo caso è pubblico.
-I: modalità interattiva di gatttool. Si aprirà un prompt per inviare cmd al dispositivo
root@linaro-alip:/home/linaro# sudo gatttool -b EE:52:5B:04:00:02 -t public -I
Una volta che il prompt è aperto, possiamo inviare connect cmd al dispositivo.
[EE:52:5B:04:00:02][LE]> connectTentativo di connessione a EE:52:5B:04:00:02
Connessione riuscita
[EE:52:5B:04:00:02][LE]>
Passaggio 3: recupero delle caratteristiche del dispositivo
Una volta connesso il dispositivo, possiamo leggere tutti i servizi disponibili inviando il cmd "primario"
In base all'UUID del servizio, possiamo scoprire il tipo di servizio nella specifica GATT
www.bluetooth.com/specifications/gatt/services
Passaggio 4: lettura del nome del dispositivo
Esploriamo le caratteristiche lette su Generic Access Profile (uuid=1800). Per prima cosa dobbiamo ottenere i valori degli handle di servizio, descritti nella prima immagine, in questo caso, partendo da 5 fino a 11. Ora possiamo recuperare tutti gli handle in questo intervallo usando il cmd char-desc
[EE:52:5B:04:00:02][LE]> char-desc 05 11handle: 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-00805b handle: 0xb34f 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: 00002a37-0000-1000-8000-00805f9b34fb handle: 0x000f, uuid: 00002902-0000-1000-8000-00805f9b34fb handle: 0x0010, uuid: 00002803-0000-1000-8000- 00805f9b34fb handle: 0x0011, uuid: 00002a38-0000-1000-8000-00805f9b34fb
Secondo la specifica del profilo di accesso generico, l'UUID 2A00 si riferisce al nome del dispositivo.
Considerando che il 2a00 è l'handle 0x0007 nel nostro dispositivo, leggiamo il valore
[EE:52:5B:04:00:02][LE]> char-read-hnd 7Valore caratteristico/descrittore: 43 53 52 20 48 52 20 53 65 6e 73 6f 72
Convertendo esadecimale in ASCII, il nome del dispositivo è: ''CSR HR Sensor"
Passaggio 5: lettura del BPM
[EE:52:5B:04:00:02][LE]> handle primaryattr: 0x0001, handle di fine grp: 0x0004 uuid: 00001801-0000-1000-8000-00805f9b34fb handle di attr: 0x0005, handle di fine grp: 0x000b uuid: 00001800-0000-1000-8000-00805f9b34fb handle attr: 0x000c, end grp handle: 0x0013 uuid: 0000180d-0000-1000-8000-00805f9b34fb attr handle: 0x0014, end grp handle: 0x0017 uuid: 0000180f-0000-1000-8000- 00805f9b34fb handle attr: 0x0018, end grp handle: 0x0021 uuid: 00001016-d102-11e1-9b23-00025b00a5a5 attr handle: 0x0022, end grp handle: 0xffff uuid: 0000180a-0000-1000-8000-00805f9b34fb
L'UUID del servizio Frequenza cardiaca è 0x180d, quindi l'intervallo di gestione va da 0x000c a 0x0013
[EE:52:5B:04:00:02][LE]> char-desc 0x00c 0x0013
handle: 0x000c, uuid: 00002800-0000-1000-8000-00805f9b34fb handle: 0x000d, uuid: 00002803-0000-1000-8000-00805f9b34fb handle: 0x000e, uuid: 00002a37-0000-1000-8000-00805f9b34fb handle: 0x000f, u: 00002902-0000-1000-8000-00805f9b34fb handle: 0x0010, uuid: 00002803-0000-1000-8000-00805f9b34fb handle: 0x0011, uuid: 00002a38-0000-1000-8000-00805f9b34fb handle: 0x0012, uuid: 00002803-0000- 1000-8000-00805f9b34fb handle: 0x0013, uuid: 00002a39-0000-1000-8000-00805f9b34fb
Lettura di tutte le Dichiarazioni delle Caratteristiche (UUID 0x2803).
[EE:52:5B:04:00:02][LE]> char-read-hnd 0x000d
Valore/descrittore caratteristica: 10 0e 00 37 2a [EE:52:5B:04:00:02][LE]> char-read-hnd 0x0010 Valore/descrittore caratteristica: 02 11 00 38 2a [EE:52:5B: 04:00:02][LE]> char-read-hnd 0x0012 Valore/descrittore caratteristica: 08 13 00 39 2a
Notare che:
- handle 0x000d è il CCCD per il servizio 2a37 (misurazione frequenza cardiaca) con bit 10 (supporta NOTIFY)
- handle 0x0010 è il CCCD per il servizio 2a38 (Body Sensor Location) con bit 02 (supporto READ)
- handle 0x0012 è il CCCD per il servizio 2a39 (Heart Rate Control Point) con bit 08 (supporta WRITE)
Ora sappiamo che la misurazione della frequenza cardiaca funziona solo con la notifica. Significa che prima dobbiamo registrarci per i cambiamenti di valore nel suo CCCD (UUID 0x2902), che in questo caso è handle 0xf
[EE:52:5B:04:00:02][LE]> char-write-req 0x00f 0100
Handle di notifica = valore 0x000e: 16 65 f3 01 Il valore della caratteristica è stato scritto con successo Handle di notifica = valore 0x000e: 16 6d fa 01 Handle di notifica = valore 0x000e: 16 6d fa 01 Handle di notifica = valore 0x000e: 16 6c f9 01 Handle di notifica = valore 0x000e: 16 6a f7 01 Handle di notifica = valore 0x000e: 16 69 f6 01
Secondo la specifica del profilo, il secondo numero esadecimale è l'informazione BPM.
BPM:
6d = 109
6d = 109
6c = 108
6a = 106
69 = 105
Passaggio 6: lettura della posizione del sensore corporeo
La posizione del sensore corporeo è l'UUID 0x2A38. Secondo il suo descrittore, questa caratteristica supporta la lettura di base, quindi possiamo leggerne direttamente il valore.
[EE:52:5B:04:00:02][LE]> char-read-hnd 0x11Valore/descrittore caratteristico: 03
Secondo la specifica SIG, 03 significa "dito"
Consigliato:
Come leggere più valori analogici utilizzando un pin analogico: 6 passaggi (con immagini)
Come leggere più valori analogici utilizzando un pin analogico: in questo tutorial, ti mostrerò come leggere più valori analogici utilizzando un solo pin di ingresso analogico
Lettura dei dati del sensore a ultrasuoni (HC-SR04) su un LCD 128×128 e visualizzazione utilizzando Matplotlib: 8 passaggi
Lettura dei dati del sensore a ultrasuoni (HC-SR04) su un LCD 128 × 128 e visualizzazione utilizzando Matplotlib: In questo istruibile, utilizzeremo MSP432 LaunchPad + BoosterPack per visualizzare i dati di un sensore a ultrasuoni (HC-SR04) su un 128 × 128 LCD e inviare i dati al PC in serie e visualizzarli utilizzando Matplotlib
Lettura della temperatura utilizzando il sensore di temperatura LM35 con Arduino Uno: 4 passaggi
Lettura della temperatura utilizzando il sensore di temperatura LM35 con Arduino Uno: Ciao ragazzi in questo tutorial impareremo come usare LM35 con Arduino. Lm35 è un sensore di temperatura in grado di leggere valori di temperatura da -55°C a 150°C. È un dispositivo a 3 terminali che fornisce una tensione analogica proporzionale alla temperatura. Ciao G
Lettura e scrittura di dati su EEPROM esterna utilizzando Arduino: 5 passaggi
Lettura e scrittura di dati su EEPROM esterna utilizzando Arduino: EEPROM è l'acronimo di Electrically Erasable Programmable Read-Only Memory.EEPROM è molto importante e utile perché è una forma di memoria non volatile. Ciò significa che anche quando la scheda è spenta, il chip EEPROM conserva ancora il programma che
Chiave di lettura! il dispositivo che non ti fa perdere le chiavi!: 3 passaggi (con immagini)
Chiave di lettura! il dispositivo che non ti fa perdere le chiavi!: questo dispositivo ti aiuta a non perdere le chiavi! Se sei come me, quando torni a casa dal lavoro perdi immediatamente le chiavi dopo aver sbloccato la porta e aspetti fino al giorno successivo prima di dover uscire per cercarle. Sì, potresti avere