• Nenhum resultado encontrado

An´alise dos pacotes

No documento Beyond Human Senses (páginas 103-111)

4.2 Software

4.2.5 An´alise dos pacotes

Na segunda camada (Figura4.15- “Layer 2”) tem como fun¸c˜ao analisar e converter os dados dos pacotes que chegaram ao buffer.

Inicialmente, ´e feita uma an´alise ao cabe¸calho (header ) do pacote, onde ´e obtida a informa¸c˜ao que indica a qual utilizador pertence e qual o tipo de sensor que o gerou (userID/sensID), ´e tamb´em verificado o campo de n´umero de sequˆencia do pacote (seqNum) de forma a verificar se ocorreu perda de pacotes.

Se o campo sensID do pacote corresponder a um sensor fisiol´ogico, o campo perten- cente aos n´ıveis de bateria (batStat) ´e analisado e convertido para Volt, caso seja de um sensor de automa¸c˜ao residencial, este campo n˜ao ´e analisado, pois estes sensores est˜ao conectados ´a rede de energia el´ectrica e por isso n˜ao possuem baterias, estando o seu valor sempre no m´aximo (0xFF).

Por fim, dependendo do tipo de sensor (sensID), os dados (Data) contidos no pacote s˜ao convertidos para as suas unidades respectivas, apresentam-se de seguida de forma pormenorizada.

Electrocardiograma (ECG)

No caso do sensor de electrocardiograma, cada amostra tem uma resolu¸c˜ao de 10

bits, deste modo, cada amostra ´e representada por 2 bytes, este tipo de sensor ´e

identificado pelo campo sensID = 1 e transporta cerca de 50 amostras por pacote (≈ 100 bytes).

A fun¸c˜ao de transferˆencia para a convers˜ao dos dados do sensor de electrocardio- grama ´e:

ECGV alue=

ECGSample×2,56

1023 (4.1)

Em que ECGV aluerepresenta o valor em Volt do sinal de ECG e a vari´avel ECGSample

