scieee Science in your language
[sp] (orig)

Seguimiento de constantes vitales

Abstract

Departamento de Tecnología Electrónica

Read accessible full text

Seguimiento de constantes vitales

Author: Díez Arias, Alberto
Publisher: Universidad de Valladolid
Year: 2020
Source: https://uvadoc.uva.es/bitstream/10324/45102/1/TFG-I-1706.pdf
UNIVERSIDAD DE VALLADOLID
ESCUELA DE INGENIERIAS INDUSTRIALES
G ado en Ingenie ía Elec ónica Indus ial y Au omá ica
Seguimien o de Cons an es Vi ales
Au o :
Díez A ias, Albe o
Tu o :
Díez Muñoz, Ped o Luis
Dp o. de Tecnología Elec ónica
Valladolid, Julio 2020.
[SEGUIMIENTO DE CONSTANTES VITALES]
Índice
Albe o Díez A ias
3
Indice
Tabla de con enido
Índice....................................................................................................................... 3
Tabla de con enido ............................................................................................. 3
Tabla de imágenes ............................................................................................. 5
Tabla de ablas ................................................................................................. 10
Resumen/Abs ac ............................................................................................... 11
1. In oducción .................................................................................................. 12
1.1. Signos i ales........................................................................................ 12
1.2. Mic ocon olado .................................................................................. 13
1.3. Comunicación ....................................................................................... 14
1.4. Regulación y no ma i a ....................................................................... 15
2. Concep os Teó icos ...................................................................................... 18
3. Diseño elec ónico ........................................................................................ 27
3.1. A duino DUE .......................................................................................... 27
3.2. Senso ................................................................................................... 28
3.3. Fil os .................................................................................................... 35
3.4. Módulo blue oo h ................................................................................. 45
3.5. Fuen e de alimen ación ....................................................................... 47
3.6. Conexión USB ....................................................................................... 48
3.7. Conexión JTAG ...................................................................................... 50
3.8. Reloj y oscilado es ............................................................................... 50
3.9. Alimen ación del mic ocon olado ..................................................... 52
3.10. O as conexiones .................................................................................. 54
3.11. Diseño de la placa de ci cui o imp eso .............................................. 56
4. P og ama del mic ocon olado ................................................................... 58
4.1. Código del p og ama ............................................................................ 58
Índice
[SEGUIMIENTO DE CONSTANTES VITALES]
Albe o Díez A ias
4
4.2. Calib ación y oma de da os ................................................................ 69
4.3. Mejo as del p og ama .......................................................................... 79
5. P og ama de And oid .................................................................................... 83
5.1. Clases Pacien e y Cons an eVi al ........................................................ 88
5.2. Clase Ob encionDa os ......................................................................... 92
5.3. Ac i idadInicio ...................................................................................... 94
5.4. Ac i idadCons an es ............................................................................ 98
5.5. O os iche os .................................................................................... 119
6. Conclusiones .............................................................................................. 122
6.1. E o es conocidos ............................................................................. 124
Anexos ................................................................................................................ 127
1. Código del mic ocon olado ................................................................. 127
1.1. ModoCon inuo ................................................................................. 127
1.2. ModoPulsos1LED ............................................................................ 129
1.3. ModoPulsos2LED ............................................................................ 131
1.4. P og ama p incipal.......................................................................... 134
2. Código de And oid .................................................................................. 143
2.1. Pacien e ........................................................................................... 143
2.2. Cons an eVi al ................................................................................. 144
2.3. Ob encionDa os .............................................................................. 145
2.4. Ac i idadInicio ................................................................................. 146
2.5. Ac i idadCons an es ....................................................................... 149
2.6. Cons an esAdap e ......................................................................... 158
2.7. Mani es ........................................................................................... 160
2.8. S ings .............................................................................................. 161
3. Diag ama eléc ico ................................................................................. 162
4. Diseño elec ónico escalado ................................................................. 163
Bibliog a ía ......................................................................................................... 164
Bibliog a ía ..................................................................................................... 164
He amien as online empleadas .................................................................. 171
Au o ía de imágenes ..................................................................................... 171
[SEGUIMIENTO DE CONSTANTES VITALES]
Índice
Albe o Díez A ias
5
Tabla de imágenes
Ilus ación 1. A la izquie da, es uc u a molecula del g upo hemo. A la
izquie da, ep esen ación i ual de una molécula de hemoglobina. .............. 18
Ilus ación 2. Espec o de abso ción de la oxihemoglobina y la hemoglobina
educida. ............................................................................................................... 21
Ilus ación 3. Esquema del uncionamien o de un oxíme o. ........................... 22
Ilus ación 4. Tabla pa a el cálculo del índic de masa co po al. ...................... 26
Ilus ación 5. Placa de desa ollo A duino DUE. ................................................ 27
Ilus ación 6. Ci cui o inicial de los LED. ............................................................ 29
Ilus ación 7. Ci cui o inal de los LED. ............................................................... 30
Ilus ación 8. Ci cui o inicial del o odiodo. ........................................................ 31
Ilus ación 9. Fo odiodo y ampli icado de ansimpedancia. ........................... 32
Ilus ación 10. P ime p o o ipo pa a el senso empleando una pinza de opa.
............................................................................................................................... 33
Ilus ación 11. P o o ipo mejo ado del senso . .................................................. 34
Ilus ación 12. Con igu ación de paso bajo Sallen-Key. .................................... 36
Ilus ación 13. Diag ama de Bode pa a el il o paso bajo. .............................. 37
Ilus ación 14. Con igu ación de paso al o Sallen-Key. ..................................... 37
Ilus ación 15. Diag ama de Bode pa a el il o de paso al o. .......................... 38
Ilus ación 16. Fil o paso banda en cua o e apas. ......................................... 39
Ilus ación 17. Secuencia de encendido de los LED. ........................................ 40
Ilus ación 18. Señal en modo de emisión con inua an es y después de los
il os. .................................................................................................................... 40
Ilus ación 19. Señal en modo de emisión con inua an es y después de los
il os, habiendo eliminado una e apa del il o de paso bajo. ......................... 41
Ilus ación 20. Señal en modo de emisión pulsan e median e un solo LED
an es y después de los il os. ............................................................................. 42
Ilus ación 21. Señal en modo de emisión pulsan e median e un solo LED
an es y después de los il os habiendo eliminado una e apa de paso bajo. . 42
Ilus ación 22. Señal en modo de emisión pulsan e de los dos LED an es y
después de los il os. .......................................................................................... 43

Índice
[SEGUIMIENTO DE CONSTANTES VITALES]
Albe o Díez A ias
6
Ilus ación 23. Señal en modo de emisión pulsan e de los dos LED an es y
después de los il os habiendo eliminado una e apa de paso bajo................ 44
Ilus ación 24. Conexión del módulo blue oo h HC-06. .................................... 45
Ilus ación 25. Esquema de la uen e de alimen ación. ................................... 48
Ilus ación 26. Conexión USB ecomendada. .................................................... 49
Ilus ación 27. Fil o RC en el pin VBG. .............................................................. 49
Ilus ación 28. Conexión del e minal JTAG. ....................................................... 50
Ilus ación 29. Conexión del oscilado p incipal. ............................................... 51
Ilus ación 30. Conexión del oscilado de baja ecuencia. .............................. 52
Ilus ación 31. Ins ucciones de conexión de los pines de alimen ación del
mic ocon olado . ................................................................................................. 53
Ilus ación 32. Esquema de conexión de los pines de alimen ación del
mic ocon olado . ................................................................................................. 54
Ilus ación 33. Conexión del bo ón de e ase. .................................................... 55
Ilus ación 34. Diseño de la placa de ci cui o imp eso. Vis a supe io (supe io
izda.), is a in e io (supe io dcha.) y modelo 3D de la placa (abajo). ............ 57
Ilus ación 35. Función se up() del p og ama del mic ocon olado . ............... 58
Ilus ación 36. Función Pulso_LED() del p og ama del mic ocon olado . ...... 59
Ilus ación 37. Función De ec a Dedo() del p og ama del mic ocon olado . . 60
Ilus ación 38. Función Check() del p og ama del mic ocon olado . .............. 60
Ilus ación 39. Función Ac ualizaVec o Pulso() del p og ama del
mic ocon olado . ................................................................................................. 63
Ilus ación 40. De ección de máximos de pulso. ............................................... 64
Ilus ación 41. Función CalculaPPM() del p og ama del mic ocon olado . .... 65
Ilus ación 42. Función CalculaR() del p og ama del mic ocon olado . ......... 65
Ilus ación 43. Función CalculaPulso() del p og ama del mic ocon olado . ... 66
Ilus ación 44. Dos ejemplos de señal de onda (a iba y medio) y ansmisión
del ec o de da os ep esen ado (abajo). ......................................................... 68
Ilus ación 45. Modelo del oxíme o come cial empleado pa a ealiza la
calib ación de nues o disposi i o. ..................................................................... 70
Ilus ación 46. Compa ación de medidas de ecuencia ca díaca con una
ponde ación de 3 alo es. ................................................................................... 71
[SEGUIMIENTO DE CONSTANTES VITALES]
Índice
Albe o Díez A ias
7
Ilus ación 47. Compa ación de mediciones de sa u ación de oxígeno con una
ponde ación de 3 alo es. ................................................................................... 72
Ilus ación 48. Función CalculaMediaR() del p og ama del mic ocon olado .
............................................................................................................................... 74
Ilus ación 49. Compa ación de mediciones de ecuencia ca díaca con una
ponde ación de 10 alo es. ................................................................................. 76
Ilus ación 50. Compa ación de mediciones de sa u ación de oxígeno con una
ponde ación de 10 alo es, incluidos los alo es desca ables. ...................... 78
Ilus ación 51. Compa ación de mediciones de sa u ación de oxígeno con una
ponde ación de 10 alo es, sin inclui alo es desca ables. .......................... 78
Ilus ación 52. Función CalculaSpO2() del p og ama del mic ocon olado . ... 79
Ilus ación 53. Función De ec aPulso() del p og ama del mic ocon olado . .. 80
Ilus ación 54. Secuencia de código del modo de ección en el p og ama del
mic ocon olado . ................................................................................................. 81
Ilus ación 55. Función Ac ualizaVec o Senal del mic ocon olado con
mues eo cada 10ms. .......................................................................................... 81
Ilus ación 56. Compa a i a del mues eo a la ecuencia de ansmisión de
da os de 115200 baudios (a iba) y as la modi icación de la unción con
mues eo cada 10ms (abajo). ............................................................................. 82
Ilus ación 57. Rep esen ación de las is as de la aplicación de
comp obación. ...................................................................................................... 84
Ilus ación 58. Vis a de bloques de pseudo-código de la aplicación de
comp obación. ...................................................................................................... 85
Ilus ación 59. Vis a de las dos ac i idades de la aplicación de And oid. A la
izquie da la ac i idad de inicio. A la de echa la ac i idad p incipal de
isualización de cons an es. ............................................................................... 87
Ilus ación 60. Clase Pacien e. ........................................................................... 89
Ilus ación 61. Plan illa de un elemen o de la lis a de isualización de signos
i ales. ................................................................................................................... 90
Ilus ación 62. Clase Cons an eVi al................................................................... 92
Ilus ación 63. Mé odo calculaIMC() de la clase Ob encionDa os.................... 93
Ilus ación 64. Mé odo ge Lis aCons an es() de la clase Ob encionDa os. ..... 93
Índice
[SEGUIMIENTO DE CONSTANTES VITALES]
Albe o Díez A ias
8
Ilus ación 65. Mé odo de uel eDa os() de la Ac i idadInicio. ......................... 95
Ilus ación 66. Mé odo gua daDa os() que emplea Sha edP e e ences. ........ 96
Ilus ación 67. Mé odo ca gaDa os() que emplea Sha edP e e ences............ 96
Ilus ación 68. Mé odo onC ea e() de la Ac i idadInicio, que se ejecu a á al
c ea se la ac i idad. ............................................................................................. 97
Ilus ación 69. Mé odo inicializa Views() de la Ac i idadInicio. ........................ 97
Ilus ación 70. Mé odo ellenaPe il() de la Ac i idadCosn an es. ................... 99
Ilus ación 71. Cons uc o de la clase Cons an esAdap e y su a ibu o
mRecu sos. ........................................................................................................ 100
Ilus ación 72. Mé odo ge View() de la clase Cons an esAdap e . ................ 101
Ilus ación 73. Segmen o del mé odo inicializa Views() de la
Ac i idadCons an es, donde se inicializan la sección desplegable del pe il y la
lis a de cons an es a moni o iza . .................................................................... 102
Ilus ación 74. Comp obamos si el adap ado blue oo h no exis e, y en caso
a i ma i o bloqueamos el bo ón de conexión. ................................................ 103
Ilus ación 75.Obje o de ipo B oadcas Recei e que de inimos pa a nues a
ac i idad. ........................................................................................................... 104
Ilus ación 76. Mé odo egis a B oadcas Recei e () de la
Ac i idadCons an es. ........................................................................................ 104
Ilus ación 77. T as egis a el B oadcas Recei e es ablecemos el colo y
ex o del bo ón de conexión/desconexión. ..................................................... 105
Ilus ación 78. Mé odo conec a B () de la Ac i idadCons an es. .................. 106
Ilus ación 79. Mé odo onResul () de la Ac i idadCons an es. ...................... 107
Ilus ación 80. Lis ene de ipo onClick() sob e el ex o que ha á las eces de
bo ón en el mé odo Ac i idadCons an es. ...................................................... 108
Ilus ación 81. Decla ación del mensaje asociado al handle y aciado del se
de disposi i os. .................................................................................................. 111
Ilus ación 82. Cie e del socke de conexión. ................................................ 111
Ilus ación 83. Mé odo c eaBlue oo hSocke () de la Ac i idadCons an es. . 112
Ilus ación 84. Buscamos el disposi i o con nues a di ección MAC y c eamos
el socke . ............................................................................................................ 112
Ilus ación 85. P oceso de conexión del hilo de conexión. ............................ 113
[SEGUIMIENTO DE CONSTANTES VITALES]
Índice
Albe o Díez A ias
9
Ilus ación 86. Mé odo ConexiónFallida() de la Ac i idadCons an es. .......... 113
Ilus ación 87. Handle del hilo de conexión de la Ac i idadCons an es. ..... 114
Ilus ación 88. Cons uc o de la clase HiloT ansmisionDa os. ..................... 114
Ilus ación 89. Mé odo lee () de la clase HiloT ansmisionDa os. .................. 115
Ilus ación 90. Mé odo en iaHandle Cons an es() del HiloT ansmisionDa os.
............................................................................................................................ 116
Ilus ación 91. Mé odo cons ui Mensaje() del HiloT ansmisionDa os. ........ 116
Ilus ación 92. Mé odo un() del hilo de ansmisión de da os. .................... 117
Ilus ación 93. Handle del hilo de ansmisión de da os de la
Ac i idadCons an es. ........................................................................................ 118
Ilus ación 94. Mé odo onDes oy() de la Ac i idadCons an es. ................... 118
Ilus ación 95. Vis a de la Ac i idadCons an es du an e el p oceso de
ansmisión de da os. ....................................................................................... 119
Ilus ación 96.Código co espondien e al iche o de ecu sos de s ings en
inglés (a iba) y su homólogo en cas ellano (abajo). ...................................... 121
Ilus ación 97. Ve siones de la aplicación en inglés (izquie da) y español
(de echa). ........................................................................................................... 122
Ilus ación 98. Fallo en la señal a consecuencia de la in e e encia del módulo
blue oo h. ........................................................................................................... 126
Ilus ación 99. Top coppe ................................................................................ 163
Ilus ación 100. Bo om coppe ....................................................................... 163
Ilus ación 101. Top silk. .................................................................................. 163
Ilus ación 102. Mecanizado. ........................................................................... 163
Ilus ación 103. D ill. ........................................................................................ 163
1
[SEGUIMIENTO DE CONSTANTES VITALES]
Albe o Díez A ias
16
Tabla 1. He amien as y eque imien os egula o ios según la OMS.
Además es ablece la no ma i a y los es ánda es de calidad eque idos
pa a las dis in as egiones, siendo la no ma i a ISO13485 e ISO13488 las
aplicables den o del ámbi o de la Unión Eu opea. La no ma ISO14971
además es una no ma i a in e nacional sob e la ges ión de iesgos de
p oduc os sani a ios.
Tabla 2. No ma i a y es ánda es egula o ios po egión según la OMS.