representa o valor em decimal dos dois bytes de dados de cada amostra transportada no pacote. A constante 2,56 representa a tens˜ao de referencia em Volt e o valor 1023 corresponde `a m´axima resolu¸c˜ao digital.

A Figura 4.16 apresenta o formato de um pacote de electrocardiograma, onde ´e poss´ıvel observar a an´alise dos campos que constituem o cabe¸calho e a convers˜ao dos dados, realizada com a fun¸c˜ao de transferˆencia mencionada anteriormente.

Os pacotes correspondentes a este sensor devem chegar com um intervalo inferior a 300 milisegundos, a aplica¸c˜ao foi dotada da capacidade de detectar esse atraso entre a chegada de pacotes. Desta forma a aplica¸c˜ao pode representar de forma gr´afica a for¸ca de sinal atrav´es de um pequeno ´ıcone de rede. Quando o atraso ´e inferior a 300 milisegundos o sinal de rede da aplica¸c˜ao permanece no m´aximo, quatro barras a azul, indicando que os pacotes est˜ao a chegar dentro do intervalo esperado, quando ´e superior a 300 e inferior a 600 milisegundos o sinal de rede altera-se indicando duas barras de rede a cor laranja indicando que existe um pequeno atraso na recep¸c˜ao dos pacotes. Quando o intervalo ´e superior a 600 milisegundos o ´ıcone apresenta apenas uma barra a vermelho indicando um atraso elevado ou at´e mesmo a ausˆencia de comunica¸c˜ao.

4.2. SOFTWARE 73 53 4F 46 11 6C 9F C8 02 15 02 17 02 16 02 18 02 1C 02 1B 02 18 02 1A 02 1E 02 1E 02 1E 02 20 02 24 02 24 02 23 02 26 02 2C 02 2D 02 2F 02 33 02 34 02 31 02 31 02 34 02 33 02 31 02 2E 02 2E 02 26 02 1C 02 17 02 16 02 12 02 0F 02 0E 02 10 02 0A 02 07 45 4F 46 > 53 4F 46 -> Start of Packet > 45 4F 46 -> Stop of Packet > 11 -> userID=1/sensID=1 [ECG] > 6C 9F -> seqNum = 27807 > C8 -> batStat = 200 > 02 15 -> 1.3338026 Volt > 02 17 -> 1.3388075 Volt > 02 16 -> 1.336305 Volt > (...) > 02 10 -> 1.3212904 Volt > 02 0A -> 1.3062756 Volt > 02 07 -> 1.2987683 Volt

Header

Data

Figura 4.16 – Exemplo de um pacote de ECG.

Dos v´arios sensores existentes no sistema, o sensor de electrocardiograma ´e aquele que necessita de maior aten¸c˜ao, pois possui um elevado fluxo de dados e uma grande quantidade de dados por pacote. Enquanto que os restantes possuem uma menor quantidade de dados a uma taxa bastante inferior, tornando os pacotes mais simples, e que consequentemente requerem uma menor capacidade de processamento que o sensor de ECG.

Temperatura corporal

Este tipo de sensor n˜ao necessita de uma amostragem a uma taxa elevada, desta forma o n´o da rede, correspondente ao sensor de temperatura corporal apenas en- via pacotes de minuto a minuto. O pacote correspondente a este tipo de sensor ´e identificado pelo campo sensID = 2 e apenas transporta 2 bytes de dados por pacote. A Figura 4.17 apresenta a descri¸c˜ao de um pacote relativo a este tipo de sensor. ´E poss´ıvel observar a an´alise dos campos que constituem o cabe¸calho e a convers˜ao dos dados transportados para graus C´elsius (◦C), realizada com a fun¸c˜ao

T empV alue =

 T empSample×2,56

1023 −0,5 

×100 (4.2)

Onde T empV alue representa o valor da temperatura em (◦C) e a vari´avel T empSample

corresponde ao valor em decimal dos dois bytes de dados transportados no pacote gerado por este sensor.

53 4F 46 12 0C 8B D2 01 57 45 4F 46 > 53 4F 46 -> Start of Packet > 45 4F 46 -> Stop of Packet > 12 -> userID=1/sensID=2 [Temp] > 0C 8B -> seqNum = 3211 > D2 -> batStat = 210 > 01 57 -> 35.8 ᵒC

Header

Data

Figura 4.17 – Exemplo de um pacote de temperatura corporal.

Balan¸ca

No caso da leitura da balan¸ca, para determinar o peso corporal, ´e identificado pelo campo sensID = 5, e os seus pacotes apenas transportam 2 byte de dados como o anterior, ´e utilizada a seguinte fun¸c˜ao de transferˆencia para converter os dados em quilogramas (Eq. 4.3). Para chegar a esta fun¸c˜ao de transferˆencia foi necess´ario efectuar medi¸c˜oes do n´ıvel de tens˜ao e relacionar esse valor com o peso colocado na balan¸ca. Inicialmente mediu-se o valor de tens˜ao sem nenhum peso na bandeja em seguida efectuaram-se medi¸c˜oes com 1kg e 2kg. A Tabela 4.3 demonstra a rela¸c˜ao entre a varia¸c˜ao da tens˜ao com os pesos colocados na bandeja da balan¸ca.

Esta rela¸c˜ao permitiu realizar uma aproxima¸c˜ao `a sua curva caracter´ıstica:

W eightV alue=  W eightSample×2,56 1023  ×14,705  −22,106 (4.3)

4.2. SOFTWARE 75

Peso (Kg) Tens˜ao (Volt)

0 1,503

1 1,572

2 1,639

Tabela 4.3 – Rela¸c˜ao entre tens˜ao e peso da balan¸ca utilizada.

Em que W eightV alue representa o valor medido em kg e a vari´avel W eightSample

representa o valor em decimal dos dois bytes de dados de cada amostra transportada no pacote. A Figura 4.18 apresenta um pacote referente `a balan¸ca, onde ´e poss´ıvel observar a an´alise dos campos que constituem o cabe¸calho e a convers˜ao dos dados, realizada com a respectiva fun¸c˜ao de transferˆencia.

53 4F 46 15 02 A1 F2 02 8A 45 4F 46 > 53 4F 46 -> Start of Packet > 45 4F 46 -> Stop of Packet > 15 -> userID=1/sensID=5 [Load] > 02 A1 -> seqNum = 673 > F2 -> batStat = 242 > 02 8A -> 1.812 Kg

Header

Data

Figura 4.18 – Exemplo de um pacote da balan¸ca.

Press˜ao arterial

O dispositivo de press˜ao arterial ´e identificado por sensID = 6, e fornece-nos v´arias informa¸c˜oes tais como a press˜ao sist´olica, diast´olica e o valor da pulsa¸c˜ao. Ambos os dados deste sensor s˜ao enviados em simultˆaneo, no mesmo pacote, para a aplica¸c˜ao, a convers˜ao dos dados transportados ´e efectuada de forma directa, convertendo o valor hexadecimal para o seu correspondente decimal.

poss´ıvel verificar a an´alise dos campos que constituem o cabe¸calho e os resultados da convers˜ao directa dos 3 bytes de dados transportados, o 1o

byte ´e referente `a fase

sist´olica (SYS), o seguinte `a diast´olica (DIA) e o ultimo ao numero de pulsa¸c˜oes por minuto (Pulse/Min). 53 4F 46 16 00 0A AF 6F 54 55 45 4F 46 > 53 4F 46 -> Start of Packet > 45 4F 46 -> Stop of Packet > 16 -> userID=1/sensID=6 [B.Pre] > 00 0A -> seqNum = 10 > AF -> batStat = 175 > 6F -> 111 mmHG (SYS) > 54 -> 84 mmHG (DIA) > 55 -> 85 Pulse/Min.

Header

Data

Figura 4.19 – Exemplo de um pacote de press˜ao arterial.

Fluxo de ´agua e abertura de portas

Para al´em dos dados provenientes dos sinais fisiol´ogicos, o sistema, possui um con- junto de sensores de automa¸c˜ao residencial. Normalmente este tipo de sensores, n˜ao necessitam de mobilidade, e por isso n˜ao requerem alimenta¸c˜ao pr´opria, podendo estar conectados directamente ´a rede el´ectrica do edif´ıcio, deste modo o campo referente ao n´ıvel de bateria (batStat) encontra-se sempre no seu m´aximo (0xFF).

No caso do fluxo de ´agua e de abertura de portas, estes funcionam como sensores do tipo ON/OFF, o primeiro, indica se existe ou n˜ao fluxo de ´agua, o segundo ´e capaz de informar o sistema se uma porta se encontra aberta ou fechada. Por este motivo, a esta¸c˜ao base s´o envia para a aplica¸c˜ao pacotes desses sensores, apenas quando ocorre uma transi¸c˜ao do estado em que se encontrava anteriormente.

Os pacotes correspondentes a este tipo de sensores, apenas transportam 1 byte de dados representados na Tabela 4.4, indicando se o sensor se encontra em estado ON ou no estado OFF.

4.2. SOFTWARE 77

Stat hex

ON(Aberto) 0xFF OFF(Fechado) 0x00

Tabela 4.4 – Dados transportados nos pacotes de sensores ON/OFF.

Na Figura 4.20 pode observar-se um pacote relativo ao sensor de fluxo de ´agua identificado por sensID = 8, que nos indica a ausˆencia de fluxo de ´agua no edif´ıcio. Caso ocorra a abertura de uma torneira, imediatamente seria recebido um pacote semelhante, onde no seu campo de dados (Data) estaria presente um byte com o valor 0xFF indicando que o fluxo estaria no estado ON.

53 4F 46 18 01 12 FF 00 45 4F 46 > 53 4F 46 -> Start of Packet > 45 4F 46 -> Stop of Packet > 18 -> userID=1/sensID=8 [Water F.] > 01 12 -> seqNum = 274 > FF -> batStat = 255 (Max.) > 00 -> 0 = No Water Flow

Header

Data

Figura 4.20 – Exemplo de um pacote de fluxo de ´agua.

No caso do sensor que detecta se a porta se encontra aberta ou fechada, o seu pacote ´e idˆentico ao anterior, ´e identificado por sensID = 12, possuindo um ´unico byte de dados, este encontra-se a 0xFF quando a porta se encontra aberta e a 0x00 quando se encontra fechada. No caso do pacote representado na Figura 4.21 indica-nos que a porta nesse momento est´a aberta.

Temperatura e humidade ambiente

Um outro sensor de automa¸c˜ao residencial utilizado no sistema foi um sensor que tem a capacidade de efectuar medi¸c˜oes em simultˆaneo da temperatura e humidade

53 4F 46 1C 00 01 FF FF 45 4F 46 > 53 4F 46 -> Start of Packet > 45 4F 46 -> Stop of Packet > 1C -> userID=1/sensID=12 [Door] > 00 01 -> seqNum = 1 > FF -> batStat = 255 (Max.) > FF -> 1 = Door Opened

Header

Data

Figura 4.21 – Exemplo de um pacote de abertura de porta.

atmosf´erica (Sensirion SHT11 ). Os dados da temperatura e humidade s˜ao enviados pelo mesmo n´o, sendo ent˜ao transportados no mesmo pacote, para converter os dados para as suas unidades, s˜ao utilizadas as seguintes fun¸c˜oes de convers˜ao: a primeira ´e relativa `a temperatura (Eq. 4.4) e a segunda `a humidade (Eq. 4.5).

T empV alue = 0,04 · T empSample−39,6 (4.4)

A fun¸c˜ao relativa `a temperatura ´e-nos dada pela folha-de-dados (datasheet) do sen- sor, a vari´avel T empV alue representa o valor da temperatura em graus C´elsius (◦C)