[SEGUIMIENTO DE CONSTANTES VITALES]
1
Albe o Díez A ias
17
Den o del ma co de la Unión Eu opea, la Comisión Eu opea egula los
p oduc os médicos a a és de las di ec i as 90/385/EEC, 93/42/ECC y
98/79/EC, co egidas y e isadas a 5 de Ab il de 2017 median e las
egulaciones 2017/745 y 2017/746. En es e caso, la no ma i a que nos
compe e es la 2017/745, e e en e a disposi i os médicos. Los equisi os
gene ales de segu idad y uncionamien o pueden encon a se en el Anexo I
de la misma.
Po úl imo, en España los disposi i os médicos es án egulados po la
no ma i a es ablecida po la Agencia Española de Medicamen os y P oduc os
Sani a ios (AEMPS), una agencia es a al adsc i a al Minis e io de Sanidad,
Consumo y Bienes a Social del gobie no de España. La legislación igen e se
encuen a desc i a po el Real Dec e o 1591/2009, del 16 de oc ub e.
Po ejemplo, pa a nues o p oyec o, debe íamos a ene nos al a ículo
12 y sub-a ículos del mismo, sob e disposi i os elec ónicos equipados con
una uen e de ene gía, como es nues o caso. Si bien no es el obje i o de es e
abajo el es udio y cumplimien o de la no ma i a igen e con espec o a
disposi i os médicos, sino más bien el es udio y desa ollo desde el pun o de
is a écnico, es a no ma i a es de obligado cumplimien o si deseá amos
desa olla y come cializa nues o p oduc o.
2. Concep os Teo icos
Como hemos mencionado an e io men e en el apa ado 1.1, los signos
i ales son las medidas isiológicas que si en pa a alo a las unciones
co po ales básicas. En nues o caso hemos es ablecido que los signos i ales
a medi en nues o disposi i o son la ecuencia ca díaca y la sa u ación de
oxígeno en sang e.
Se de ine como pulsioxime ía como el mé odo no in asi o que pe mi e
de e mina el po cen aje de sa u ación de oxígeno en sang e de un pacien e
con la ayuda de mé odos o oeléc icos. La enca gada de anspo a el
oxígeno O2 desde los pulmones has a los ejidos del es o del cue po es la
hemoglobina, una hemop o eína que se encuen a en la sang e y que con ie e
a la misma de un colo ojo ca ac e ís ico. La hemoglobina es á compues a
po cua o cadenas polipep ídicas llamadas globinas a las cuales se les une
un g upo hemo, con un á omo de hie o que pe mi e c ea un enlace
e e sible con las moléculas de oxígeno, el cual pe mi e anspo a el oxígeno
a a és del o en e sanguíneo.
Ilus ación 1. A la izquie da, es uc u a molecula del g upo hemo. A la izquie da, ep esen ación i ual
de una molécula de hemoglobina.
La sang e se sa u a de oxígeno a su paso po los pulmones g acias a la
hemoglobina. Cuando la molécula de oxígeno se enlaza con oxígeno g acias a
[SEGUIMIENTO DE CONSTANTES VITALES]
2
Albe o Díez A ias
19
los á omos de hie o (has a 4 moléculas de oxígeno po molécula de
hemoglobina), se la denomina oxihemoglobina o hemoglobina oxigenada.
𝐻𝑏 + 4𝑂→ 𝐻𝑏(𝑂)
A medida que la sang e eco e el es o del cue po a pe diendo el
oxígeno. Cuando la hemoglobina pie de odo el oxígeno se la lama
desoxihemoglobina o hemoglobina educida. Mien as que la hemoglobina
oxigenada p esen a un colo ojo in enso, ca ac e ís ico de la sang e a e ial,
al con e i se en hemoglobina educida pasa a oma un colo ojo más
oscu o, ca ac e ís ico de la sang e enosa. Es es a di e encia de colo la que
nos pe mi i á medi la sa u ación de oxígeno en sang e median e
o ople ismog a ía.
La o ople ismog a ía es una écnica médica median e la cual se
ob iene un o ople ismog ama (PPG po las siglas del inglés
pho ople hysmog aphy), una medición de los cambios de olumen de un
ó gano, en es e caso de la sang e, median e haces de luz.
La a iación de olumen de sang e en la sang e se de ec a iluminando
una sección de piel median e un diodo emiso de luz (LED) y midiendo la
can idad de luz que llega a un o odiodo al o o lado de dicha sección. Pa a
que el ecep o eciba su icien e luz y pe mi i la oma co ec a de da os, la
medición debe oma se en pa es del cue po lo su icien emen e anslúcidas.
Las mediciones de oxígeno en sang e median e oxíme os suele oma se en el
ex emo de los dedos de la mano, o en los lóbulos de las o ejas.
La de e minación de la sa u ación en sang e median e
o ople ismog a ía se basa en la ley de Bee -Lambe , que elaciona la
can idad de luz abso bida con las p opiedades del ma e ial que a a iesa. La
can idad de luz de una de e minada longi ud de onda abso bida depende de
la can idad de especie abso ben e con la que se encuen a la luz al pasa po
la mues a.
Según es a ley, podemos de e mina la abso bancia (A) de una
2
[SEGUIMIENTO DE CONSTANTES VITALES]
Albe o Díez A ias
20
mues a po la elación en e el espacio eco ido po la luz a a és de la
misma (d), la concen ación de la especie abso ben e (c) y el coe icien e de
a enuación mola o abso i idad de la especie (ε).
𝐴 = 𝜀𝑑𝑐
De igual mane a, se puede calcula la abso bancia a pa i de la
elación en e la in ensidad de luz en an e (I0) y salien e (I1) al medio.
𝐴 = −𝑙𝑜𝑔 𝐼
𝐼
La hemoglobina abso be á la luz de o ma dis in a en unción de si
es á oxigenada o no. Midiendo la can idad de luz abso bida po
oxihemoglobina y po desoxihemoglobina podemos calcula el a io en e
ambas, o lo que es lo mismo, la sa u ación de la hemoglobina o de oxígeno en
sang e. Se indica SaO2 pa a la sa u ación de oxígeno a e ial y SpO2 pa a la
sa u ación de oxígeno capila pe i é ica:
𝑆𝑎𝑂=𝐻𝑏𝑂
𝐻𝑏𝑂+ 𝐻𝑏
De la misma o ma que oxihemoglobina y desoxihemoglobina no
abso ben la misma can idad de luz, ampoco esponden de la misma mane a
a di e en es longi udes de onda. Se puede obse a su compo amien o a
a és de un g á ico espec al de abso ción de luz de ambas.
[SEGUIMIENTO DE CONSTANTES VITALES]
2
Albe o Díez A ias
21
Ilus ación 2. Espec o de abso ción de la oxihemoglobina y la hemoglobina educida.
Exis e un pun o pa a cada una de ellas en la cual la di e encia de
abso ción en e ambas se maximiza, de al o ma que pa a una de ellas la
abso ción es máxima y pa a la o a es mínima. Esos alo es co esponden a
una longi ud de onda de 940nm pa a la oxihemoglobina y de 660nm pa a la
hemoglobina educida.
Es udia la abso ción de hemoglobina educida y oxihemoglobina a
longi udes de 660nm y 940nm nos pe mi e de e mina la can idad abso bida
de hemoglobina educida y oxihemoglobina espec i amen e, de o ma que
ob iamos la can idad abso bida po la o a, aislando así lo máximo posible la
can idad de luz abso bida po ella.
Exis e una p oblemá ica a la ho a de medi la luz a a és del cue po,
como po ejemplo a a és de un dedo, ya que el es o de ejidos, como piel,
músculo o masa ósea, an a abso be pa e de la luz. Además la isionomía
p opia di ie e mucho no solo en e cada pe sona sino ambién de la posición
en que se coloque el ansduc o del pulsioxíme o.
Takuo Aoyagi descub ió que la luz que a a esaba a a és del cue po
p esen aba ondas pulsá iles pues o que, mien as que la luz abso bida po
o os ejidos e a cons an e, la abso bida po la hemoglobina e a a iable y
pulsan e. Es o pe mi e ob ia la can idad de luz abso bida de o ma absolu a