e a vari´avel T empSample corresponde ao valor em decimal dos dois bytes de dados

transportados no pacote.

HumV alue = 0,0367 × HumSample−1,5955 · 10−6×Hum 2

Sample−2,0468 (4.5)

A fun¸c˜ao de transferˆencia do sensor de humidade relativa ´e tamb´em descrita na folha-de-dados do sensor, a vari´avel HumV alue representa o valor da humidade em

percentagem e a vari´avel HumSamplecorresponde ao valor decimal dos bytes de dados

correspondentes transportados no pacote.

Este tipo de sensor ´e identificado por sensID = 11, no campo de dados do seu pacote existem 4 bytes, os dois primeiros bytes, s˜ao referentes ao valor da temperatura sendo necess´ario aplicar a Equa¸c˜ao 4.4 para converter esses dados para graus C´elsius, os

4.2. SOFTWARE 79

2 bytes seguintes dizem respeito `a humidade relativa sendo necess´ario utilizar a Equa¸c˜ao 4.5 para obter a percentagem de humidade ambiente.

Na Figura 4.22´e apresentado um exemplo de um pacote correspondente a este tipo de sensor. 53 4F 46 1B 00 23 FF 06 EF 01 61 45 4F 46 > 53 4F 46 -> Start of Packet > 45 4F 46 -> Stop of Packet > 1B -> userID=1/sensID=11 [Temp/Humi] > 00 23 -> seqNum = 35 > FF -> batStat = 255 (Max.) > 06 EF -> 31.4 °C (Temp.) > 01 61 -> 10.7 % (Humi.)

Header

Data

Figura 4.22 – Exemplo de um pacote de temperatura e humidade.

Ap´os esta camada (Figura4.15- “Layer 2”) analisar os pacotes recebidos e converter os seus dados para as correspondentes unidades, estes s˜ao passados para a terceira camada (Figura 4.15 - “Layer 3”) que tem como fun¸c˜ao avaliar e representar grafi- camente os dados convertidos, possui ainda a capacidade de os armazenar na base de dados e disparar alarmes caso as informa¸c˜oes fisiol´ogicas ou comportamentais se encontrem fora dos limites estabelecidos.

No documento Beyond Human Senses (páginas 103-111)

Documentos relacionados