2
[SEGUIMIENTO DE CONSTANTES VITALES]
Albe o Díez A ias
22
y así solamen e es necesa io medi la can idad pulsan e.
Pa a el diseño de nues o disposi i o, lee emos median e un o odiodo
la luz abso bida a a és del dedo y que emi en dos LED, uno ojo de longi ud
de onda de 660nm y o o in a ojo con una longi ud de onda de 940nm.
Cada LED emi i á luz de o ma al e na y la a iación de in ensidad a a és del
o odiodo nos pe mi i á oma lec u as de ol aje p opo cionales a la luz
abso bida al pasa el dedo, p opo cionándonos un o ople ismog ama.
Medi emos la a iación pulsan e ela i a pa a cada una, y la elación en e
ambas nos pe mi i á es ablece el ni el de sa u ación en sang e co ejándola
con los alo es de un oxíme o de pulso come cial.
Ilus ación 3. Esquema del uncionamien o de un oxíme o.
Los alo es de sa u ación en sang e no males oscilan en e 96% y
99%, y debe ían se supe io es a 94%. Un ni el de sa u ación en sang e
in e io a 90% puede conside a se hipoxia, comúnmen e p oducida po una
anemia.
Algunas ab e ia u as pa a e e i nos al ni el de sa u ación de oxígeno
en sang e son:
Tabla 3. Ab e ia u as comunes pa a la sa u ación de oxígeno en sang e.
[SEGUIMIENTO DE CONSTANTES VITALES]
2
Albe o Díez A ias
23
El ni el de oxígeno en sang e, además de medi el po cen aje de
oxihemoglobina como se ha desc i o an e io men e, se puede medi según la
p esión a e ial del oxígeno en milíme os de me cu io. La equi alencia en e
el po cen aje de sa u ación en sang e y la p esión a e ial del oxígeno
queda ía:
Sa u ación de oxígeno
P esión a e ial de oxígeno
100%
228 mmHg
98,4%
100 mmHg
95%
80 mmHg
90%
59 mmHg
80%
48 mmHg
73%
40 mmHg
60%
30 mmHg
50%
26 mmHg
40%
23 mmHg
35%
21 mmHg
30%
18 mmHg
Tabla 4. Equi alencia en e sa u ación y p esión a e ial de oxígeno.
Como hemos is o, la medición median e o ome ía nos p opo ciona
un o ople ismog ama pulsan e unción de la a iación de olumen de la
sang e. Esos pulsos co esponden a cada uno de los pulsos ca díacos, lo que,
además de pe mi i nos calcula la sa u ación de oxígeno en sang e, nos
pe mi i á calcula el segundo signo i al que debemos de e mina : la
ecuencia ca díaca.
Se de ine como ecuencia ca díaca o pulso a la can idad de
con acciones de co azón o pulsaciones po unidad de iempo, gene almen e
po minu o en pulsaciones po minu o (ppm, bpm po las siglas en inglés
bea s pe minu e). La medición del pulso suele oma se en pa es del cue po
donde las a e ias es án más expues as, como en el cuello o las muñecas, o
en la caja o ácica donde las pulsaciones del co azón son más no ables.
Pa a la oma de ecuencia ca díaca se iene en cuen a la ac i idad o
las condiciones en las que se oman, en eposo o en ac i idad. És a depende
de di e en es ac o es, desde gené icos has a el es ado ísico de la pe sona.
2
[SEGUIMIENTO DE CONSTANTES VITALES]
Albe o Díez A ias
24
La ecuencia ca díaca máxima (FC depende del sexo y de la edad:
F ecuencia ca díaca máxima
Homb e
220
-
edad (años)
Muje
215
-
edad (años)
Tabla 5. F ecuencia ca díaca máxima en unción del sexo y la edad.
Exis en ó mulas más p ecisas pa a el cálculo de la ecuencia
ca díaca máxima que ienen en conside ación la edad y el peso. La ecuencia
ca díaca mínima no es in e io de 59 pulsaciones po minu o en eposo,
aunque en el caso de depo is as puede llega a se de 39.
Tabla 6. F ecuencias máximas y mínimas po ango de edad.
Pues o que el disposi i o ha de p opo ciona una espues a en iempo
eal, con abiliza las pulsaciones en un minu o no es una opción iable. Se
oma á po an o el iempo en e pulsos según la onda o ople ismog á ica y
con el pe íodo de cada pulso se calcula á la ecuencia del mismo en ppm.
La ecuencia ca díaca es a iable en cada pulso, así que se oma á la
ecuencia ca díaca ponde ada en un pe íodo de iempo lo su icien emen e
co o pa a pe mi i que los da os sean mos ados en iempo eal y lo
su icien emen e la go como pa a que compense las posibles a iaciones
pun uales de pulsaciones.
Finalmen e, se de ine como índice de masa co po al (IMC) a la elación
ma emá ica en e al u a y masa co po al de un indi iduo. Fue ideado po el
es adís ico belga Adolphe Que ele , po lo que ambién se conoce como índice
de Qua ele . Se puede calcula median e ablas o a pa i la siguien e
exp esión:
𝐼𝑀𝐶 = 𝑚𝑎𝑠𝑎
𝑒𝑠𝑡𝑎𝑡𝑢𝑟𝑎
[SEGUIMIENTO DE CONSTANTES VITALES]
2
Albe o Díez A ias
25
El IMC es un indicado del es ado co po al de una pe sona y según su
alo se suele di idi en es ca ego ías: in apeso, peso no mal, sob epeso y
obesidad. EL IMC no iene en cuen a el sexo o la edad, aunque exis en ablas
po pe cen iles de sexo y edad, gene almen e pa a el cálculo del mismo en
niños y adolescen es.
Tabla 7. Clasi icación de pesos en unción del IMC.
3
[SEGUIMIENTO DE CONSTANTES VITALES]
Albe o Díez A ias
32
Ilus ación 9. Fo odiodo y ampli icado de ansimpedancia.
Dispond emos el o odiodo pola izado in e samen e en e la pa illa 1
de o se y la en ada posi i a del ampli icado .
La ganancia de ensión del ampli icado esponde a la exp esión:
𝐴=𝑉

𝑉=𝑅2
𝑅1
El ampli icado sa u a a una ensión ap oximada de 2.6V. Pues o que
el ango de ensión es pequeño, se cambia á la esolución de la lec u a
analógica del A duino median e el comando AnalogResolu ion(12). Con es o
ese amos 12 bi s pa a la lec u a de ensión Analógica. A di e encia de o os
modelos de A duino, la e e encia de ensión pa a las mediciones analógicas
es de 3.3V, lo que nos o o ga una esolución de 0.8mV.
Pa a el desa ollo del senso p ime o se diseñó un p o o ipo median e

[SEGUIMIENTO DE CONSTANTES VITALES]
3
Albe o Díez A ias
33
una pinza de opa de plás ico a la cual se la e ec ua on dos oquedades en
ambas pa es. Se in oduje on en dichas abe u as dos LED, uno ojo y o o
in a ojo, un L934LSRD y un TSAL4400 espec i amen e, y un o odiodo
LL304PDC2E en el ex emo opues o. Como esis encias en se ie a los LED se
eligie on esis encias de 50Ω.
Ilus ación 10. P ime p o o ipo pa a el senso empleando una pinza de opa.
Si bien el esul ado ob enido al oma las mediciones en la ascia en e
el dedo índice y pulga , el senso de pinza y los componen es elegidos ue on
insu icien es pa a la lec u a co ec a en los dedos, siendo la luz emi ida
demasiado débil o el senso incapaz de de ec a la. Además, la p esión de la
pinza esul a moles a y di icul a el mo imien o.
Se p opone como obje i o que el senso sea lo más cómodo y menos
incapaci an e posible. Los oxíme os come ciales o empleados
Se diseñó un segundo p o o ipo empleando componen es SMD. Se
sus i uyó la pinza po una i a de elc o ajus able y unas plan illas de goma
e a pe o adas, donde se in oducen los componen es y aíslan el cableado
como se mues a en las siguien es o og a ías. La i a de elc o, además de
ajus a se al dedo, aísla al senso de luz ambien al, esul ando una medición
más adecuada.
3
[SEGUIMIENTO DE CONSTANTES VITALES]
Albe o Díez A ias
34
Ilus ación 11. P o o ipo mejo ado del senso .
En es e caso se emplea on un LED ojo KA-3528SRT, un LED in a ojo
VSMB3940X01 y un o odiodo BPW 34 S. Pa a es os componen es:
𝐼  á = 30𝑚𝐴 → 𝑅 í =3.3𝑉 − 𝑉 − 𝑉()
𝐼  á =3.3𝑉 − 1.85𝑉 − 0.09𝑉
0.03𝐴
= 45.33Ω
𝐼  á = 155𝑚𝐴 → 𝑅 í =3.3𝑉 − 𝑉 − 𝑉()
𝐼  á
=3.3𝑉 − 1.85𝑉 − 0.09𝑉
0.155𝐴 = 8.77Ω
[SEGUIMIENTO DE CONSTANTES VITALES]
3
Albe o Díez A ias
35
𝐼  á = 100𝑚𝐴 → 𝑅 í =3.3𝑉 − 𝑉 − 𝑉()
𝐼  á
=3.3𝑉 − 1.15𝑉 − 0.09𝑉
0.1𝐴 = 20.6Ω
𝐼  á = 200𝑚𝐴 → 𝑅 í =3.3𝑉 − 𝑉 − 𝑉()
𝐼  á
=3.3𝑉 − 1.15𝑉 − 0.09𝑉
0.2𝐴 = 10.3Ω
El alo de la in ensidad de pico del LED in a ojo se ha omado con
un ciclo de se icio de 0.5 y un pulso de 100µs, mien as que pa a el LED ojo
el alo de la in ensidad de pico se ha omado pa a un ciclo de se icio de
1/10 con un iempo de pulso de 0.1ms.
3.3. Fil os
Con el obje i o de adecua la señal de salida del senso y elimina
posibles uidos, se p e ende diseña un il o de paso banda pa a elimina
oda ecuencia po encima y po debajo de la señal a es udia .
Como se ha comen ado an e io men e, el pulso o ecuencia ca díaca
a ía a lo sumo en e 39 pulsaciones po minu o y 220 pulsaciones po
minu o, po an o, oda ecuencia po encima o po debajo no es obje o de
medida del disposi i o. Ambas ecuencias se co esponden en he zios a
0.65 y 3.67 espec i amen e.
Se ha diseñado un il o de cua o e apas de ipo Sallen-Key, dos de
paso bajo y dos de paso al o. Como ecuencia de co e pa a los il os de
paso bajo se oma á una ecuencia de 5Hz, y pa a la ecuencia de co e en
los il os de paso al o una ecuencia de 0.5Hz.
 Fil o de paso bajo:
Se a a de un il o de dos e apas de ipo Sallen-Key que pe mi e el
paso de ecuencias po debajo de la ecuencia de co e c. La
3
[SEGUIMIENTO DE CONSTANTES VITALES]
Albe o Díez A ias
36
con igu ación de paso bajo Sallen-Key es la que sigue:
Ilus ación 12. Con igu ación de paso bajo Sallen-Key.
La ecuencia de co e pa a es e il o, así como el ac o de calidad
Q ienen de e minadas po la siguien e exp esión:
𝑓
=1
2𝜋𝑅𝑅𝐶𝐶
𝑄 = 𝑅𝐶𝐶
𝐶+ 𝐶
𝑅𝑅𝐶𝐶
Pa a una ecuencia de co e de 5Hz y un ac o de calidad Q=0.5
enemos así los siguien es esul ados ob enidos de o ma
simulada:
R1=33kΩ
R2=33kΩ
C1=1µF
C2=1µF
[SEGUIMIENTO DE CONSTANTES VITALES]
3
Albe o Díez A ias
37
Ilus ación 13. Diag ama de Bode pa a el il o paso bajo.
 Fil o de paso al o:
El il o de paso al o pe mi i á el paso de las ecuencias po
encima de la ecuencia de co e. La exp esión pa a el cálculo de la
ecuencia de co e y el ac o de calidad son iguales, pe o la
con igu ación del il o en cambio es di e en e:
Ilus ación 14. Con igu ación de paso al o Sallen-Key.
Pa a una ecuencia de co e de 0.5Hz y un ac o de calidad 0.5,
los esul ados y la simulación ob enida son los siguien es:
R1=33kΩ
R2=33kΩ
C1=10µF
C2=10µF

3
[SEGUIMIENTO DE CONSTANTES VITALES]
Albe o Díez A ias
38
Ilus ación 15. Diag ama de Bode pa a el il o de paso al o.
Pa a el diseño de los il os emplea emos un ci cui o in eg ado LM324
que dispone de cua o módulos de ampli icado es ope acionales de baja
ensión. Las cua o e apas de il os quedan de la siguien e o ma:
[SEGUIMIENTO DE CONSTANTES VITALES]
3
Albe o Díez A ias
39
Ilus ación 16. Fil o paso banda en cua o e apas.
A con inuación se an a ealiza di e en es p uebas pa a es udia el
compo amien o de los il os. Se oma án medidas a la salida del
ampli icado de ansimpedancia, a la salida de la e apa de paso bajo y
inalmen e a la salida de las cua o e apas de il o as la e apa de paso al o.
Se ha án p uebas del uncionamien o de los LED an o pa a emisión
con inua de uno de ellos como pa a emisión en pulsos de o ma indi idual y
de o ma al e na. La secuencia de apagado y encendido de los LED se á en
pe íodos al e nos de 1ms y con un ciclo de se icio de 0.1ms como se indica
en la igu a. El ciclo de se icio pod á modi ica se pa a aumen a o disminui
la luminosidad en caso de que lo necesi emos.
3
[SEGUIMIENTO DE CONSTANTES VITALES]
Albe o Díez A ias
40
Ilus ación 17. Secuencia de encendido de los LED.
 Emisión con inua.
Pa a es a p ueba comp obamos el uncionamien o de los il os
empleando un único LED (en es e caso el LED in a ojo) en modo
de emisión con inua.
Ilus ación 18. Señal en modo de emisión con inua an es y después de los il os.
La señal azul mues a la salida de ensión as el ampli icado de
ansimpedancia, la señal oja as los dos il os de paso bajo y la
señal e de as los dos il os de paso al o. Como emos, as la
[SEGUIMIENTO DE CONSTANTES VITALES]
3
Albe o Díez A ias
41
salida de la p ime a e apa de paso bajo del il o, la señal se
sua iza pe o man iene su o ma ca ac e ís ica, aunque es posible
que al sua iza se se pie da in o mación como la di e encia exac a
en e máximos y mínimos. La salida as el il o de paso al o es
nula.
Eliminamos uno de los il os de paso bajo pa a e el
compo amien o de una sola e apa del mismo.
Ilus ación 19. Señal en modo de emisión con inua an es y después de los il os, habiendo eliminado
una e apa del il o de paso bajo.
La señal as el il o de paso bajo se sua iza menos que en el caso
an e io , semejándose así más a la señal o iginal.
 Emisión pulsan e 1 LED.
Pa a es e caso emi i emos median e el LED in a ojo en pulsos de
0.1 ms y un pe íodo de 1ms como el desc i o an e io men e.
Realiza emos las lec u as an solo en los pulsos pa a no ensucia la
ep esen ación de la señal ya que la in o mación de ensión
du an e el es o del pe íodo no nos p opo ciona ningún ipo de
in o mación.
3
[SEGUIMIENTO DE CONSTANTES VITALES]
Albe o Díez A ias
48
alimen a median e una pila alcalina de bo ón de 1.5V con el in de educi el
espacio.
Se ha escogido un con e ido de ensión LTC3525-3.3 pa a ga an iza
una ensión es able de 3.3V. En la documen ación, adjun a en los anexos, se
sugie e unas con igu aciones ecomendadas, en e ellas pa a una pila
alcalina de 1.5V.
Ilus ación 25. Esquema de la uen e de alimen ación.
3.6. Conexión USB
Aunque el A duino DUE puede p og ama se a a és del pue o de
p og amación, p og ama el mic ocon olado de es a o ma supone añadi un
mic ocon olado ATmega16U2 adicional al ci cui o y p og ama lo. El
SAM3X8E cuen a con a ias o mas de p og ama lo, en e las que se
encuen an la conexión na i a po el pue o UOTGID a a és de USB, la
p og amación median e JTAG y inalmen e po SWD.
El SAM3X8E iene con un p og ama boo loade de áb ica llamado
SAM-BA ins alado en la ROM en luga de la memo ia lash como en el caso de
los mic ocon olado es AVR, lo que pe mi e p og ama lo desde el pue o
na i o UOTGID sin necesidad de ins ala noso os el boo loade . El boo loade
se ca ga á al pulsa el bo ón de bo ado e ase (pin PC0).
La conexión ecomendada po el ab ican e pa a el caso en que el

[SEGUIMIENTO DE CONSTANTES VITALES]
3
Albe o Díez A ias
49
mic ocon olado sea alimen ado de o ma au ónoma como es nues o caso,
es la siguien e:
Ilus ación 26. Conexión USB ecomendada.
Po el núme o de e minales suge idos po el esquema se ha de usa
un USB de ipo mic o o mini. En nues o caso usa emos un mic o USB.
Además de es as conexiones, se debe acopla un il o RC al pin VBG
como se indica en la imagen:
Ilus ación 27. Fil o RC en el pin VBG.
3
[SEGUIMIENTO DE CONSTANTES VITALES]
Albe o Díez A ias
50
3.7. Conexión JTAG
A pesa de que el obje i o es p og ama el mic ocon olado a a és
del pue o na i o USB median e el A duino IDE, la implemen ación de un
e minal de depu ación (debug) JTAG es ecomendada. Además de la
conexión al e minal, se deben conec a esis encias de 100kΩ de pull-up en
los pines TCK (PB28), TMS (PB31) y TDI (PB29) además de a los espec i os
e minales del conec o JTAG. El pin TDO (PB30) se conec a di ec amen e con
el e minal.
Pa a el e minal RESET del e minal se conec a á un bo ón a ie a
pa ay una esis encia en se ie pa a limi a la co ien e.
Ilus ación 28. Conexión del e minal JTAG.
El pin JTAGSEL debe conec a se a ie a pues o que no le
emplea emos.
3.8. Reloj y oscilado es
El SAM3X8E dispone de dos pa es de pines dedicados pa a los dos
[SEGUIMIENTO DE CONSTANTES VITALES]
3
Albe o Díez A ias
51
elojes in e nos del oscilado , los pines XIN y XOUT pa a el eloj p incipal y
XIN32 y XOUT32 pa a el eloj de baja ecuencia.
 XIN y XOUT
El mic ocon olado es á diseñado pa a abaja con c is ales de
en e 3 y 20MHz. Según el ab ican e, el boo loade SAM-BA
sopo a comunicación se ial a a és de UART y USB cuando
abajamos con c is ales de 12MHz.
La conexión del c is al queda como sigue:
Ilus ación 29. Conexión del oscilado p incipal.
Teniendo en cuen a que:
𝐶 = 2(𝐶 − 𝐶− 𝐶)
Donde CPCB es la capacidad de la placa de ci cui o imp eso desde el
pin del c is al has a el pin del mic ocon olado y CL es la capacidad
de ca ga in e na que equi ale a 9.5pF.
 XIN32 y XOUT32
Pa a el oscilado de baja ecuencia se ha de emplea un c is al de
32.768kHz, siendo la con igu ación del mismo análoga a la
an e io :
3
[SEGUIMIENTO DE CONSTANTES VITALES]
Albe o Díez A ias
52
Ilus ación 30. Conexión del oscilado de baja ecuencia.
𝐶 = 2(𝐶 − 𝐶 − 𝐶)
Donde la capacidad pa ási a equi alen e es de 1.4pF.
3.9. Alimen ación del mic ocon olado
El SAM3X8E dispone de a ios pines de alimen ación que deben
conec a se según el siguien e esquema y las indicaciones del manual.
[SEGUIMIENTO DE CONSTANTES VITALES]
3
Albe o Díez A ias
53
Ilus ación 31. Ins ucciones de conexión de los pines de alimen ación del mic ocon olado .

3
[SEGUIMIENTO DE CONSTANTES VITALES]
Albe o Díez A ias
54
Ilus ación 32. Esquema de conexión de los pines de alimen ación del mic ocon olado .
Las conexiones de los condensado es se han de ealiza lo más
p óximo posible a sus espec i os pines como se especi ica en la
documen ación.
3.10. O as conexiones
Además de las desc i as, se deben ealiza las siguien es conexiones al
mic ocon olado :
 ADC
[SEGUIMIENTO DE CONSTANTES VITALES]
3
Albe o Díez A ias
55
Pa a pe mi i el uncionamien o del con e ido ADC con una
esolución de 12 bi s, se debe conec a el pin ADVREF a VVDDANA,
siendo es a supe io a 2.4V.
 E ase
Pa a pode ca ga el boo loade como se ha indicado
an e io men e, se debe añadi un bo ón de e ase pa a el bo ado
de la memo ia lash y que indica á al boo loade que debe
ca ga se. Conec a emos a la alimen ación un pulsado al pin de
e ase (PC0) en se ie a una esis encia pa a egula la in ensidad.
Ilus ación 33. Conexión del bo ón de e ase.
 Rese /Tes
La documen ación del mic ocon olado sugie e conec a los pines
NRST, NRSTB y TST como se indica a con inuación:
- Deja emos NRST al ai e, pues o que pe mi i emos el ese
median e NRSTB, que además incluye ese de la egión de
backup.
- NRSTB se debe conec a a una capacidad de 10nF de pull-up y
al bo ón de ese que añadimos en el e minal JTAG.
- TST se á conec ado a ie a.
 Shu down/Wakeup logic
El pin SHDN se man end á desconec ado, mien as que el pin
FWUP se conec a á median e una esis encia de pull-up al pin
VDDBU.
3
[SEGUIMIENTO DE CONSTANTES VITALES]
Albe o Díez A ias
56
3.11. Diseño de la placa de ci cui o imp eso
Se ha diseñado el ci cui o pa a su ab icación en una placa de ci cui o
imp eso. Debido a la na u aleza po able del disposi i o se han elegido
componen es con las ca ac e ís icas dimensionales más educidas posibles.
El diseño puede a ia lige amen e si se eligen componen es con di e en es
oo p in s a los p opues os.
El disposi i o se alimen a á con una pila de bo ón LR44 de 1.5V como
se especi icó en el apa ado de la uen e de alimen ación y el egulado de
ensión. Se han dis ibuido las ías de ensión po sepa ado a los dis in os
componen es pa a e i a pé didas en e nodos.
Aunque el amaño de la placa es educido, és e es á limi ado po el
amaño de los componen es empleados: el módulo blue oo h, el amaño del
mic ocon olado empleado o la exis encia de componen es dedicados pa a la
p og amación del disposi i o impiden educi aún más su amaño.
[SEGUIMIENTO DE CONSTANTES VITALES]
3
Albe o Díez A ias
57
Ilus ación 34. Diseño de la placa de ci cui o imp eso. Vis a supe io (supe io izda.), is a in e io
(supe io dcha.) y modelo 3D de la placa (abajo).
4
[SEGUIMIENTO DE CONSTANTES VITALES]
Albe o Díez A ias
64
( oja) jun o con la g á ica de la pendien e ( e de). La g á ica ama illa
ep esen a el alo si uado a 1/3 del mínimo, que se es ablece cada
segundo. La g á ica mo ada co esponde a una a iable in oducida pa a
isualiza cuando la pendien e pasa a ale menos que el lími e de de ección,
iéndose cla amen e cómo se co esponden los lancos de subida de es a
a iable con el máximo de la onda in a oja.
Ilus ación 40. De ección de máximos de pulso.
Una ez iden i icados de o ma co ec a los pulsos, podemos medi el
iempo en e ellos. Se c ea una a iable booleana que sea ue o alse en
unción de si es emos en la egión de pico de o ma análoga a la de la
a iable auxilia an es desc i a. T as cada ciclo de encendido de los LED se
comp ueba median e la unción De ec a Pulso() si hemos pasado de un
es ado alse a ue y, en caso a i ma i o calculamos el iempo anscu ido
desde el an e io pulso e iniciamos la cuen a de nue o has a el siguien e.
Además, il amos uidos de la misma o ma que se hizo en el an e io
mé odo, il ando pulsaciones de meno du ación de 250 milisegundos y
aquellas que du en más de 2 segundos. Si la du ación es á en ese ango,
almacenamos su alo en un ec o que con enga las du aciones de las 3
úl imas pulsaciones con las que se calcula á el alo de la ecuencia ca díaca
media en e esas es a a és de la unción CalculaPPM(). El mo i o de es o

[SEGUIMIENTO DE CONSTANTES VITALES]
4
Albe o Díez A ias
65
es que, como hemos dicho an es, un pulso de du ación ano mal puede no se
signi ica i o, es po an o que se eligió ealiza la media con las es úl imas
mediciones pa a que la medición ue a lo más ápida (en iempo eal) exac a
posible. El alo del ec o puede cambia se pa a co eja sus esul ados a
di e en es amaños del ec o .
Ilus ación 41. Función CalculaPPM() del p og ama del mic ocon olado .
Pa a calcula el ni el de oxígeno en sang e, es a ez se einicia an los
alo es máximo y mínimo a sus alo es ex emos en cada pulsación, de o ma
que se calculen los máximos y mínimos ela i os de cada onda. Cuando la
unción De ec a Pulso() einicia el con ado y de ec a un nue o pulso co ec o
calcula la elación en e la a iación ela i a de cada ensión como se explica
en el apa ado 2 de undamen os eó icos. De igual o ma que se calcula la
ecuencia ca díaca con las es úl imas du aciones de pulso, se calcula á la
elación media de las es úl imas elaciones de ensiones pa a halla el ni el
de oxígeno co espondien e a al elación.
Ilus ación 42. Función CalculaR() del p og ama del mic ocon olado .
De nue o, el mo i o de oma el alo medio pa a la elación de
ensiones uel e a se que la azón de ensiones ela i as pa a un único pulso
no es signi ica i a. Además, eniendo en cuen a los angos de ensión an
pequeños en e los que nos mo emos y la g an a iabilidad y sensibilidad de
la lec u a, el cálculo de es e alo esul a complejo, dando esul ados dispa es
a cada pulsación, y po an o se ealiza una es imación media de las
elaciones ela i as.
4
[SEGUIMIENTO DE CONSTANTES VITALES]
Albe o Díez A ias
66
Po úl imo, la unción De ec a Pulso() ac ualiza los alo es del mensaje
JSON a en ia po el se ial del blue oo h.
Ilus ación 43. Función CalculaPulso() del p og ama del mic ocon olado .
Cada 1 segundo, coincidiendo con el pe íodo de es ablecimien o del
lími e de la pendien e, en ia emos el mensaje en o ma o JSON a a és del
se ial3, que se ha llamado HC06, que se ha con igu ado a una elocidad de
ansmisión de 115200 baudios (bi s po segundo). Es o equi ale a una
elocidad de 14400 by es po segundo. Po lo an o, po cada ciclo de
encendido de los LED se pod ía en ia un mensaje de un amaño de 14,4
by es.
[SEGUIMIENTO DE CONSTANTES VITALES]
4
Albe o Díez A ias
67
4
[SEGUIMIENTO DE CONSTANTES VITALES]
Albe o Díez A ias
68
Ilus ación 44. Dos ejemplos de señal de onda (a iba y medio) y ansmisión del ec o de da os
ep esen ado (abajo).
Al decla a la a iable JSON del mensaje se debe ese a el amaño
del mismo, y pa a ello se ese a on 200 by es, un amaño con un ma gen
su icien e pa a el mensaje a en ia . El modelo no malizado del mensaje a
en ia , en el o ma o JSON es el siguien e:
{"da os":{"ppg":0,"oxigeno":0,"pulso":0}}
En el mensaje se ha incluido la a iable ppg co espondien e a la señal
o ople ismog á ica de la medición in a oja. El mo i o de es o es po que en
un p incipio se pensó moni o iza su alo , y inalmen e se desca ó su uso
po a ios mo i os. En p ime luga , el alo de la señal en sí no apo a ningún
ipo de in o mación, pues o que se co esponde al alo de la ensión
p oducida en el o odiodo en mili ol ios, alo a bi a io cuyo alo absoul o
ca ece de signi icado eal. O a posibilidad se ía g a ica el alo de la señal,
pe o de nue o no deja de se una señal sin in o mación, a pesa de que
g á icamen e puedan ap ecia se los pulsos. Además, eniendo en cuen a que
la a iación ela i a de los pulsos espec o del o al de la señal es bas an e
pequeña, po lo que la isualización se ía pob e. En adición, la aplicación ha
sido diseñada pa a a a odas las a iables como alo es a ep esen a
numé icamen e en una is a de ipo lis a única pa a cada a iable, lo cual
[SEGUIMIENTO DE CONSTANTES VITALES]
4
Albe o Díez A ias
69
implica ía ealiza una excepción únicamen e con es e alo pa a dispone lo
en una is a dis in a a la is a de cons an es i ales ( e el apa ado e e en e
a la clase Cons an eVi al). Po úl imo, la elocidad de ansmisión in luye en la
posibilidad de ep esen a g á icamen e la señal. Pues o que el mensaje se
en ía cada 1 segundo, es imposible econs ui la g á ica a esa ecuencia.
Pa a un mensaje de 200by es a una elocidad de 115200 baudios
podemos en ia un mensaje cada 13,9 milisegundos. A es a ecuencia se ía
posible econs ui la señal a pa i de los da os en iados. El mo i o de en ia
los da os a in e alos an g andes como un segundo es que las señales que
amos a moni o iza no necesi an de un e esco ápido, pues o que el ni el
de oxígeno en sang e o la ecuencia ca díaca no a ían de o ma ápida
(milisegundos). Además, debemos da iempo a los múl iples p ocesos
pa alelos de la aplicación And oid pa a ex ae y p ocesa la in o mación
ecibida en el mensaje.
Aunque inalmen e se decidie a no emplea la a iable
o ople ismog á ica, se ha man enido en el con enido del mensaje como
ejemplo de la e sa ilidad en el uso del mensaje JSON como o ma o de
ansmisión de da os, así como de su in e p e ación de o ma no malizada en
la aplicación And oid, como se e á más adelan e.
4.2. Calib ación y oma de da os
Pa a conoce el alo del ni el de oxígeno que le co esponde a cada
uno de los alo es calculados a pa i de la elación en e ex emos ela i os
de las dos señales, co ejamos los esul ados con los ni eles de oxígeno que
nos p opo ciona á un oxíme o come cial modelo Heal hFo You del ab ican e
Sil e C es .

4
[SEGUIMIENTO DE CONSTANTES VITALES]
Albe o Díez A ias
70
Ilus ación 45. Modelo del oxíme o come cial empleado pa a ealiza la calib ación de nues o
disposi i o.
Se oma án da os de co espondencia en e el alo R de uel o po el
p og ama y los ni eles de sa u ación de oxígeno medidos simul áneamen e
median e el oxíme o come cial. Además, se compa a án los alo es de
ecuencia ca díaca p opo cionados po ambos disposi i os, pa a e i ica que
nues o algo i mo de uel e unos alo es que se co esponden con la medida
exac a.
Como se ha desc i o en la sección an e io , se en ían los alo es
p omedio de las es úl imas mediciones, an o pa a el alo de la ecuencia
ca díaca como pa a el alo de la elación en e señales.
[SEGUIMIENTO DE CONSTANTES VITALES]
4
Albe o Díez A ias
71
PPM
Disposi i o
Oxíme o come cial
62 62
67 67
66 67
75 73
62 63
71 71
78 83
82 80
60 61
74 74
63 64
69 73
61 61
52 52
52 49
56 55
50 50
Tabla 9. Tabla de mediciones de ecuencia ca díaca pa a una ponde ación de 3 alo es.
Ilus ación 46. Compa ación de medidas de ecuencia ca díaca con una ponde ación de 3 alo es.
y = 1,0481x - 2,8209
R² = 0,9635
45
50
55
60
65
70
75
80
85
90
45 55 65 75 85
4
[SEGUIMIENTO DE CONSTANTES VITALES]
Albe o Díez A ias
72
Sa u ación de oxígeno
Disposi i o
Oxíme o come cial
0,67 97
0,68 97
0.70 96
0.56 97
0,57 97
0,66 96
0,7 95
0,68 97
0,73 95
0,67 95
0,86 94
0.57 95
0.77 97
0,73 94
0,67 96
0,58 98
0,67 94
0,66 95
0,64 96
0,69 95
Tabla 10. Tabla de mediciones de sa u ación de oxígeno pa a una ponde ación de 3 alo es.
Ilus ación 47. Compa ación de mediciones de sa u ación de oxígeno con una ponde ación de 3 alo es.
y = -7,829x + 101,07
R² = 0,2182
93
94
95
96
97
98
99
0,5 0,6 0,7 0,8 0,9
[SEGUIMIENTO DE CONSTANTES VITALES]
4
Albe o Díez A ias
73
En la g á ica e e en e a la ecuencia ca díaca obse amos un ajus e
bas an e acep able de los esul ados. Du an e la oma de da os se obse ó
una g an a iabilidad de los alo es con espec o del iempo, es deci , la señal
a ía demasiado ápido en cada pulso.
Es o es debido a que el peso ela i o que iene cada medición es muy
al o eniendo en cuen a que cada medición ep esen a un e cio del
p omedio, lo que hace que una medida algo di e en e (bien po un pulso
ano malmen e más co o o bien po un e o al iden i ica el pulso) haga
luc ua el p omedio en g an medida.
Algo simila ocu e con la oma de da os pa a el cálculo de la
sa u ación de oxígeno. La elación en e pulsos puede a ia en e cada pulso
y como consecuencia su alo p omedio luc úa mucho. Además, obse amos
el p incipal p oblema de la oma de da os que es la mala adecuación de las
mediciones a una ec a.
Los mo i os de ello pueden se el poco ango numé ico en el que los
alo es de sa u ación de oxígeno pueden oma . Po o a pa e, la a iabilidad
del oxme o come cial conlle a bas an e ince idumb e con la oma de da os:
desde medidas po debajo de los ni eles saludables, has a g andes
a iaciones en un in e alo pequeño de iempo que se añaden a la al a
a iabilidad de las mediciones omadas de nues o senso como se ha
comen ado an e io men e. No se han conside ado como álidas las
mediciones po debajo de 94% po conside a se inequí ocamen e e óneas.
A pesa de ello se in uye una elación p opo cionalmen e in e sa en e
los da os co ejados.
Pa a in en a co egi los e o es de i ados de la a iabilidad de los
da os se decide cambia los ec o es de oma de da os a un amaño de 10 y
ealiza la ponde ación a a és de es as 10 mediciones.
En p ime luga se han de inido esos amaños como cons an es
globales en nues o p og ama, pa a pe mi i la modi icación de las
4
[SEGUIMIENTO DE CONSTANTES VITALES]
Albe o Díez A ias
80
es ablecimien o has a el inicio del en ío de da os. Igualmen e, si el alo de
sa u ación de oxígeno supe a el 100% o es á po debajo de 90% desca amos
el en ío de da os. Además, si la du ación del pulso es demasiado al a se
conside a á como una mala oma de mediciones, po lo que se einicia án los
ec o es de pulsos y elaciones has a ecupe a una buena oma de medidas.
Ilus ación 53. Función De ec aPulso() del p og ama del mic ocon olado .
Se en ía el alo V_IR pues o que puede se de in e és a la ho a de
conoce po qué los da os no han sido en iados.
En iamos un mensaje nulo ambién en el caso de que el senso es é
en modo de de ección. Si en amos en modo de ección einiciamos los
ec o es de pulso y elaciones has a que el senso uel a a de ec a de o ma
co ec a.

[SEGUIMIENTO DE CONSTANTES VITALES]
4
Albe o Díez A ias
81
Ilus ación 54. Secuencia de código del modo de ección en el p og ama del mic ocon olado .
Pues o que la oma de da os se ha ealizado median e el pue o se ie
0 a 9600 baudios, la ecuencia de emisión de los LED se educe al se
dependien e de la elocidad de ansmisión. Al deja de ansmi i da os al IDE
de A duino, la ecuencia de encendido y apagado de los LED uel e a su
alo eó ico.
Al hace lo el esul ado a ía, pa a obse a las a iaciones
aumen amos la elocidad de ansmisión de da os a 115200 baudios y
ep esen amos los alo es po el pue o se ie al IDE de A duino. Cuan o mayo
es la ecuencia de mues eo obse amos una mayo luc uación de la
a iación de pendien e de la señal in a oja. Pa a a enua es e enómeno,
es ingimos las mediciones de ensión que se incluyen en el ec o de señal
cada 10ms.
Ilus ación 55. Función Ac ualizaVec o Senal del mic ocon olado con mues eo cada 10ms.
Con es a secuencia de código mejo amos la de ección de pulsos
conside ablemen e como se e a con inuación.
4
[SEGUIMIENTO DE CONSTANTES VITALES]
Albe o Díez A ias
82
Ilus ación 56. Compa a i a del mues eo a la ecuencia de ansmisión de da os de 115200 baudios
(a iba) y as la modi icación de la unción con mues eo cada 10ms (abajo).
5. P og ama de And oid
En p ime luga , And oid es un sis ema ope a i o desa ollado po la
emp esa Google pensado p incipalmen e pa a disposi i os mó iles y able as
y, a g andes asgos, se basa en el lenguaje de p og amación Ja a y XML. Ja a
es un lenguaje o ien ado a obje o bas an e pa ecido a C++, y el
uncionamien o de la aplicación se basa en es e lenguaje, mien as que XML
es un lenguaje que si e en e o as cosas como base de la apa iencia e
in e az g á ica del p og ama en cues ión, así como del uso de ecu sos
(idiomas, imágenes, audios…).
Inicialmen e se conside ó dedica menos iempo y es ue zo en la
aplicación de And oid, ecu iendo a la pla a o ma online And oid In en o ,
desa ollada po el Massachuse s Ins i u e o Tecnology (MIT) y o ien ado al
ámbi o de la educación. La pla a o ma dispone de una se ie de ins ucciones
o pseudo-código en o ma de bloques conec ables con una in e az in ui i a y
bas an e lexible.
El obje i o del p og ama es simple: conec a se al disposi i o median e
blue oo h, ecibi los da os de o ma co ec a y inalmen e mos a los po
pan alla. El disposi i o debe conec a se a la di ección MAC del módulo
blue oo h empleado, que en nues o caso es 00:02:5B:00:A0:18. Una ez
es ablecida la conexión de o ma co ec a, un bo ón pe mi i á inicia la
ansmisión de da os desde el disposi i o. De la misma o ma, se pe mi i á
de ene la ansmisión de da os.
En un p incipio, se pensó en desa olla un p og ama sencillo pa a es e
p oyec o, y la pla a o ma And oid In en o es una he amien a ideal pa a ello,
capaz de desa olla aplicaciones sencillas sin necesi a p o undiza en el
ap endizaje de los lenguajes empleados po And oid. El mensaje no se
en iaba en o ma o JSON sino como una cadena de ca ac e es sepa ada
median e un ca ác e de sepa ación, de o ma que la in e p e ación de los
da os e a sencilla pe o menos obus a y no malizada.
6
[SEGUIMIENTO DE CONSTANTES VITALES]
Albe o Díez A ias
84
Finalmen e y a la is a de la g an impo ancia que los disposi i os
mó iles como los basados en ecnología And oid ienen hoy en nues a ida
dia ia, se omó la opo unidad que es e p oyec o b indaba pa a ap ende y
p o undiza sob e el mismo. Se decidió deja la aplicación de And oid In en o
como he amien a pa a comp oba si el disposi i o en ía co ec amen e el
mensaje, de o ma que nos si a de apoyo a la ho a de desa olla la
aplicación y depu a el uncionamien o del p og ama en Ja a que
desa ollemos.
Se modi icó lige amen e en su e sión inal pa a ecibi una cadena en
o ma o JSON en luga de a iables sepa adas po ca ac e es especí icos.
Ilus ación 57. Rep esen ación de las is as de la aplicación de comp obación.
[SEGUIMIENTO DE CONSTANTES VITALES]
6
Albe o Díez A ias
85
Ilus ación 58. Vis a de bloques de pseudo-código de la aplicación de comp obación.
Pa a el desa ollo de la aplicación se empleó And oid S udio, un
so wa e desa ollado po Google y que pe mi e la c eación de p oyec os. En
es a memo ia se p ocede á a comen a an sólo los p incipales a chi os
den o del p oyec o, ob iando o os como los e e en es a plan illas (layou s) o
ecu sos.
Aunque no se en a á a explica oda la e minología y undamen os de
la p og amación en And oid en es a memo ia, hay que comen a una se ie de
é minos o concep os pa a pode en ende los sucesi os apa ados. En p ime
luga y como se ha dicho an e io men e, And oid se undamen a en los
lenguajes Ja a y XML. Ja a es un lenguaje o ien ado a obje o, y po an o se
cons uye en o no a elemen os como clases y a concep os como el de
he encia o mé odos. Una de las clases que emplea emos con And oid es la

6
[SEGUIMIENTO DE CONSTANTES VITALES]
Albe o Díez A ias
86
clase iew. Podemos en ende una iew como un “bloque” o á ea ec angula
que en unción de su con enido de ine una subclase: puede se un ex o
(Tex View), una imagen (ImageView), una lis a de o as iews (Lis View), un
bo ón (Bu on) o se i como plan illas que con ienen o as iews ecibiendo el
nomb e de layou (ViewG oup). Una se ie de a ibu os de inen su posición, su
amaño o su con enido. La disposición y con igu ación inicial de esas iews se
de e mina á en los a chi os XML de la aplicación, y pod án e e encia se en el
código del p og ama en Ja a de la aplicación.
O o concep o que hay que en ende an es de con inua es el de
ac i idades. Una aplicación de And oid puede compone se de di e en es
pan allas, cada una con su p opia disposición de iews di e en e e
independien e y con unas unciones y con ex o comple amen e di e en es. A
cada una de esas pan allas se le asocia una clase especí ica a las que se las
llama ac i idades, y a cada una le co esponde un iche o en Ja a y o o en
XML. Ambos iche os es án elacionados de o ma que el iche o en XML se
asocia al con ex o del iche o en Ja a, co espondiéndose así un en o no
g á ico y odas sus is as a un código de p og ama especí ico.
El p og ama se di ide en dos ac i idades p incipales, la p ime a es una
pan alla in oduc o ia en la que se ecoge án los da os del pacien e: el
nomb e, la edad, la al u a y el peso. Dichos da os se gua da an den o de la
clase Pacien e y se emplea án pa a el cálculo del índice de masa co po al. Al
pulsa un bo ón de con inua , la aplicación nos lle a a la segunda ac i idad en
la que la pan alla nos mues a po pan alla un esumen desplegable con los
da os del pacien e in oducidos an e io men e, un bo ón pa a conec a nos al
disposi i o y una Lis View en la que se isualizan de o ma sin é ica odos los
signos i ales a moni o iza .
[SEGUIMIENTO DE CONSTANTES VITALES]
6
Albe o Díez A ias
87
Ilus ación 59. Vis a de las dos ac i idades de la aplicación de And oid. A la izquie da la ac i idad de
inicio. A la de echa la ac i idad p incipal de isualización de cons an es.
Al pulsa el bo ón de conec a al disposi i o, el hilo p incipal del
p og ama llama a un segundo hilo de conexión y, si la conexión se es ablece
co ec amen e, el hilo de conexión e mina e inicia un segundo hilo inde inido
que ecibe y decodi ica los da os pa a que se puedan mos a en iempo eal
en la Lis View sin que el es o de la aplicación se quede bloqueada. T as
pulsa el bo ón de desconec a e minamos el hilo y la ac i idad uel e al
es ado inicial de la misma, pudiendo pulsa se el bo ón de conexión
nue amen e.
El desa ollo de la aplicación ue un desa ollo i e a i o en la que
algunas de las uncionalidades an es desc i as se modi ica on o
e oluciona on pa a adap a se a las p oblemá icas o mejo a su diseño en e
al plan eamien o inicial. A con inuación se pasa a desc ibi con mayo
6
[SEGUIMIENTO DE CONSTANTES VITALES]
Albe o Díez A ias
88
de enimien o los p incipales pun os del p og ama.
5.1. Clases Pacien e y Cons an eVi al
Pa a el p og ama se han cons uido dos clases pa a almacena los
alo es del usua io y sus signos i ales a moni o iza , Pacien e y
Cons an eVi al. La es uc u a básica de una clase en Ja a la componen una
se ie de a ibu os p i ados (es deci , unas a iables in e nas a las que no se
pueden accede desde ue a de la clase), un cons uc o con el mismo
nomb e que la clase y que llama emos cada ez llamemos a la clase y
median e el cual in oduci emos los a gumen os de la misma, y una se ie de
mé odos a los que pod emos llama an o in e na como ex e namen e
(dependiendo de si son públicos o p i ados) y que pueden abaja o no con
o os mé odos o con los a ibu os de la clase. En o as palab as podemos
en ende los mé odos como unciones in e nas que pod emos llama desde
ue a o no y que, al igual que cualquie o a unción, puede de ol e un alo o
no.
 Pacien e
Es a clase gua da los alo es del nomb e, edad, al u a en
cen íme os y peso en g amos del pacien e como a ibu os. Los
alo es se in oducen como a gumen os a a és de su cons uc o
de clase. La clase dispone de cua o mé odos ge Nomb e(),
ge Edad(), ge Al u a() y ge Peso(), que de uel en los alo es de los
a ibu os del nomb e, la edad, la al u a y el peso espec i amen e.
Al decla a un obje o o una a iable den o de una ac i idad, el
dominio de és a es an sólo la de la p opia ac i idad. La clase
decla ada no exis e en o a ac i idad, y po an o no pod emos
accede a ella. Si que emos pasa los da os gua dados en la clase
pacien e en la ac i idad de inicio a la ac i idad de isualización de
cons an es debemos c ea un in en pa a ansmi i dicha clase de
una ac i idad a o a. Es o se e á al analiza más de enidamen e la
[SEGUIMIENTO DE CONSTANTES VITALES]
6
Albe o Díez A ias
89
ac i idad de inicio más adelan e, pe o pa a pode ansmi i esa
clase a a és del in en es necesa io que nues a clase he ede el
con enido de la clase Se ializable median e el uso de ex ends.
Cuando una clase he eda los mé odos y los da os de o a clase
podemos emplea los en nues a clase como si pe enecie an a
és a. És e es uno de los pila es undamen ales en los que se basa
la p og amación o ien ada a obje os, pe mi iendo así c ea nue as
clases sin ene que p og ama odas sus uncionalidades desde
ce o, pe mi iendo así he eda el con enido de o as ya exis en es y
pe mi iendo su simpli icación y e sa ilidad.
Ex endiendo la he encia de Se ializable a nues a clase pod emos
pasa la como a ibu o al in en que pe mi i á ansmi i la de la
ac i idad inicial a la de moni o ización de cons an es.
Ilus ación 60. Clase Pacien e.
6
[SEGUIMIENTO DE CONSTANTES VITALES]
Albe o Díez A ias
96
“p e e encias”. Una ez accedemos a ellas podemos edi a sus alo es a
a és de lla es: asociamos cada alo de la clase a sus espec i as lla es.
Ilus ación 66. Mé odo gua daDa os() que emplea Sha edP e e ences.
De o ma análoga, el mé odo ca gaDa os() se ejecu a al inicializa las
iews, y accede a las p e e encias median e Sha edP e e ences pa a oma
los alo es asociados a cada una de las lla es y las gua da en sus espec i as
a iables. Luego comp ueba si los alo es in oducidos no es án acíos y de
se así los ca ga pa a mos a los en su espec i o Edi Tex .
Ilus ación 67. Mé odo ca gaDa os() que emplea Sha edP e e ences.
T as ecoge los da os, y pues o que el obje o de ipo Pacien e no
pod á se e e enciado ue a de la clase Ac i idadInicio, debemos llama a un
in en que ejecu e la siguien e ac i idad y le en íe a és a el obje o Pacien e.
Pa a ello se emplea á el mé odo pu Ex a() y s a Ac i i y(). El p ime o añadi á
al in en de ejecu a la siguien e ac i idad un segundo comando de
ans e encia de in o mación a esa segunda ac i idad y eque i á el uso de
una lla e pa a iden i ica el mensaje. Pa a pode en ia una clase de una

[SEGUIMIENTO DE CONSTANTES VITALES]
6
Albe o Díez A ias
97
ac i idad a o a la clase que debemos ansmi i debe he eda de Se ializable,
como se ha explicado an e io men e. Finalmen e, lanzamos la
Ac i idadCons an es a a és de s a Ac i i y().
El mé odo inicializa Views() comp ende an o la inicialización de las
iews a emplea como la ca ga de da os y la inicialización del lis ene . Dicho
mé odo se á llamado al c ea la ac i idad, es o es, den o del mé odo
onC ea e() de la clase Ac i idadInicio.
Ilus ación 68. Mé odo onC ea e() de la Ac i idadInicio, que se ejecu a á al c ea se la ac i idad.
Ilus ación 69. Mé odo inicializa Views() de la Ac i idadInicio.
El mé odo onC ea e() de una ac i idad se ejecu a al lanza se dicha
ac i idad. O os mé odos se ejecu an en dis in os momen os del ciclo de
ejecución de la ac i idad. En el siguien e diag ama se mues an los mé odos
6
[SEGUIMIENTO DE CONSTANTES VITALES]
Albe o Díez A ias
98
que in e ienen en las di e en es e apas del ciclo de una ac i idad.
5.4. Ac i idadCons an es
Es a ac i idad o ma pa e del g ueso de la aplicación, siendo és a la
más impo an e. Su unción es la de mos a po pan alla la lis a de odas las
cons an es i ales y a iables a a és de una Lis View, cuyos elemen os
siguen el pa ón es ablecido en el apa ado e e en e a la clase
Cons an eVi al. Además, ha de dispone de un bo ón de conexión al
disposi i o que si a ambién pa a de ene la ansmisión de da os.
Finalmen e, se deben mos a los da os del pacien e en la cabece a, de una
o ma lo más compac a posible pa a no desplaza la lis a hacia abajo, mo i o
[SEGUIMIENTO DE CONSTANTES VITALES]
6
Albe o Díez A ias
99
po el cual se decidió inclui la Ac i idadInicio.
En p ime luga , al c ea se la ac i idad (en el mé odo onC ea e()), se
llama al mé odo inicializa Views(), que p ime o ealiza un in en pa a ecibi la
clase Pacien e en iada po la ac i idad an e io . Después ellena cada campo
a a és de la unción ellenaPe il(), que iden i ica cada campo a ellena e
in oduce el ex o co espondien e a pa i de los da os de la clase Pe il. En
caso de que alguno de los campos in oducidos se co esponda a no habe
in oducido los alo es, es deci , a los alo es po de ec o, la aplicación
mos a á los ca ac e es “--“.
Ilus ación 70. Mé odo ellenaPe il() de la Ac i idadCosn an es.
A con inuación, el mé odo inicializa Views() inicializa la lis a de
cons an es a pa i de un mensaje p ede e minado cuyo alo cons an e es:
{"da os":{"ppg":0,"oxigeno":0,"pulso":0}}
6
[SEGUIMIENTO DE CONSTANTES VITALES]
Albe o Díez A ias
100
Es e mensaje, jun o con la clase pacien e ob enida, se pasan como
a gumen o al mé odo ge Lis aCons an es() de la clase Ob encionDa os, y se
ob iene la lis a de las cons an es a moni o iza . En es e caso odas ald án 0
has a inicia la ansmisión de da os, excep uando el índice de masa co po al,
que end á el alo de ini i o, pues o que es el único in a ian e.
A con inuación se pasa la lis a como a gumen o pa a c ea un adap e .
Un adap e ac úa de in e media io en e un conjun o de da os, como una
lis a, pa a c ea una se ie de iews a pa i de ellos, de o ma que és os sólo
se ca guen cuando se mues en po pan alla, con el obje o de educi cos es
innecesa ios de CPU.
Pues o que noso os necesi amos que el adap e de uel a un
elemen o de la lis a como el an es desc i o a pa i de una clase de ipo
Cons an eVi al, debemos c ea nues o p opio adap e . La clase
Cons an esAdap e he eda de la clase A ayAdap e , que de uel e una iew
(po ejemplo un elemen o de ipo Lis View) a pa i de un ecu so que se
in oduzca como a gumen o o una lis a de obje os.
Ilus ación 71. Cons uc o de la clase Cons an esAdap e y su a ibu o mRecu sos.
A con inuación, la clase a in oduciendo los a ibu os del obje o de la
lis a en cues ión en sus espec i os campos den o de la plan illa: el icono, el
nomb e de la a iable y su alo . El mé odo con ie e los alo es en s ings
pa a que puedan pasa se a las Tex View del obje o lis a, disc iminando el
alo double del índice de masa co po al del es o de alo es de ipo in . En
caso de que los alo es del mensaje JSON algan 0 la iew indica á que el
alo es nulo median e los ca ac e es “--“.
[SEGUIMIENTO DE CONSTANTES VITALES]
6
Albe o Díez A ias
101
Ilus ación 72. Mé odo ge View() de la clase Cons an esAdap e .
Una ez inicializadas las secciones del pe il y la lis a emos que los
da os del pe il ocupan un espacio po encima del deseado en la pan alla. Es
po an o que se op ó po hace que es a sección ue a desplegable, pa a
pode consul a los da os cuando el usua io equie a, y pode ocul a los
mien as no se es én consul ando.
Pa a ello, c eamos un lis ene de ipo onClick en el layou que con iene
el ex o “Pe il pe sonal”. De es a o ma, al pulsa en él, hacemos que el
layou que con iene los campos de pe il se uel a isible o no,
expandiéndose o se educiéndose. Además añadimos un pequeño icono en
o ma de lecha en el í ulo de la sección, que man enemos siemp e isible,
pa a indica que la pes aña se educe o se expande. Ha emos a ia el icono
de la lecha a a és del lis ene en unción los campos es én expandidos o

6
[SEGUIMIENTO DE CONSTANTES VITALES]
Albe o Díez A ias
102
educidos.
Ilus ación 73. Segmen o del mé odo inicializa Views() de la Ac i idadCons an es, donde se inicializan la
sección desplegable del pe il y la lis a de cons an es a moni o iza .
Queda una úl ima iew po inicializa , que es el bo ón de conexión y
desconexión. És e depende de la exis encia de un adap ado blue oo h en el
disposi i o mó il. La ges ión de los ecu sos y conexión a a és de blue oo h
es una a ea compleja que o ma pa e del g ueso de la ac i idad, y que se i á
desa ollando en las siguien es páginas.
En p ime luga , al que e es ablece una conexión median e blue oo h,
debemos comp oba que nues o disposi i o mó il es capaz de ecibi y en ia
da os median e conexión blue oo h, si es una ca ac e ís ica disponible en
nues o disposi i o, es o es, comp oba la exis encia de un adap ado
blue oo h. A pesa de que hoy día la g an mayo ía de disposi i os cuen an con
adap ado blue oo h, debemos comp oba de o ma p o ocola ia la exis encia
[SEGUIMIENTO DE CONSTANTES VITALES]
6
Albe o Díez A ias
103
del mismo.
P ime o c eamos un obje o de ipo Blue oo hAdap e llamado
b Adap e , a a és del mé odo ge De aul Adap e (). En el mé odo
inicializa Views() comp obamos si el obje o es nulo, en cuyo caso
deshabili amos el Tex View que ha á las eces de bo ón, o o gándole un colo
g is y el ex o “BT no disponible”. En caso de que el adap e no sea nulo, es
deci , que nues o disposi i o sí sea compa ible con ecnología blue oo h,
con inuamos con el p oceso de inicialización del adap e .
Ilus ación 74. Comp obamos si el adap ado blue oo h no exis e, y en caso a i ma i o bloqueamos el
bo ón de conexión.
P ime o debemos asegu a nos que nues a ac i idad de ec e los
posibles cambios en el es ado del adap ado blue oo h de o ma ex e na. Un
ejemplo de ello se ía que el usua io desac i a a el blue oo h desde la pes aña
desplegable de su disposi i o. Pa a ello debemos egis a un
B oadcas Recei e . Un B oadcas Recei e es una clase que nos pe mi i á
susc ibi nos a dichos cambios ex e nos median e el mé odo onRecei e(),
den o del cual se iden i ica á la na u aleza del in en lanzado median e el
mé odo ge Ac ion().
Comp obamos si el in en lanzado se co esponde a un cambio en el
es ado del blue oo h, y de se así, comp obamos a qué es ado se
co esponde: si el blue oo h se ha conec ado, si se ha desconec ado, si ha
pasado a busca disposi i os, e c. A a és de un swi ch() disc iminamos los
es ados que nos in e esan y de inimos las acciones que end án luga en caso
de que dichos cambios de es ado se p oduzcan. En nues o caso, el único
cambio que nos in e esa es si el blue oo h se desconec a como en el ejemplo
desc i o an e io men e, en cuyo caso el bo ón ol e á a mos a el ex o de
conec a se al disposi i o y se es ablece á como alse una a iable a ómica
booleana llamada es adoConexion que en odo momen o indica á el es ado
6
[SEGUIMIENTO DE CONSTANTES VITALES]
Albe o Díez A ias
104
de la conexión.
En adición al cambio de es ado del adap e , se comp oba á si el in en
lanzado co esponde a encon a un disposi i o. En caso a i ma i o, un
cuad o lo an e de ex o nos no i ica á de ello jun o con el nomb e del
disposi i o encon ado.
Ilus ación 75.Obje o de ipo B oadcas Recei e que de inimos pa a nues a ac i idad.
Una ez de inido nues o obje o de ipo B oadcas Recei e , debemos
egis a lo a a és del mé odo egis a B oadcas Recei e (). És e c ea un
il o pa a disc imina los dos ipos de in en que amos a alo a y egis a el
B oadcas Recei e .
Ilus ación 76. Mé odo egis a B oadcas Recei e () de la Ac i idadCons an es.
Vol iendo al mé odo inicializa Views(), as egis a el
B oadcas Recei e es ablecemos el colo de la Tex View que ha á las eces
de bo ón pa a indica que el bo ón es á habili ado y comp obamos el es ado
[SEGUIMIENTO DE CONSTANTES VITALES]
6
Albe o Díez A ias
105
de la conexión a a és de la a iable a ómica booleana an es mencionada.
En unción de si el es ado es conec ado o no, mos amos el ex o
co espondien e en el cuad o de ex o.
Ilus ación 77. T as egis a el B oadcas Recei e es ablecemos el colo y ex o del bo ón de
conexión/desconexión.
A con inuación, debemos inicializa el lis ene de ipo onClick sob e el
cuad o de ex o pa a que haga las eces de bo ón. En p ime luga , El bo ón
debe unciona únicamen e si el bo ón es á habili ado comp obando el es ado
de la a iable a ómica booleana bo onConec a . En de e minados momen os
de la ejecución del p og ama debemos p ocu a que el usua io no in e enga,
p ocu ando que no pueda lanza demasiadas o denes en un co o espacio de
iempo, in i iendo en el uncionamien o no mal del p og ama. Es o se
p oduci á cuando el disposi i o se encuen e conec ándose al disposi i o
blue oo h, p oceso que, como se e á más adelan e, lle a unos segundos y
debemos blinda el co ec o uncionamien o pa a impedi que se sob esa u e
la aplicación dando luga a allos o exis a cualquie ipo de e o .
Si el bo ón es á habili ado comp obamos el es ado de la conexión a
a és de la a iable es adoConexion. Si és a es alse p ocedemos a
conec a nos al disposi i o y ejecu a el hilo de conexión. En caso con a io,
acabamos con dicha conexión ol iendo alse la a iable es adoConexion pa a
e mina con el hilo de conexión, y cambiamos el ex o del bo ón a “conec a
al disposi i o”, dejando lis o al bo ón pa a conec a se nue amen e. Además
einiciamos el con enido de la lis a pa a acia las posibles lec u as.
Pa a conec a nos al disposi i o p ime o debemos comp oba si el
adap ado es á conec ado o no. Todo disposi i o mó il con blue oo h pe mi e
6
[SEGUIMIENTO DE CONSTANTES VITALES]
Albe o Díez A ias
112
A con inuación gua damos la lis a de disposi i os inculados en
nues o conjun o, aho a acío, median e el mé odo
ge BondedDe ices(). Si el conjun o no es á acío lo eco emos, y
po cada elemen o e i icamos si su di ección MAC coincide con la
de nues o módulo. En caso a i ma i o c eamos un socke con el
disposi i o median e el mé odo c eaBlue oo hSocke (). En caso de
alle la c eación del socke se mos a á un mensaje lo an e
indicando que ha habido un e o en el p oceso.
Ilus ación 83. Mé odo c eaBlue oo hSocke () de la Ac i idadCons an es.
Ilus ación 84. Buscamos el disposi i o con nues a di ección MAC y c eamos el socke .
Si el socke se ha c eado con éxi o y no es nulo, p ocedemos a
conec a nos median e el mé odo connec (). Es e mé odo a da
unos segundos, y es el mo i o p incipal po el que se asladó a un
hilo di e en e del p incipal. Si el p oceso de conexión alla ce amos
el socke .
Si hemos conseguido conec a nos es ablecemos c eamos y
lanzamos el hilo de ansmisión de da os. A con inuación
mandamos un mensaje al handle con el ex o que sus i ui á al
ex o del bo ón de conexión, que en es e pun o in o ma de que se
es á conec ando al disposi i o.
En caso de que la lis a es é acía al no encon a el disposi i o con

[SEGUIMIENTO DE CONSTANTES VITALES]
6
Albe o Díez A ias
113
la di ección MAC deseada o no se pueda conec a al disposi i o, se
en ia á un mensaje al handle cambiando el ex o del bo ón a
a és del mé odo ConexionFallida().
Ilus ación 85. P oceso de conexión del hilo de conexión.
Ilus ación 86. Mé odo ConexiónFallida() de la Ac i idadCons an es.
El handle Es adoConexion se inicializa en el mé odo onC ea e() de
la ac i idad. És e ecibe el bundle con su co espondien e lla e
en iado desde el hilo. El mensaje en iado a a és del bundle
con iene el ex o que debe mos a el bo ón en unción de si se ha
podido es ablece la conexión o no. Vol emos a habili a el bo ón y
es ablecemos el ex o en la Tex View del bo ón.
6
[SEGUIMIENTO DE CONSTANTES VITALES]
Albe o Díez A ias
114
Ilus ación 87. Handle del hilo de conexión de la Ac i idadCons an es.
 HiloT ansmisionDa os
En p ime luga , el cons uc o de la clase debe con ene como
a gumen os el socke de conexión c eado, que se gua da á como
a ibu o de la clase.
Ilus ación 88. Cons uc o de la clase HiloT ansmisionDa os.
Un segundo a ibu o de la clase es el co espondien e al lujo de
da os que ecibi emos a a és del socke de conexión, un obje o
de la clase Inpu S eam. Den o del mé odo un() se asocia á ese
lujo de da os c eado al lujo de da os ecibido a a és del socke
que hemos pasado como a gumen o al c ea el hilo median e el
uso del mé odo ge Inpu S eam().
A con inuación se es ablece en ue la a iable es adoConexion y se
ejecu a un bucle que se ejecu a á mien as la a iable
es adoConexión sea ue y no se in e umpa de alguna o ma el
con ex o del hilo. Si el lujo de da os es nulo, salimos del bucle,
pues o que no exis e la ansmisión de da os hacia la aplicación.
El obje i o es ex ae el mensaje en o ma o JSON a pa i del lujo
ecibido. Se gua da en una cadena de ca ac e es el alo de uel o
po el mé odo lee (). El mé odo lee () c ea un bu e de by es y lo
[SEGUIMIENTO DE CONSTANTES VITALES]
6
Albe o Díez A ias
115
asocia con el lujo de da os que hemos c eado. Tomamos del bu e
una cadena, indicando que la cadena de by es se desenc ip a á
siguiendo un código ASCII, desde el inicio de la cadena has a el
inal. El mé odo de uel e la cadena esul an e.
Ilus ación 89. Mé odo lee () de la clase HiloT ansmisionDa os.
Añadimos la cadena de uel a al mensaje ya exis en e y llamamos
al mé odo cons ui Mensaje(). En p ime luga c eamos un índice
en el mensaje pa a encon a el p ime delimi ado de la cadena. El
delimi ado es el ca ác e que di idi á cada uno de los mensajes
que que emos ob ene , en nues o caso es un alo cons an e,
siendo és e el ca ác e de e o no de ca o ‘ n’. Si no se encuen a
el ca ác e salimos del mé odo pa a segui añadiendo más cadenas
al ac ual mensaje a pa i del bu e has a encon a un
delimi ado .
Ex aemos del mensaje desde el inicio del mismo has a el índice
encon ado en una cadena auxilia , y luego ac ualizamos el alo
del mensaje a pa i del índice, de o ma que eliminamos la cadena
ex aída.
Si con iene el inicio del mensaje JSON, pues o que la cadena se ha
ex aído has a el ca ác e de e o no de ca o, signi ica que la
cadena se ha ex aído de o ma comple a y co ec a. En ese caso
en iamos la cadena en el o ma o JSON deseado a a és del
handle median e el mé odo en iaHandle Cons an es(), que c ea á
un bundle con el mensaje a en ia al Handle Cons an es y su
6
[SEGUIMIENTO DE CONSTANTES VITALES]
Albe o Díez A ias
116
co espondien e lla e. El mé odo cons ui Mensaje() se llama a si
mismo nue amen e pa a comp oba si en el mensaje sigue
habiendo o a cadena ex aíble, exis iendo o o índice en la misma.
El mé odo se llama a si mismo has a que no quede ninguna cadena
que ex ae del mensaje, einiciándose el bucle del hilo pa a ecibi
más da os del lujo es ablecido.
Ilus ación 90. Mé odo en iaHandle Cons an es() del HiloT ansmisionDa os.
Ilus ación 91. Mé odo cons ui Mensaje() del HiloT ansmisionDa os.
[SEGUIMIENTO DE CONSTANTES VITALES]
6
Albe o Díez A ias
117
Ilus ación 92. Mé odo un() del hilo de ansmisión de da os.
Finalmen e, el handle asociado al hilo de ansmisión de da os
oma el mensaje del bundle ecibido po el hilo. A con inuación se
ob iene la lis a de cons an es a pa i del mensaje JSON ecibido y
se asocia al Cons an esAdap e de la Lis View como se io
an e io men e.

6
[SEGUIMIENTO DE CONSTANTES VITALES]
Albe o Díez A ias
118
Ilus ación 93. Handle del hilo de ansmisión de da os de la Ac i idadCons an es.
Además, debemos libe a el b oadcas Recei e y el socke den o del
mé odo onDes oy() de la Ac i idadCons an es pa a asegu a nos de que la
conexión se cie a al ce a la aplicación.
Ilus ación 94. Mé odo onDes oy() de la Ac i idadCons an es.
[SEGUIMIENTO DE CONSTANTES VITALES]
6
Albe o Díez A ias
119
Ilus ación 95. Vis a de la Ac i idadCons an es du an e el p oceso de ansmisión de da os.
5.5. O os iche os
Además de las clases y ac i idades mencionadas an e io men e, la
aplicación se compone de o os iche os que se comen a án b e emen e a
con inuación.
En p ime luga en el iche o XML And oidMani es se es ablece á el
nomb e de la aplicación, las ac i idades que componen la aplicación, los
pe misos que eque i á la aplicación como en nues o caso los pe misos de
blue oo h, o el icono que la aplicación mos a á en su acceso di ec o.
A cada ac i idad se le asocia una plan illa o laye con la disposición y
con igu ación de cada iew en lenguaje XML. Además de dispone odas las
iews en el espacio, se puede a ia el colo de las mismas, su amaño, es ilo,
añadi e ec os como ondas al pulsa sob e ellas, e c. Pa a las iews cuyo
6
[SEGUIMIENTO DE CONSTANTES VITALES]
Albe o Díez A ias
120
con enido a ia á en unción de los da os del p og ama se añadi á un
iden i icado a las mismas pa a pode e e encia las como ecu sos desde sus
espec i as ac i idades asociadas. Además, los a ibu os a cambia ( ex o,
colo , ondo…) se de ini án como ools pa a pe mi i su modi icación,
es ableciendo un alo sus i uible o placeholde .
Se incluyen además dos ca pe as den o de ecu sos con los dis in os
a chi os de imagen eque idos o d awables. En ellas se encuen an los iconos
empleados pa a cada uno de los elemen os de la lis a de las a iables a
moni o iza y el icono de la lecha del desplegable del pe il pe sonal de la
Ac i idadCons an es. Cada imagen se encuen a epe ida pa a las di e en es
esoluciones posibles del disposi i o.
Den o de la ca pe a alues se inclui án o os dos iche os XML pa a
códigos de colo es y es ilos, de o ma que cada ac i idad dispond á de una
se ie de colo es y es ilos en unción de los de inidos en es os iche os, y
pod emos e e encia cada colo como ecu so po medio de su e ique a.
Finalmen e, las cadenas que se mues an al usua io en la aplicación
ales como ex os o in o mación, en ez de esc ibi se di ec amen e en el
código del p og ama se han de inido como alo es e e enciables desde
ecu sos. Den o de la ca pe a alues y a su ez den o de la ca pe a s ings,
se c ea án a ios iche os, uno po cada idioma que acep e nues a
aplicación. Pa a ello se c ea á un iche o con su de e minado código de
idioma. Pa a cada iche o XML se de ini á cada cadena a a és de un
iden i icado y su cadena en su espec i o idioma. Así, al emplea es as
cadenas desde el código del p og ama se e e encia á a ellas a pa i de
dicho iden i icado , siendo el esul ado que se mues a po pan alla
dependien e de la con igu ación de idiomas de nues o disposi i o. En And oid
S udio, el idioma p ede e minado es el inglés.
[SEGUIMIENTO DE CONSTANTES VITALES]
6
Albe o Díez A ias
121
Ilus ación 96.Código co espondien e al iche o de ecu sos de s ings en inglés (a iba) y su homólogo
en cas ellano (abajo).
Anexos
[SEGUIMIENTO DE CONSTANTES VITALES]
Albe o Díez A ias
128
//////////////////////////////////////////////////////////////////////////////
oid En ia_Da os()
{
Se ial.p in (lec u a[0]);
Se ial.p in (",");
Se ial.p in (lec u a[1]);
Se ial.p in (",");
Se ial.p in ln(lec u a[2]);
}
//////////////////////////////////////////////////////////////////////////////
loa Lec u a_Vo0()
{
e u n (analogRead(Vo0) * 3.3 * 1000 / 4095);
}
//////////////////////////////////////////////////////////////////////////////
loa Lec u a_Vo1()
{
e u n (analogRead(Vo1) * 3.3 * 1000 / 4095);
}
//////////////////////////////////////////////////////////////////////////////
loa Lec u a_Vo2()
{
e u n (analogRead(Vo2) * 3.3 * 1000 / 4095);
}

[SEGUIMIENTO DE CONSTANTES VITALES]
Anexos
Albe o Díez A ias
129
1.2. ModoPulsos1LED
#de ine B_RATE_RAPIDO 115200
#de ine B_RATE_LENTO 9600
#de ine T_SERVICIO 100
#de ine LED_IR 23
#de ine LED_R 24
#de ine Vo0 A0
#de ine Vo1 A1
#de ine Vo2 A2
unsigned long _ciclo;
in lec u a[3];
/////////////////////////////////////////////////////////////////////////////
oid se up()
{
Se ial.begin(B_RATE_LENTO);
pinMode(LED_IR, OUTPUT);
pinMode(LED_R, OUTPUT);
pinMode(Vo0, INPUT);
pinMode(Vo1, INPUT);
pinMode(Vo2, INPUT);
analogRe e ence(AR_DEFAULT); //Re e encia de AnalogRead a 3.3V
analogW i eResolu ion(10); //10 bi s (0-1023) pa a alo es de
ensión de salida
analogReadResolu ion(12); //12 bi s (0-4095) pa a lec u a de
ensión
digi alW i e(LED_R, LOW);
digi alW i e(LED_IR, LOW);
}
/////////////////////////////////////////////////////////////////////////////
oid loop()
{
_ciclo=mic os();
Pulso_LED(LED_IR);
while((mic os()- _ciclo)<1000) //PERIODO
con inue;
En ia_Da os();
}
/////////////////////////////////////////////////////////////////////////////
oid Pulso_LED(in led)
Anexos
[SEGUIMIENTO DE CONSTANTES VITALES]
Albe o Díez A ias
130
{
unsigned long =mic os();
digi alW i e(led, HIGH);
while((mic os()- )<T_SERVICIO) //TIEMPO DE SERVICIO ON
{
lec u a[0]=analogRead(Vo0);
lec u a[1]=analogRead(Vo1);
lec u a[2]=analogRead(Vo2);
}
digi alW i e(led, LOW);
}
//////////////////////////////////////////////////////////////////////////////
oid En ia_Da os()
{
Se ial.p in (lec u a[0]*3.3*1000/4095);
Se ial.p in (",");
Se ial.p in (lec u a[1]*3.3*1000/4095);
Se ial.p in (",");
Se ial.p in ln(lec u a[2]*3.3*1000/4095);
}
//////////////////////////////////////////////////////////////////////////////
loa Lec u a_Vo0()
{
e u n(analogRead(Vo0)*3.3*1000/4095);
}
//////////////////////////////////////////////////////////////////////////////
loa Lec u a_Vo1()
{
e u n(analogRead(Vo1)*3.3*1000/4095);
}
//////////////////////////////////////////////////////////////////////////////
loa Lec u a_Vo2()
{
e u n(analogRead(Vo2)*3.3*1000/4095);
}
[SEGUIMIENTO DE CONSTANTES VITALES]
Anexos
Albe o Díez A ias
131
1.3. ModoPulsos2LED
#de ine B_RATE_RAPIDO 115200
#de ine B_RATE_LENTO 9600
#de ine T_SERVICIO 200
#de ine LED_IR 23
#de ine LED_R 24
#de ine Vo0 A0
#de ine Vo1 A1
#de ine Vo2 A2
unsigned long _ciclo;
loa lec u a_R[3]={0,0,0};
loa lec u a_IR[3]={0,0,0};
/////////////////////////////////////////////////////////////////////////////
oid se up()
{
Se ial.begin(B_RATE_LENTO);
pinMode(LED_IR, OUTPUT);
pinMode(LED_R, OUTPUT);
pinMode(Vo0, INPUT);
pinMode(Vo1, INPUT);
pinMode(Vo2, INPUT);
analogRe e ence(AR_DEFAULT); //Re e encia de AnalogRead a 3.3V
analogW i eResolu ion(10); //10 bi s (0-1023) pa a alo es de ensión
de salida
analogReadResolu ion(12); //12 bi s (0-4095) pa a lec u a de ensión
digi alW i e(LED_IR, LOW);
digi alW i e(LED_R, LOW);
}
/////////////////////////////////////////////////////////////////////////////
oid loop()
{
_ciclo=mic os();
Pulso_LED(LED_IR);
while((mic os()- _ciclo)<500)
con inue;
Pulso_LED(LED_R);
while((mic os()- _ciclo)<1000)
con inue;
Anexos
[SEGUIMIENTO DE CONSTANTES VITALES]
Albe o Díez A ias
132
En ia_Da os(LED_R);
}
/////////////////////////////////////////////////////////////////////////////
oid Pulso_LED(in led)
{
unsigned long =mic os();
in 0, 1, 2;
digi alW i e(led, HIGH);
while((mic os()- )<T_SERVICIO)
{
0=analogRead(Vo0);
1=analogRead(Vo1);
2=analogRead(Vo2);
}
digi alW i e(led, LOW);
i (led==LED_IR)
{
lec u a_IR[0]= 0*3.3*1000/4095;
lec u a_IR[1]= 1*3.3*1000/4095;
lec u a_IR[1]= 2*3.3*1000/4095;
}
else
{
lec u a_R[0]= 0*3.3*1000/4095;
lec u a_R[1]= 1*3.3*1000/4095;
lec u a_R[2]= 2*3.3*1000/4095;
}
}
//////////////////////////////////////////////////////////////////////////////
oid En ia_Da os(in led)
{
// lec u a=(V0_IR, V1_IR, V0_R, V1_R)
//Salida an es de los il os
Se ial.p in (lec u a_IR[0]);
Se ial.p in (",");
Se ial.p in (lec u a_R[0]);
Se ial.p in (",");
//Salida despues de los il os
Se ial.p in (lec u a_IR[1]);
Se ial.p in (",");
Se ial.p in (lec u a_R[1]);
Se ial.p in (",");
Se ial.p in (lec u a_IR[2]);
Se ial.p in (",");
Se ial.p in ln(lec u a_R[2]);
[SEGUIMIENTO DE CONSTANTES VITALES]
Anexos
Albe o Díez A ias
133
}
//////////////////////////////////////////////////////////////////////////////
loa Lec u a_Vo0()
{
e u n(analogRead(Vo0)*3.3*1000/4095);
}
//////////////////////////////////////////////////////////////////////////////
loa Lec u a_Vo1()
{
e u n(analogRead(Vo1)*3.3*1000/4095);
}
//////////////////////////////////////////////////////////////////////////////
loa Lec u a_Vo2()
{
e u n(analogRead(Vo2)*3.3*1000/4095);
}

Anexos
[SEGUIMIENTO DE CONSTANTES VITALES]
Albe o Díez A ias
134
1.4. P og ama p incipal
#include <A duinoJson.h>
#de ine HC06 Se ial3
#de ine B_RATE_RAPIDO 115200
#de ine B_RATE_LENTO 9600
#de ine SENSIBILIDAD_ALTA 2400
#de ine SENSIBILIDAD_BAJA 400
#de ine SIZE_VECTOR_MEDIA 10
#de ine SIZE_VECTOR_PENDIENTE 10
#de ine LED_IR 23
#de ine LED_R 24
#de ine Vo0 A0
bool pulsoAn e io ;
bool pulso = alse;
in ppm;
in oxigeno;
in du acion_pulso = 0;
in ec o Pulsaciones[SIZE_VECTOR_MEDIA] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
unsigned long _ciclo, _mues eo, comienzo_pulso;
loa V_IR, V_R, pendien e, limi eDe eccion, R;
loa minimo_pendien e = 0;
loa ec o [SIZE_VECTOR_PENDIENTE] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
loa ex emos_IR[2] = {2400, 0};
loa ex emos_R[2] = {2400, 0};
loa ec o R[SIZE_VECTOR_MEDIA] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
//Decla amos el mensaje con o ma o json
S a icJsonDocumen <200> mensaje;
JsonObjec da os = mensaje.c ea eNes edObjec ("da os");
/////////////////////////////////////////////////////////////////////////////
oid se up()
{
while (!Se ial) con inue; //Espe amos a que se inicialice el pue o se ie
while (!HC06) con inue; //Espe amos a que se inicialice el pue o se ie3
del blue oo h
[SEGUIMIENTO DE CONSTANTES VITALES]
Anexos
Albe o Díez A ias
135
delay(1000);
Se ial.begin(B_RATE_LENTO);
HC06.begin(B_RATE_RAPIDO);
pinMode(LED_IR, OUTPUT);
pinMode(LED_R, OUTPUT);
pinMode(Vo0, INPUT);
analogRe e ence(AR_DEFAULT); //Re e encia de AnalogRead a 3.3V
analogW i eResolu ion(10); //10 bi s (0-1023) pa a alo es de ensión de
salida
analogReadResolu ion(12); //12 bi s (0-4095) pa a lec u a de ensión
digi alW i e(LED_IR, LOW);
digi alW i e(LED_R, LOW);
//Inicializamos el mensaje con o ma o json
da os["ppg"] = 0;
da os["oxigeno"] = 0;
da os["pulso"] = 0;
}
/////////////////////////////////////////////////////////////////////////////
oid loop()
{
i (Check())
{
do
{
long unsigned ciclo = millis();
while (millis() - ciclo < 1000)
{
_mues eo=millis();
Ciclo();
}
limi eDe eccion = minimo_pendien e * 1 / 3;
minimo_pendien e = 0;
en iaBlue oo h();
}
while ((V_R < SENSIBILIDAD_ALTA) && (V_IR < SENSIBILIDAD_ALTA) && (V_R >
SENSIBILIDAD_BAJA) && (V_IR > SENSIBILIDAD_BAJA)); //Has a que alguna de las
lec u as se salga del umb al de sensibilidad
Anexos
[SEGUIMIENTO DE CONSTANTES VITALES]
Albe o Díez A ias
136
digi alW i e(LED_R, LOW); //Apagamos los dos leds
digi alW i e(LED_IR, LOW);
}
else
{
long unsigned = millis();
o (in i = 0; i < SIZE_VECTOR_MEDIA; i++) //Reiniciamos los ec o es
{
ec o Pulsaciones[i] = 0;
ec o R[i] = 0;
}
da os["ppg"] = 0;
da os["oxigeno"] = 0;
da os["pulso"] = 0;
//en iaBlue oo h(); //En iamos un mensaje nulo pa a indica que no
es amos midiendo co ec amen e
while (millis() - < 500) con inue;
}
}
/////////////////////////////////////////////////////////////////////////////
oid Pulso_LED(in led)
{
unsigned long = mic os();
loa lec u a;
digi alW i e(led, HIGH);
while ((mic os() - ) < 300)
{
lec u a = Lec u a_Vo0();
}
digi alW i e(led, LOW);
i (led == LED_IR)
V_IR = lec u a;
else
V_R = lec u a;
}
//////////////////////////////////////////////////////////////////////////////
[SEGUIMIENTO DE CONSTANTES VITALES]
Anexos
Albe o Díez A ias
137
oid Ciclo()
{
_ciclo = mic os();
Pulso_LED(LED_IR);
while ((mic os() - _ciclo) < 500) con inue; //Semipe iodo del
apagado de los leds
Pulso_LED(LED_R);
while ((mic os() - _ciclo) < 1000) con inue; //Semipe iodo del
apagado de los leds
pendien e = Ac ualizaVec o Senal(V_IR);
minimo_pendien e = min(pendien e, minimo_pendien e);
ex emos_IR[0] = min(ex emos_IR[0], V_IR);
ex emos_IR[1] = max(ex emos_IR[1], V_IR);
ex emos_R[0] = min(ex emos_R[0], V_R);
ex emos_R[1] = max(ex emos_R[1], V_R);
De ec aPulso();
En ia_Da os();
}
//////////////////////////////////////////////////////////////////////////////
bool Check()
{
unsigned long = millis();
loa lec u a_R, lec u a_IR;
lec u a_R = De ec a Dedo(LED_R);
lec u a_IR = De ec a Dedo(LED_IR);
i ((lec u a_R < SENSIBILIDAD_ALTA) && (lec u a_IR < SENSIBILIDAD_ALTA) &&
(lec u a_R > SENSIBILIDAD_BAJA) && (lec u a_IR > SENSIBILIDAD_BAJA))
//Si es amos den o del umb al de sensibilidad quie e deci que el senso es a
co ec amen e colocado en el dedo
{
e u n ( ue);
}
else
{
e u n ( alse);
}
}
//////////////////////////////////////////////////////////////////////////////
loa De ec a Dedo(in led)
Anexos
[SEGUIMIENTO DE CONSTANTES VITALES]
Albe o Díez A ias
144
2.2. Cons an eVi al
package com.example.and oid.cons an es i ales;
public class Cons an eVi al {
p i a e S ing mNomb e;
p i a e in mValo ;
p i a e double mValo Double;
p i a e in mIcono;
public Cons an eVi al(S ing nomb e, in alo , in icono) {
mNomb e = nomb e;
mValo = alo ;
mIcono = icono;
}
public Cons an eVi al(S ing nomb e, double alo Double, in icono) {
mNomb e = nomb e;
mValo Double= alo Double;
mIcono = icono;
}
public S ing ge Nomb e() {
e u n mNomb e;
}
public in ge Valo () {
e u n mValo ;
}
public double ge Valo Double() {
e u n mValo Double;
}
public in ge Icono() {
e u n mIcono;
}
}

[SEGUIMIENTO DE CONSTANTES VITALES]
Anexos
Albe o Díez A ias
145
2.3. Ob encionDa os
package com.example.and oid.cons an es i ales;
impo and oid.con en . es.Resou ces;
impo and oid.u il.Log;
impo o g.json.JSONObjec ;
impo o g.json.JSONExcep ion;
impo ja a.u il.A ayLis ;
//p i a e s a ic inal S ing RESPUESTA =
"{ "da os ":{ "ppg ":1000, "oxigeno ":98, "pulso ":60}}";
public inal class Ob encionDa os {
p i a e Ob encionDa os(S ing json){
}
public s a ic A ayLis <com.example.and oid.cons an es i ales.Cons an eVi al>
ge Lis aCons an es
(Pacien e pacien e, S ing mensaje, Resou ces ){
A ayLis <com.example.and oid.cons an es i ales.Cons an eVi al>
lis aCons an esVi ales =
new A ayLis <>();
y {
JSONObjec jsonObjec = new JSONObjec (mensaje);
JSONObjec da os = jsonObjec .ge JSONObjec ("da os");
lis aCons an esVi ales.add(new
com.example.and oid.cons an es i ales.Cons an eVi al
( .ge S ing(R.s ing.imc), calculaImc(pacien e),
R.d awable.ic_imc_ o eg ound));
lis aCons an esVi ales.add(new
com.example.and oid.cons an es i ales.Cons an eVi al
( .ge S ing(R.s ing.ppg), da os.ge In ("ppg"),
R.d awable.ic_ppg_ o eg ound));
lis aCons an esVi ales.add(new
com.example.and oid.cons an es i ales.Cons an eVi al
( .ge S ing(R.s ing.oxigeno), da os.ge In ("oxigeno"),
R.d awable.ic_oxigeno_ o eg ound));
lis aCons an esVi ales.add(new
com.example.and oid.cons an es i ales.Cons an eVi al
( .ge S ing(R.s ing.ppm), da os.ge In ("pulso"),
R.d awable.ic_co azon_ o eg ound));
}
ca ch (JSONExcep ion e){
Log.e("Ob encionDa os", "E o en la ex acción del o ma o JSON", e);
}
e u n lis aCons an esVi ales;
}
p i a e s a ic double calculaImc(@o g.je b ains.anno a ions.No Null Pacien e
pacien e){
double al u a = pacien e.ge Al u a();
double peso = pacien e.ge Peso();
i (al u a>0 && peso>0)
e u n peso/(al u a*al u a/10000);
else
e u n -1;
}
}
Anexos
[SEGUIMIENTO DE CONSTANTES VITALES]
Albe o Díez A ias
146
2.4. Ac i idadInicio
package com.example.and oid.cons an es i ales;
impo and oid.con en .Con ex ;
impo and oid.con en .In en ;
impo and oid.con en .Sha edP e e ences;
impo and oid.suppo . 7.app.AppCompa Ac i i y;
impo and oid.os.Bundle;
impo and oid.u il.Log;
impo and oid. iew.View;
impo and oid.widge .Edi Tex ;
impo and oid.widge .Tex View;
public class Ac i idadInicio ex ends AppCompa Ac i i y {
Edi Tex nomb eEdi Tex ;
Edi Tex edadEdi Tex ;
Edi Tex al u aEdi Tex ;
Edi Tex pesoEdi Tex ;
Tex View con inua ;
S ing nomb e;
in edad;
in al u a;
in peso;
Sha edP e e ences p e e encias;
/*ON CREATE*/
@O e ide
p o ec ed oid onC ea e(Bundle sa edIns anceS a e) {
supe .onC ea e(sa edIns anceS a e);
se Con en View(R.layou .ac i idad_inicio);
inicializa Views();
}
/* Inicializa odas las is as y lis ene s */
p i a e oid inicializa Views(){
nomb eEdi Tex = (Edi Tex ) indViewById(R.id.nomb e);
edadEdi Tex = (Edi Tex ) indViewById(R.id.edad);
al u aEdi Tex = (Edi Tex ) indViewById(R.id.al u a);
pesoEdi Tex = (Edi Tex ) indViewById(R.id.peso);
con inua = (Tex View) indViewById(R.id.con inua );
/*Ca gamos los da os de la sesión an e io pa a que apa ezcan ya en las
edi Tex iews*/
ca gaDa os();
/*C eamos un lis ene pa a pasa a la siguien e ac i idad y en ia a es a
los da os del
pacien e ecogidos*/
con inua .se OnClickLis ene (new View.OnClickLis ene () {
@O e ide
public oid onClick(View iew) {
y{
Pacien e pacien e = de uel eDa os();
gua daDa os(pacien e);
In en in en = new In en (Ac i idadInicio. his,
com.example.and oid.cons an es i ales.Ac i idadCons an es.class);
[SEGUIMIENTO DE CONSTANTES VITALES]
Anexos
Albe o Díez A ias
147
in en .pu Ex a("pacien e", pacien e);
s a Ac i i y(in en );
}
ca ch (E o e){
Log.e("Conec a ", "E o al inicializa el pe il del
pacien e. " +
"In oduzca los da os co ec amen e", e);
}
}
});
}
/*De uel e una clase Pacien e con los da os que el usua io ha in oducido en
los campos de
ex o*/
p i a e Pacien e de uel eDa os() {
/*En caso de que el usua io no in oduzca alguno de los alo es se
in oducen alo es po
de ec o*/
i (nomb eEdi Tex .ge Tex (). oS ing().ma ches(""))
nomb e = ge S ing(R.s ing.sin_nomb e);
else
nomb e = nomb eEdi Tex .ge Tex (). oS ing();
i (edadEdi Tex .ge Tex (). oS ing().ma ches(""))
edad = -1;
else
edad = In ege .pa seIn (edadEdi Tex .ge Tex (). oS ing());
i (al u aEdi Tex .ge Tex (). oS ing().ma ches(""))
al u a = -1;
else
al u a = In ege .pa seIn (al u aEdi Tex .ge Tex (). oS ing());
i (pesoEdi Tex .ge Tex (). oS ing().ma ches(""))
peso = -1;
else
peso = In ege .pa seIn (pesoEdi Tex .ge Tex (). oS ing());
e u n new Pacien e(nomb e, edad, al u a, peso);
}
/*Gua damos los da os in oducidos pa a la siguien e sesión*/
p i a e oid gua daDa os(Pacien e pacien e) {
p e e encias = ge Sha edP e e ences("p e e encias", Con ex .MODE_PRIVATE);
Sha edP e e ences.Edi o edi o = p e e encias.edi ();
edi o .pu S ing("KEY_NOMBRE", pacien e.ge Nomb e());
edi o .pu In ("KEY_EDAD", pacien e.ge Edad());
edi o .pu In ("KEY_ALTURA", pacien e.ge Al u a());
edi o .pu In ("KEY_PESO", pacien e.ge Peso());
edi o .apply();
}
/*Ca gamos las p e e encias gua dadas, y en caso de no encon a se se
in oducen alo es po
de ec o*/
p i a e oid ca gaDa os() {
p e e encias = ge Sha edP e e ences("p e e encias", Con ex .MODE_PRIVATE);
nomb e = p e e encias.ge S ing("KEY_NOMBRE",
ge S ing(R.s ing.sin_nomb e));
edad = p e e encias.ge In ("KEY_EDAD",-1);
al u a = p e e encias.ge In ("KEY_ALTURA",-1);
Anexos
[SEGUIMIENTO DE CONSTANTES VITALES]
Albe o Díez A ias
148
peso = p e e encias.ge In ("KEY_PESO",-1);
i (!(nomb e.equals(ge S ing(R.s ing.sin_nomb e)))){
nomb eEdi Tex .se Tex (nomb e);
}
i (edad!=-1){
edadEdi Tex .se Tex (In ege . oS ing(edad));
}
i (al u a!=-1){
al u aEdi Tex .se Tex (In ege . oS ing(al u a));
}
i (peso!=-1){
pesoEdi Tex .se Tex (In ege . oS ing(peso));
}
}
}
[SEGUIMIENTO DE CONSTANTES VITALES]
Anexos
Albe o Díez A ias
149
2.5. Ac i idadCons an es
package com.example.and oid.cons an es i ales;
impo and oid.anno a ion.Supp essLin ;
impo and oid.con en .Con ex ;
impo and oid.blue oo h.Blue oo hAdap e ;
impo and oid.blue oo h.Blue oo hDe ice;
impo and oid.blue oo h.Blue oo hSocke ;
impo and oid.con en .B oadcas Recei e ;
impo and oid.con en .In en ;
impo and oid.con en .In en Fil e ;
impo and oid.os.Build;
impo and oid.suppo .anno a ion.Requi esApi;
impo and oid.suppo . 7.app.AppCompa Ac i i y;
impo and oid.os.Bundle;
impo and oid.u il.Log;
impo and oid. iew.View;
impo and oid.widge .ImageView;
impo and oid.widge .Linea Layou ;
impo and oid.widge .Lis View;
impo and oid.widge .Tex View;
impo and oid.widge .Toas ;
impo o g.je b ains.anno a ions.No Null;
impo ja a.io.Bu e edReade ;
impo ja a.io.IOExcep ion;
impo ja a.io.Inpu S eam;
impo ja a.lang. e lec .Me hod;
impo and oid.os.Handle ;
impo and oid.os.Message;
impo ja a.u il.A ayLis ;
impo ja a.u il.Se ;
impo ja a.u il.UUID;
impo ja a.u il.concu en .a omic.A omicBoolean;
@Supp essWa nings("se ial")
public class Ac i idadCons an es ex ends AppCompa Ac i i y {
Tex View conec a Tex View;
Tex View nomb eTex View;
Tex View edadTex View;
Tex View al u aTex View;
Tex View pesoTex View;
Lis View lis aCons an esView;
Linea Layou da os_pe il;
Linea Layou de alles_pe il;
ImageView lecha;
A ayLis <Cons an eVi al> lis aCons an esVi ales;
p i a e Blue oo hAdap e b Adap e = Blue oo hAdap e .ge De aul Adap e ();
p i a e s a ic inal in REQUEST_ENABLE_BT = 1;
p i a e inal A omicBoolean es adoConexion = new A omicBoolean( alse);
p i a e inal A omicBoolean bo onConec a = new A omicBoolean( ue);
Se <Blue oo hDe ice> lis aDisposi i os = null;
p i a e s a ic inal S ing di eccion = "00:02:5B:00:A0:18";
p i a e s a ic inal S ing MENSAJE_PREDETERMINADO =
"{ "da os ":{ "ppg ":0, "oxigeno ":0, "pulso ":0}}";
public Blue oo hSocke b Socke = null;
p i a e s a ic inal UUID MI_UUID = UUID. omS ing("00001101-0000-1000-8000-
00805F9B34FB");
Pacien e pacien e = new Pacien e("",-1,-1,-1);
Handle handle Cons an es;
Handle handle Es adoConexion;

Anexos
[SEGUIMIENTO DE CONSTANTES VITALES]
Albe o Díez A ias
150
@O e ide
p o ec ed oid onC ea e(Bundle sa edIns anceS a e) {
supe .onC ea e(sa edIns anceS a e);
se Con en View(R.layou .ac i idad_cons an es);
inicializa Views();
handle Cons an es = new Handle () {
@O e ide
public oid handleMessage(Message msg) {
Bundle bundle = msg.ge Da a();
S ing json = bundle.ge S ing("lla eCons an es");
lis aCons an esVi ales =
Ob encionDa os.ge Lis aCons an es(pacien e,
json, ge Resou ces());
Cons an esAdap e adap e = new
Cons an esAdap e (ge Applica ionCon ex (),
lis aCons an esVi ales, ge Resou ces());
lis aCons an esView = (Lis View) indViewById(R.id.lis a);
lis aCons an esView.se Adap e (adap e );
}
};
handle Es adoConexion = new Handle () {
@O e ide
public oid handleMessage(Message msg) {
Bundle bundle = msg.ge Da a();
S ing es ado = bundle.ge S ing("lla eConexion");
i (es ado==ge S ing(R.s ing.conec a )){
Toas .makeTex (ge BaseCon ex (),
ge S ing(R.s ing.no_compa ibles),
Toas .LENGTH_LONG).show();
}
conec a Tex View.se Tex (es ado);
bo onConec a .se ( ue); //Vol emos a
habili a el bo ón
}
};
}
@O e ide
p o ec ed oid onAc i i yResul (in eques Code, in esul Code, In en da a)
{
swi ch( eques Code)
{
case REQUEST_ENABLE_BT:
{
i ( esul Code == RESULT_OK)
{
Toas .makeTex (ge BaseCon ex (), ge Tex ((R.s ing.buscando)),
Toas .LENGTH_LONG).show();
bo onConec a .se ( alse);
conec a Tex View.se Tex (ge S ing(R.s ing.conec ando));
Es ablece Conexion hiloEs ablece Conexion = new
Es ablece Conexion();
hiloEs ablece Conexion.s a ();
}
else
{
Toas .makeTex ( his, ge S ing(R.s ing.pe icion_cancelada),
Toas .LENGTH_SHORT).show();
}
b eak;
}
de aul :
b eak;
}
}
[SEGUIMIENTO DE CONSTANTES VITALES]
Anexos
Albe o Díez A ias
151
@O e ide
public oid onDes oy() {
supe .onDes oy();
his.un egis e Recei e (b oadcas Recei e );
i (b Socke !=null) {
y {
b Socke .close();
es adoConexion.se ( alse);
}
ca ch (IOExcep ion e){
Log.e("Cie e de socke ", "E o al ce a el socke .", e);
}
}
}
/* Inicializa odas las is as y lis ene s */
p i a e oid inicializa Views() {
/*In en amos ca ga los da os del pacien e c eados en la ac i idad inicial
y usamos el
adap e pa a mos a los en la lis View*/
y{
pacien e = (Pacien e)
ge In en ().ge Ex as().ge Se ializable("pacien e");
ellenaPe il(pacien e);
lis aCons an esVi ales = Ob encionDa os.ge Lis aCons an es(pacien e,
MENSAJE_PREDETERMINADO, ge Resou ces());
Cons an esAdap e adap e = new Cons an esAdap e ( his,
lis aCons an esVi ales,
ge Resou ces());
lis aCons an esView = (Lis View) indViewById(R.id.lis a);
lis aCons an esView.se Adap e (adap e );
}
ca ch (E o e){
Log.e("Ca ga lis a", "E o al ca ga la lis a de da os", e);
}
/*C eamos un lis ene en la is a del pe il que pe mi i a desplega y
con ae los da os */
conec a Tex View = (Tex View) indViewById(R.id.conec a );
da os_pe il = (Linea Layou ) indViewById(R.id.da os_pe il);
de alles_pe il = (Linea Layou ) indViewById(R.id.de alles_pe il);
lecha = (ImageView) indViewById(R.id. lecha);
de alles_pe il.se Visibili y(View.GONE);
lecha.se Backg oundResou ce(R.d awable. lecha_expandi );
da os_pe il.se OnClickLis ene (new View.OnClickLis ene () {
@O e ide
public oid onClick(View ) {
i (de alles_pe il.ge Visibili y()==View.GONE) {
de alles_pe il.se Visibili y(View.VISIBLE);
lecha.se Backg oundResou ce(R.d awable. lecha_con ae );
}
else {
de alles_pe il.se Visibili y(View.GONE);
lecha.se Backg oundResou ce(R.d awable. lecha_expandi );
}
}
});
/* Comp obamos si nues o disposi i o dispone de Blue oo h. Si no es así,
el bo ón pa a
conec a se al mismo pe manece á inhabili ado */
Anexos
[SEGUIMIENTO DE CONSTANTES VITALES]
Albe o Díez A ias
152
i (b Adap e == null)
{
conec a Tex View.se Backg oundResou ce(R.colo .colo Dissabled);
conec a Tex View.se Tex (ge S ing(R.s ing.BT_no_disponible));
}
else {
egis a B oadcas Recei e ();
conec a Tex View.se Backg oundResou ce(R.colo .colo P ima y);
/* Comp obamos si el Blue oo h es á ac i o o no y cambiamos el ex o
aco de a ello */
i (es adoConexion.ge ()) {
conec a Tex View.se Tex (ge S ing(R.s ing.desconec a ));
}
else {
conec a Tex View.se Tex (ge S ing(R.s ing.conec a ));
}
/* Es ablecemos la unción del bo ón pa a conec a nos o desconec a nos
*/
conec a Tex View.se OnClickLis ene (new View.OnClickLis ene () {
@O e ide
public oid onClick(View pulsado ) {
i (bo onConec a .ge ()) { //Si es á
habili ado el bo ón
y {
i (!(es adoConexion.ge ())) { //Si el hilo
no es á ac i o
i (!b Adap e .isEnabled()) {
conec a B (b Adap e );
} else {
Toas .makeTex (ge BaseCon ex (),
ge Tex ((R.s ing.buscando)),
Toas .LENGTH_LONG).show();
bo onConec a .se ( alse);
//Deshabili amos el bo ón
conec a Tex View.se Tex (ge S ing(R.s ing.conec ando));
Es ablece Conexion hiloEs ablece Conexion =
new Es ablece Conexion();
hiloEs ablece Conexion.s a ();
}
} else { //Si el
hilo es á ac i o
es adoConexion.se ( alse);
conec a Tex View.se Tex (ge S ing(R.s ing.conec a ));
lis aCons an esVi ales =
Ob encionDa os.ge Lis aCons an es(pacien e,
MENSAJE_PREDETERMINADO, ge Resou ces());
Cons an esAdap e adap e = new Cons an esAdap e
(ge Applica ionCon ex (),
lis aCons an esVi ales,
ge Resou ces());
lis aCons an esView = (Lis View)
indViewById(R.id.lis a);
lis aCons an esView.se Adap e (adap e );
}
} ca ch (E o e) {
e.p in S ackT ace();
}
}
}
});
}
}
/* Ca ga los da os del pacien e y c ea la is a del pe il, con la opcion de
[SEGUIMIENTO DE CONSTANTES VITALES]
Anexos
Albe o Díez A ias
153
con ae y
expandi los de alles */
@Supp essLin ("Se Tex I18n")
p i a e oid ellenaPe il(@No Null Pacien e pacien e){
/* Tomamos los alo es de la clase pacien e con los da os que hemos omado
en la ac i idad
del inicio y es ablecemos los alo es de los ex iews co espondien es
*/
nomb eTex View = (Tex View) indViewById(R.id.nomb e);
nomb eTex View.se Tex (pacien e.ge Nomb e());
edadTex View = (Tex View) indViewById(R.id.edad);
in edad = pacien e.ge Edad();
i (edad==-1){
edadTex View.se Tex ("--");
}
else {
edadTex View.se Tex (In ege . oS ing(edad));
}
al u aTex View = (Tex View) indViewById(R.id.al u a);
in al u a = pacien e.ge Al u a();
i (al u a==-1){
al u aTex View.se Tex ("--");
}
else{
al u aTex View.se Tex (In ege . oS ing(al u a));
}
pesoTex View = (Tex View) indViewById(R.id.peso);
in peso = pacien e.ge Peso();
i (peso==-1){
pesoTex View.se Tex ("--");
}
else{
pesoTex View.se Tex (In ege . oS ing(peso));
}
}
/*Conec a o desconec a el Blue oo h*/
p i a e oid conec a B (@No Null Blue oo hAdap e b Adap e ) {
/* Si el disposi i o es a apagado en onces lo encendemos, buscamos
disposi i os compa ibles,
y nos conec amos de se posible */
i (!(b Adap e .isEnabled())) {
y {
/* Pedimos pe misos al usua io pa a conec a el Blue oo h */
In en enableB In en = new
In en (Blue oo hAdap e .ACTION_REQUEST_ENABLE);
s a Ac i i yFo Resul (enableB In en , REQUEST_ENABLE_BT);
} ca ch (E o e) {
Log.e("Ca ga lis a", "E o al ca ga la lis a de da os", e);
}
}
}
/* Regis amos el b oadcas ecei e */
p i a e oid egis a B oadcas Recei e () {
In en Fil e il o = new
In en Fil e (Blue oo hAdap e .ACTION_STATE_CHANGED);
il o.addAc ion(Blue oo hDe ice.ACTION_FOUND);
his. egis e Recei e (b oadcas Recei e , il o);