MONITORIZACIÓN WIRELESS DE CONSTANTES VITALES DE UN BEBÉ TITULACIÓN: INGENIERÍA AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL AUTOR: Miguel María García Jiménez DIRECTOR: Enrique Cantó Navarro FECHA: Mayo / 2011. Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial INDICE: 1 2 Introducción y Objetivos ....................................................................................... 4 1.1 Introducción................................................................................................... 4 1.2 Antecedentes.................................................................................................. 5 1.3 Objetivo del Proyecto .................................................................................... 8 Memoria descriptiva .............................................................................................. 9 2.1 Nociones sobre la Temperatura Corporal...................................................... 9 2.1.1 Definición .............................................................................................. 9 2.1.2 Zonas de Lectura ................................................................................. 10 2.1.3 Valores, Alteraciones y Terminología................................................. 10 2.2 Módulo 1: Equipo Inalámbrico con Sensor de Temperatura....................... 12 2.2.1 2.3 Diagrama de Bloques........................................................................... 12 Medición de la Temperatura Corporal. Sensores. ....................................... 14 2.3.1 Termopares .......................................................................................... 14 2.3.2 RTD’s. ................................................................................................. 18 2.3.3 Termistores .......................................................................................... 22 2.3.4 Acondicionamiento de la Señal. .......................................................... 26 2.3.5 Sensores de Temperatura con Semiconductores. ................................ 27 2.3.6 Elección Final ...................................................................................... 30 2.4 Comunicación Wireless entre Módulos....................................................... 33 2.4.1 ZigBee ................................................................................................. 33 2.4.2 IEEE 802.15.4 ..................................................................................... 35 2.4.2.1 Arquitectura de los Protocolos........................................................ 36 2.4.2.2 Nivel Físico ..................................................................................... 36 2.4.2.3 Nivel Enlace de Datos..................................................................... 37 2.4.3 Especificación Zigbee.......................................................................... 38 2.4.4 Dispositivos que Constituyen una Red Zigbee.................................... 39 2.4.5 Comunicaciones y Descubrimientos de Dispositivos.......................... 40 2.4.6 Modos de Funcionamiento .................................................................. 40 2.4.7 Modelo de Redes Zigbee ..................................................................... 43 2.4.8 Otros Medios de Transmisión de Datos y Elección Final ................... 46 2.5 Módulos Zigbee en el Mercado................................................................... 51 2.5.1 2.6 Elección Final ...................................................................................... 52 El Microcontrolador .................................................................................... 54 2 Monitorización Wireless Constantes Vitalesde un bebé 2.6.1 Función ................................................................................................ 54 2.6.2 Requisitos ............................................................................................ 54 2.6.3 Alternativas.......................................................................................... 56 2.6.4 Elección Final ...................................................................................... 56 2.7 Módulo 2: Equipo de Sobremesa ................................................................ 58 2.7.1 Funciones:............................................................................................ 58 2.7.2 Diagrama de Bloques: ......................................................................... 58 2.7.3 El módulo de comunicación inalámbrica. ........................................... 59 2.7.4 El módulo LCD. .................................................................................. 59 2.7.5 Pulsadores............................................................................................ 63 2.7.6 Zumbador ............................................................................................ 64 2.7.7 Alimentación ....................................................................................... 64 2.8 3 Automática y Electrónica Industrial Manual de Funcionamiento ......................................................................... 67 MEMORIA DE CÁLCULO................................................................................ 68 3.1 Diagrama de Flujo Módulo 1: Equipo Inalámbrico con Sensor de Tª......... 68 3.2 Diagrama de Flujo Módulo 2: Módulo de Sobremesa ................................ 74 3.3 Batería Módulo 1: Módulo inalámbrico ...................................................... 83 3.4 Datos experimentales................................................................................... 85 4 PLANOS.............................................................................................................. 86 5 PRESUPUESTO.................................................................................................. 93 5.1 Mediciones .................................................................................................. 93 5.2 Cuadro de Precios Unitarios ........................................................................ 93 5.3 Cuadro de Precios Descompuestos.............................................................. 95 5.4 Presupuesto.................................................................................................. 99 5.5 Resumen del Presupuesto .......................................................................... 100 6 CONCLUSIONES............................................................................................. 101 7 ANEXOS ........................................................................................................... 103 7.1 Programa en CCS Módulo 1...................................................................... 103 7.2 Programa en CCS Módulo 2...................................................................... 109 7.3 Ficheros ..................................................................................................... 127 3 Monitorización Wireless Constantes Vitalesde un bebé 1 Introducción y Objetivos 1.1 Introducción Automática y Electrónica Industrial Han pasado alrededor de 2.500 años desde que se fundó la primera Escuela de Medicina Occidental. Muchos han sido los médicos e investigadores que han ido desde la anestesia a la vacuna, pasando por el endoscopio y los antibióticos. Numerosos han sido los inventos y descubrimientos que se han producido en el último siglo y medio que han permitido sentar las bases de la actual ciencia médica. Para muchos, estos avances han pasado inadvertidos a lo largo de los años debido al trepidante ritmo tecnológico que le ha dado la tecnología. Hace sólo unos ciento cincuenta años parecía casi un sueño realizar una operación quirúrgica sin que el paciente sufriera. Hoy en día, las intervenciones resultan menos traumáticas y los períodos postoperatorios se han reducido notablemente gracias a la presencia de la tecnología en el ejercicio de la medicina. Se han aplicado cada vez más y más tecnologías para lograr las condiciones óptimas en cualquier intervención quirúrgica. Se están utilizando los avances no sólo para curar sino también para prevenir enfermedades así como para todo tipo de investigaciones médicas, las cuales, gracias a la tecnología han realizado importantes descubrimientos. Los expertos se han ocupado de la incorporación de los avances tecnológicos en la práctica de la medicina, por lo que se prevé un cambio radical en la ciencia médica del futuro. En la actualidad, la tecnología médica ha traspasado la frontera de hospitales y centros de salud y día a día se incorporan nuevos equipos que mejoran la calidad de vida de los ciudadanos. Estos equipos basan su éxito en su sencillez de uso, la calidad y precisión de sus medidas y su bajo coste. Como ejemplos, podemos citar los medidores de tensión arterial de muñeca, termómetros digitales, medidores de glucosa en sangre, pulsímetros, audífonos… En el presente proyecto, se implementará un dispositivo de medición de temperatura de bajo coste y wireless, que permitirá conocer la temperatura de una persona, adulta o bebé, a distancia. 4 Monitorización Wireless Constantes Vitalesde un bebé 1.2 Automática y Electrónica Industrial Antecedentes La temperatura corporal es una de las constantes vitales que nos indica el estado de salud de una persona, ya sea en su estado adulto o durante la niñez. La fiebre (temperatura corporal elevada) es uno de los síntomas que nos indican enfermedad. Existen en el mercado muchos tipos de termómetros para medir la temperatura, además de diferentes métodos, cada uno ofrece ventajas y desventajas de acuerdo a la edad, colaboración y personalidad de la persona o niño a la que se va a medir la temperatura. Los termómetros que podemos encontrar son los siguientes: Temperatura táctil. Es la medición de la temperatura utilizando el tacto tocando a la persona, este método no ofrece ninguna garantía acerca del nivel exacto de la temperatura, simplemente es una forma de saber si tiene fiebre para luego usar un termómetro para la medición. Termómetro de vidrio. Estos termómetros ya no se encuentran en el mercado, aunque su utilización estuvo muy extendida hasta su prohibición. Pueden medir la temperara de forma precisa y de fácil medición, pero requieren mayor tiempo para hacer las mediciones (oral y rectal 3 minutos, axilar 8 a 10 minutos). Al ser de vidrio pueden romperse con facilidad, por lo que no son aconsejados debido a que el vidrio roto y su contenido de mercurio (tóxico) son dañinos para la salud, tienen la punta sólida y son de difícil lectura porque se debe buscar el ángulo en el cual se puede visualizar la banda de mercurio. Figura 1. Termómetro de vidrio Termómetros digitales Sirven para medir la fiebre de forma precisa, rápida, segura y fácil de leer y fácil medición. Precisa porque utilizan sensores de temperatura; rápida porque basta un minuto para obtener la medida; segura porque cuentan con una punta flexible, donde se ubica el sensor, lo que les da menor probabilidad a romperse y no contienen mercurio; y fáciles de leer porque cuentan con una pantalla digital que muestra la temperatura obtenida de la medición. 5 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial Figura 2. Termómetro digital Termómetros de oído Son los más costosos, estos termómetros miden el calor emitido en el tímpano y el tejido circundante en el interior del conducto auditivo por medio de un infrarrojo, se obtiene una medición precisa siempre y cuando se haya colocado correctamente dentro del canal auditivo, de lo contrario, el infrarrojo no podrá medir la temperatura o arrojará un dato erróneo. El tiempo de la medición es el más rápido, y son fáciles de leer al contar con una pantalla digital. Figura 3. Termómetro de oído Termómetros de tira plástica Es un dispositivo que se coloca en la frente de los niños y dan valores de temperatura poco confiables, son de fácil lectura pero al igual que el método de medición de la temperatura táctil, le indican si el niño tiene fiebre, y es un anticipo al uso de otro tipo de termómetro. Figura 4. Termómetros de tira plástica Termómetros de chupete Dispositivo que se coloca en los chupones de los bebés, sus valores también son poco confiables, al igual que la temperatura táctil y los termómetros de tira plástica sólo indican si el niño tiene fiebre 6 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial Figura 5. Termómetro de chupete Termómetro infrarrojo Este tipo de termómetros no necesitan del contacto físico para medir la temperatura. En pocos segundos, a partir de sensores infrarrojos permiten obtener un valor de la temperatura de la piel sobre la cual están dirigidos. La distancia a la que se debe encontrar el termómetro varía entre los 0’5 cm. a los 10 cm. Figura 6. Termómetro infrarrojo A pesar de existen multitud de tipos de termómetros, todos tienen un elemento común de funcionamiento: - En personas enfermas o niños, es necesaria la presencia de un adulto para realizar la medición. - La lectura de la medición se realiza al lado de la persona de la cual se quiere saber su temperatura. 7 Monitorización Wireless Constantes Vitalesde un bebé 1.3 Automática y Electrónica Industrial Objetivo del Proyecto Todos los padres han vivido alguna vez la siguiente situación: despertarse a media noche para encontrar a su hijo parado al lado de su cama, rojo, acalorado y sudando. La frente de su pequeño está caliente. De inmediato, sospechan que su hijo tiene fiebre. A partir de ese momento, la máxima preocupación de los padres es vigilar la temperatura corporal de su hijo. Esto implica despertar al niño varias veces para tomarle la temperatura. Actualmente, todos los termómetros existentes en el mercado necesitan de un adulto para medir la temperatura en niños y en bebes. Durante el día, la necesidad de estar con el niño para medir su temperatura puede parecer no muy importante, sin embargo, por la noche, implica que tanto el niño como el adulto, deben despertarse varias veces a lo largo de la noche para controlar la temperatura. Este hecho, hace que tanto los padres como los niños no consigan descansar, comenzando el nuevo día más agotados. En el presente proyecto, se desea implementar un dispositivo que monitorice la temperatura corporal de un bebé o un niño, y que envíe esta medición mediante un sistema inalámbrico a otro dispositivo el cual avisará a los padres cuando el niño presente fiebre. Para conseguir este cometido, se desarrollarán dos dispositivos, un equipo de sobremesa y un equipo a batería, ambos se comunicarán de manera inalámbrica. El dispositivo de sobremesa actuará de interfaz con los usuarios. Su misión es recibir la información que le envíe el equipo de batería, mostrarla por pantalla y avisar en caso de fiebre. El dispositivo de batería se encontrará en permanente contacto con el niño, realizará la medición de temperatura y la enviará al dispositivo de sobremesa. En ambos equipos, se buscará su bajo consumo, bajo coste, pequeñas dimensiones y alta precisión y resolución, siendo estas características más críticas en el caso del dispositivo a baterías. 8 Monitorización Wireless Constantes Vitalesde un bebé 2 Memoria descriptiva 2.1 Nociones sobre la Temperatura Corporal Automática y Electrónica Industrial 2.1.1 Definición La temperatura es una magnitud que refleja el nivel térmico de un cuerpo, es decir, su capacidad para ceder energía calorífica. La temperatura depende del movimiento de las moléculas que componen a la sustancia, si éstas están en mayor o menor movimiento, será mayor o menor su temperatura respectivamente, es decir, estará más o menos caliente. El calor es la energía que se pierde o gana en ciertos procesos. Por tanto, los términos de temperatura y calor, aunque relacionados entre sí, se refieren a conceptos diferentes: la temperatura es una propiedad de un cuerpo y el calor es un flujo de energía entre dos cuerpos a diferentes temperaturas. La temperatura corporal es la medida del grado de calor de un organismo, y desempeña un papel importante para determinar las condiciones de supervivencia de los seres vivos. Así, los seres humanos necesitan un rango muy limitado de temperatura corporal para poder sobrevivir, y tienen que estar protegidos de temperaturas extremas. La temperatura corporal es el equilibrio entre la producción de calor por el cuerpo y su pérdida. El centro termorregulador está situado en el hipotálamo. Cuando la temperatura sobrepasa el nivel normal se activan mecanismos como vaso dilatación, hiperventilación y sudoración que promueven la pérdida de calor. Si por el contrario, la temperatura cae por debajo del nivel normal se activan mecanismos como aumento del metabolismo y contracciones espasmódicas que producen los escalofríos. Para poder hablar de temperatura normal del cuerpo, debemos establecer una diferencia entre la temperatura de los tejidos profundos del cuerpo y la temperatura cutánea. Esto justifica establecer una división: temperatura interna, con una temperatura constante y fuertemente regulada; y temperatura cutánea de los tejidos periféricos, cuya temperatura puede oscilar dentro de unos límites amplios, dependiendo tanto de la temperatura del ambiente como del grado de defensa ante la pérdida de calor y de las actividades particulares. De este modo, el término temperatura corporal no debe emplearse sin tener en cuenta en qué parte del cuerpo tiene lugar la medición. - Temperatura periférica o superficial: es la de los constituyentes del revestimiento periférico, como la piel, el tejido subcutáneo y las porciones superficiales de las masas musculares cuya función principal es la de mantener una temperatura central constante. La temperatura periférica muestra considerables variaciones, subiendo y bajando según el medio ambiente. La temperatura media de la piel para una persona promedio en un cuarto con temperatura ambiente de 25ºC es de 33ºC. La temperatura de la piel se puede medir mediante termocuplas o termistores montados en contacto con la epidermis. 9 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial - Temperatura central: la temperatura central representa la temperatura media en áreas corporales profundas centrales (ejemplos: cerebro, corazón, pulmones, órganos abdominales). Se encuentra constituida por las regiones del cráneo, torácica, abdominal, pélvica y las porciones más profundas de las masas musculares de las extremidades. Los seres humanos somos homeotérmicos lo que significa que la temperatura corporal interna se mantiene casi constante. En condiciones normales, la temperatura interna del cuerpo fluctúa entre 36’5ºC y 37’5ºC. 2.1.2 Zonas de Lectura Oral: sublingual utilizando el clásico termómetro de mercurio durante un tiempo aproximado de cuatro minutos. Se debe tener en cuenta la última ingesta; se puede tomar la temperatura mínimo 15 minutos después de la ingesta. La temperatura oral se puede medir en todos los pacientes, excepto, en los que están inconscientes, sufren confusión mental, convulsiones, afecciones de nariz, boca o garganta y los niños menores de 6 años. Rectal: lubricar el termómetro y proteger la intimidad del paciente. El resultado tiende a ser 0’5ºC a 0’7ºC mayor que la temperatura oral. La temperatura rectal es recomendable para el paciente menor de 6 años, a menos, que se le haya practicado cirugía rectal o presente algún tipo de anormalidad en el recto. El canal auditivo: por su proximidad del canal auditivo del hipotálamo, la temperatura timpánica puede utilizarse como criterio para la estimación de la temperatura interna. De menor precisión que la toma rectal. Axilar: es recomendable en adultos y niños mayores de 6 años, se deja el termómetro durante 5 minutos. El resultado es 0’5ºC menor que la temperatura oral. 2.1.3 Valores, Alteraciones y Terminología En la tabla 1, se muestra los valores normales de temperatura según la edad. Tabla 1. Valores de la temperatura según la edad 10 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial Los factores que varían la temperatura varían según diversos parámetros: - Edad: los niños son más susceptibles a las variaciones climáticas. En los ancianos la hipotermia se da por la pérdida de grasa subcutánea, dieta inadecuada, cese de actividad y disminución de los controles termorreguladores. - Ejercicio: por aumento en la producción de calor - Hormonas: en las mujeres la progesterona secretada durante la ovulación aumenta la temperatura. - Estrés: la estimulación del sistema nervioso simpático aumenta el metabolismo y la producción de calor. - Medio ambiente: las variaciones extremadas de la temperatura ambiental alteran los sistemas termorreguladores de las personas. Cuando la temperatura corporal alcanza valores anormales se presentan una serie de reacciones: - Pirexia o hipertermia: temperatura por encima del límite superior normal. Se presenta aumento de la frecuencia cardiaca, escalofríos, piel pálida y fría y lechos ungueales cianóticos, por vasoconstricción. - Hipotermia: temperatura corporal por debajo del limite inferior normal. Se puede presentar somnolencia e incluso coma, lo cual, favorece la inadecuada producción de calor y la aparición de hipotensión, disminución de la diuresis, desorientación, sensación de frío y piel pálida y fría. A la hipertermia se le denomina fiebre. Según la intensidad de la temperatura se puede distinguir entre: - Febrícula: temperatura hasta los 38ºC - Fiebre moderada: temperatura entre 38 y 39ºC - Fiebre alta: temperatura superior a 39ºC. Según la forma de la curva térmica: - Fiebre continua: oscilación diaria inferior a un grado - Fiebre remitente: oscilaciones diarias mayores de un grado - Fiebre intermitente: la temperatura desciende hasta lo normal, para luego ascender nuevamente. - Fiebre recurrente: episodios febriles (fiebre por encima de 38’3ºC) alternados con periodos de temperatura normal por días o semanas. Mediante el presente proyecto, se pretende monitorizar la temperatura corporal, detectar los episodios febriles o de hipotermia y avisar a la persona encargada de cuidar a la persona enferma. 11 Monitorización Wireless Constantes Vitalesde un bebé 2.2 Automática y Electrónica Industrial Módulo 1: Equipo Inalámbrico con Sensor de Temperatura El módulo autónomo sensor será el encargado de realizar la medición de la temperatura y transmitirla, es el módulo que se encontrará siempre en el bebe al cual se quiere monitorizar la temperatura. En su diseño se han tenido en cuenta las siguientes necesidades: - Se alimentará mediante un sistema de baterías y su consumo será mínimo. Durante más del 90% de su tiempo se encontrará funcionando en modo de bajo consumo y únicamente se activarán todas sus funciones para realizar la medición de temperatura y enviar los datos a otro dispositivo. - Su tamaño será el menor posible, ya que se situará en el usuario y su diseño debe ser tal que no provoque molestias al llevarlo encima. - En su diseño deben considerarse los mínimos componentes posibles para minimizar el consumo y el espacio. - Controlará el estado de la batería y deberá enviar un aviso de batería baja al usuario. - El sensor de temperatura será lo más exacto y preciso posible en su medida y debe poder funcionar en modo de bajo consumo. - El sistema inalámbrico a utilizar debe ser de bajo consumo. La distancia máxima a transmitir será de unos 30 metros y la tasa de datos de transferencia será baja. 2.2.1 Diagrama de Bloques En la figura 7 se puede observar el diagrama funcional de bloques del Módulo Autónomo Sensor. sensor Tª batería uC Sist. Wireless Figura 7. Diagrama funcional de bloques 12 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial Sus principales componentes serán: - El sensor de temperatura. Debe ser un sensor de pequeño tamaño, que permita dos modos de funcionamiento, modo normal y modo de bajo consumo. Lo más integrado posible para que su consumo sea mínimo. - El sistema de comunicación wireless. La elección del sistema de comunicación será importante ya que será el recurso que consuma más potencia. Se buscará un sistema de bajo consumo, capaz de entablar comunicación con otro dispositivo a 30 metros y su tasa de transferencia no tiene porque ser muy elevada. - El microprocesador. Se encargará de gestionar los modos de funcionamiento del módulo. Se encargará de tomar el dato de temperatura proveniente del sensor y enviarlo al sistema de comunicación wireless para su envío al otro dispositivo. También debe gestionar el estado de la batería y enviar la información de batería baja al modulo de sobremesa. - La batería: proporcionara la alimentación a todo el sistema. Debe ser lo más pequeña posible y que proporcione una autonomía suficiente. En función de las necesidades de consumo y tensión de funcionamiento del resto de dispositivos se decidirá sus características. 13 Monitorización Wireless Constantes Vitalesde un bebé 2.3 Automática y Electrónica Industrial Medición de la Temperatura Corporal. Sensores. Se puede realizar la medición de la temperatura corporal de diferentes maneras que varían de acuerdo al costo del equipo, precisión, linealidad y rango. A continuación expondré los principales tipos de sensores. 2.3.1 Termopares Los termopares son los sensores de temperatura utilizados con mayor frecuencia porque son sensores precisos, relativamente económicos, que pueden operar en un amplio rango de temperaturas. El termopar fue descubierto por Thomas Seebeck en 1831. Él descubrió que una corriente eléctrica fluía en un circuito cerrado de dos metales distintos cuando una de las uniones era calentada. La magnitud y dirección de la corriente son función de la diferencia de temperatura de las uniones y de las propiedades térmicas de los metales usados en el circuito. A este fenómeno se le conoce como efecto Seebeck. Figura 8. Corriente provocada por el Efecto Seebeck Si abrimos este circuito, obtenemos una diferencia de potencial pequeña (milivoltios), la cual es directamente proporcional a la temperatura de la unión y a la composición de los dos metales. Figura 9. Metales distintos creando un temopar 14 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial Figura 10. Los termopares son económicos y pueden operan en un amplio rango de temperaturas. Existen diferentes tipos de termopares asignados con letras mayúsculas que indican su composición de acuerdo al American nacional Standards Institute (ANSI). Los tipos de termopares más comunes incluyen B, E, K, N, R, S y T. Tabla 2. Diferentes tipos de termopares Las curvas de calibración para los diferentes tipos de termopares son las descritas en la siguiente tabla: 15 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial Figura 11. Curvas de calibración Medición. La diferencia de potencial, en un termopar, no puede ser medida directamente debido a que la unión termopar con el instrumento de medida crea un nuevo circuito termoeléctrico. Por ejemplo, si conectamos un voltímetro a un termopar tipo T (cobre-constantan) para conocer su diferencia de potencial. Figura 12. Conexión voltímetro El circuito equivalente que obtendríamos sería el siguiente: Figura 13. Circuito equivalente Se quiere conocer el valor de V1, pero al conectar el voltímetro estamos creando dos uniones más U2 y U3. Debido a que U3 es del mismo metal (cobre-cobre), la 16 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial diferencia de potencial de V3 es cero voltios (V3=0=. Sin embargo, U2 que es una unión de cobre-constantan crea una V2 en oposición a V1, por lo que la lectura resultante del voltímetro V será proporcional a la diferencia de temperaturas U1 y U2. Es necesario conocer U2 para determinar V1, Una manera de determinar U2 es colocar físicamente esta unión dentro de un baño de hielo, forzando entonces a que su temperatura sea 0ºC y estableciendo U2 como la Unión de referencia (Unión fría). Figura 14. Unión de referencia U2 por junta fría De esta manera la tensión leída en el voltímetro será directamente proporcional a la temperatura de U1, ya que la temperatura de U2 es igual a cero. En el primer ejemplo se ha utilizado un termopar tipo T, pero si usamos un termopar tipo J (hierro-constantan), en este caso tendríamos una unión más que afectaría la medición. Por supuesto que una solución sería colocar U2 y U3 dentro del baño de hielo y el problema está resuelto. Pero existe otra solución, ésta consiste en tener U2 y U3 a una misma temperatura conocida y aisladas eléctricamente. Esto se logra con un bloque isotérmico cuya temperatura tiene que ser medida mediante otro sensor, normalmente un termistor o PT100. Figura 15. Bloque de temperatura con PT100 Si el termistor o PT100 determinan la temperatura de referencia de U2 y U3, se puede determinar entonces la tensión eléctrica de referencia de esas uniones (Vref), por lo tanto V1 será la diferencia de V menos la Vref. 17 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial Para este procedimiento de compensación por unión fría, existen dos técnicas: - compensación por hardware - compensación por software. En la compensación por hardware, se inserta una fuente variable de voltaje dentro del circuito para cancelar los voltajes termoeléctricos parásitos. La fuente variable de voltaje genera un voltaje de compensación de acuerdo con la temperatura ambiente, para así poder adicionar el voltaje correcto para cancelar las señales termoeléctricas indeseadas. Cuando se cancelan estas señales parásitas, la única señal que mide el dispositivo de adquisición de datos es el voltaje desde la unión del termopar. Con la compensación por hardware, la temperatura en los terminales del sistema de adquisición de datos es irrelevante ya que los voltajes parásitos del termopar se han cancelado. La mayor desventaja de la compensación por hardware es que cada tipo de termopar debe poseer un tipo separado de circuito que pueda adicionar el voltaje correcto de compensación; este hecho hace que el circuito sea bastante costoso. La compensación por hardware es generalmente menos exacta que la compensación por software. En la compensación por software el cálculo de la tensión de referencia y a su vez el cálculo de la diferencia de tensiones es realizado por un microprocesador. Este último es sin duda el procedimiento de medición de termopares más común. 2.3.2 RTD’s. Las termorresistencias son sensores de temperatura basados en el cambio de resistividad que sufren las estructuras de los metales con la temperatura, la cual es aproximadamente lineal para ciertos metales. Una termo resistencia, o RTD, se fabrica para tener un valor Ro nominal a una temperatura dad (p.e. 100 ohms a 0ºC). Al medir su resistencia a una temperatura desconocida y al compararla con Ro, se puede conocer la diferencia de resistencia. Como la característica de la resistencia en función de la temperatura es también conocida, el cambio de temperatura desde el punto inicial será conocida. Los materiales usados como RTDs’s son: - cobre - balco (aleación de hierro-níquel) - tungsteno - iridio - Platino. Debido a su baja resistividad, el oro y la plata no son usados como RTD’s. El tungsteno posee alta resistividad, pero se le reserva para muy alta temperatura, al ser muy quebradizo y difícil de maquinar. 18 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial El cobre se usa a veces como RTD. Su baja resistividad hace que el elemento sea más largo que uno de platino, pero su linealidad y bajo costo lo hacen una alternativa económica. Su límite de operación es de 120ºC. Los elementos de níquel o aleaciones de níquel son más no lineales y tienden a modificar su valor de resistencia con el tiempo. Figura 16. Curva R-T de varios metales. El platino es el más popular de las RTD’s, debido a su característica muy cercana a la linealidad en un rango amplio de temperaturas, estable a largo plazo. El costo de los PRTD’s (RTD de platino) se vieron reducidos al implementarse en película delgada. Las princípiales características encontradas en el platino son: - Estabilidad química: resistencia a la oxidación y corrosión - Facilidad de manufactura - Disponibilidad de alambre de alta pureza - Buena reproducibilidad de características eléctricas. Esta última permite el poder reemplazar el elemento sensor sin tener que recalibrar un instrumento. Los valores típicos son de 100, 500 y 1000 ohms. 19 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial Las RTD’s se identifican por el metal del que se componen (según la tabla periódica) y la resistencia que presentan a 0ºC. Ejemplo: Pt100, Pt1000, Ni120, Cu200, etc. Según la precisión, se distinguen dos tipos: - Clase A: ± 0’15 ºC a 0ºC - Clase B: ± 0’30 ºC a 0ºC Luego presentan una degradación de la precisión hacia los extremos del rango. Por ejemplo, según el estándar IEC751, para clase B, se tiene: Tabla 3. Precisión para clase B Constructivamente las RTD se pueden encontrar de dos formas: - Construcción tipo Meyer. Consisten en enrollar sobre una cruz de mica una bobina helicoidal de platino, y montar el conjunto dentro de un tubo de vidrio. Al ser el coeficiente de dilatación de la mica muy bajo, el esfuerzo sobre el alambre será bajo, evitando la variación de resistencia por estiramiento, obteniendo así un dispositivo estable. A su vez, al estar bobinado a la vez de enrollado, se maximiza su resistencia para un tamaño dado. - RTD de película delgada de platino. La longitud de alambre y diámetro para controlar el valor de Ro se reemplaza por una estructura meandro muy delgada sobre un substrato (hasta de 3 micrones), de allí las bajas corrientes de medición permitidas. El RTD de película delgada ofrece un dispositivo pequeño, que responde rápidamente a los cambios bruscos de temperatura y reduce la captación de ruido por campos magnéticos variables, problemas que poseen los del tipo bobinado. El inconveniente frente a los bobinados es que son menos estables. 20 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial Figura 17. RTD de película delgada En el caso de la RTD de platino, su función como sensor se basa en la dependencia con la temperatura de la resistividad del metal. La relación existente puede ser descrita por el siguiente polinomio característico: (1) donde: R(T) = Resistencia medida. Ro = Resistencia nominal a 0ºC Las constantes están definidas por el estándar internacional (DIN EN 60751) para sensores de platino: (2) El coeficiente b es tan pequeño que para la mayoría de las aplicaciones puede considerarse una relación lineal entre R(T) y T. Medición. La medida de una RTD se puede realizar de diferentes métodos. En todos ellos, es necesaria un circuito de acondicionamiento de la señal. Medición por método de cero: puente de tres hilos. (3) 21 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial El valor del RTD a la temperatura de calibración del puente será el valor de R3. Se busca que R1, R2 y R3 tengan coeficientes de variación de resistencia con la temperatura nulo a la temperatura de trabajo. Medición de temperatura con RTD por comparación. En este método se compara la magnitud desconocida con otra de la misma especie conocida. El patrón y la incógnita coexisten en la medición. Puede ser de deflexión o cero. El método por fuentes de corriente es de deflexión, al obtener una tensión de salida proporcional a la diferencia de resistencia entre RTD y Ro, que bien podría actuar sobre un instrumento calibrado en ºC. El esquema básico sería el siguiente: Figura 18. Esquema básico comparación Al circular corriente por el sensor, se produce un error por autocalentamiento. 2.3.3 Termistores Los termistores aprovechan la dependencia que presenta la resistencia eléctrica de cualquier material conductor con la temperatura. En el caso de los termistores, se utilizan materiales semiconductores de alta sensibilidad, específicamente diseñados para que su resistencia dependa agudamente de la temperatura del elemento. Existen termistores de coeficiente positivo PTC (su resistencia aumenta con la temperatura) o negativo NTC (su resistencia disminuye con la temperatura), siendo este último más típico y de bajo costo. Figura 19. Distintas formas de los termistores NTC y PTC 22 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial En los termistores se observan relaciones de la resistencia con la temperatura que no son lineales, sino más bien de carácter exponencial. Para termistores comerciales comunes, la relación es del tipo R(T ) = R(T = T0 ) ⋅ e ⎡1 1 ⎤ Χ⋅⎢ − ⎥ ⎣ T T0 ⎦ (4) Donde “R(T)” es la resistencia (en ohms) observada a la temperatura “T”, la que depende de un primer parámetro dado por la resistencia a una temperatura conocida “R(T=To)”, típicamente 25ºC, y de un segundo parámetro de ajuste “x”. Figura 20. Curva característica de los termistores En el caso de los termistores, dado que se mide resistencia, se debe cuidar, en primer lugar, que la resistencia de los cables de conexión (que también cambia con la temperatura) no incida sobre la medición y, en segundo lugar, que la corriente que circule por el elemento para medir su resistencia sea lo suficientemente pequeña como para calentar sólo mínimamente el propio sensor. A ese fin se utilizan sistemas de compensación que incorporan cables idénticos pero sin el sensor, en el brazo adyacente de un puente de Wheastone, amén de circular una corriente nula por el sensor. Los termistores al igual que cualquier dispositivo construido en base a semiconductores tienen algunos parámetros que deben ser considerados para su elección. Los términos que con mayor frecuencia se emplean son: - Resistencia a potencia cero: Resistencia del termistor cuando no existe efecto de autocalentamiento. - Variación de la resistencia con la temperatura: Sensitividad, típicamente de 4W/ºC. - Estabilidad: Capacidad de un termistor para mantener sus características dentro del rango 0’03ºC/a en un periodo de 12 años. - Autocalentamiento: Potencia disipada en el termistor 23 Monitorización Wireless Constantes Vitalesde un bebé - Automática y Electrónica Industrial Temperatura de operación máxima: Temperatura máxima en la cual el termistor conservará su operación con características de estabilidad aceptables. Las principales características que poseen son: - Alta sensibilidad - Alto coeficiente térmico - Envejecen - Tienen un tiempo de respuesta variable - Sufren de autocalentamiento - No son lineales - Son de tamaño reducido - Son susceptibles a contaminación - Figure 21. Resistencia contra Temperatura para un Termistor Típico y RTD Medición. Los termistores son dispositivos sensibles, se les debe administrar una corriente de excitación y luego leer el voltaje a través de los terminales. Si el calor adicional no se puede disipar, el calentamiento causado por la corriente de excitación puede incrementar la temperatura del elemento de detección. El auto calentamiento generalmente cambia la resistencia del termistor, provocando errores en las medidas. Los efectos del auto calentamiento se pueden disminuir al administrar una baja corriente de excitación. La manera más fácil de conectar un RTD o termistor a un dispositivo de medida es con una conexión de 2 cables. 24 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial Figura 22. Medida RTD/Termistor de 2 Cables Con este método, los dos cables que alimentan al RTD o termistor con su corriente de excitación también se usan para medir el voltaje en el sensor. Debido a la baja resistencia nominal de los RTDs, la precisión de las medidas se puede ver afectada significativamente por la resistencia del cable. Por ejemplo, los cables con una resistencia de 1 W conectados a un RTD de platino de 100 W causan un error de medida del 1%. Un método de conexión de 3 cables o 4 cables puede eliminar los efectos de resistencia del cable. La conexión coloca las terminales en una trayectoria de alta impedancia a través del dispositivo de medida, eliminando de manera efectiva los errores causados por la resistencia del cable. No es necesario usar un método de conexión de 3 o 4 cables para termistores ya que éstos generalmente tienen valores de resistencia nominal más altos que los RTDs. A continuación se muestra un diagrama de conexión de 4 cables. Figura 23. Medida RTD de 4 Cables Las señales de salida del RTD y del termistor por lo general están en el rango de los milivoltios, lo cual los hace sensibles al ruido. Los filtros paso bajo son usados comúnmente en sistemas de adquisición de datos de RTD y termistor para eliminar de forma efectiva el ruido de alta frecuencia en las medidas. Por ejemplo, los filtros paso bajo son útiles para eliminar el ruido de línea de potencia de 50 Hz que se presenta comúnmente en la mayoría de los laboratorios y plantas. 25 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial 2.3.4 Acondicionamiento de la Señal. Se requiere acondicionamiento de señales para realizar medidas de temperatura precisas y confiables. Al diseñar el sistema de medidas adecuado para un sensor de temperatura, se debe considerar amplificación, aislamiento, filtros, excitación, precisión, resolución y compensación de junta fría (CJC). Amplificación Las señales de salida des los sensores de temperatura son generalmente en rangos de milivoltios, así que se debe amplificar la señal y prevenir el ruido en su sistema de medidas. Se debe escoger una ganancia que optimice los límites de entrada del convertidor analógico a digital (ADC) del hardware. Para mejorar significativamente el rendimiento del ruido de su sistema, se puede amplificar los voltajes de bajo nivel cerca de la fuente de señal o punto de medida. Aislamiento Los termopares que son montados o soldados directamente a un material conductivo, como el acero o el agua, introducen otra fuente de ruido. Esta configuración hace a los termopares particularmente sensibles al voltaje en modo común y a lazos a tierra. El aislamiento ayuda a prevenir lazos a tierra y puede mejorar drásticamente el rechazo de voltaje en modo común. Filtrado Los filtros paso bajo se utilizan comúnmente para eliminar de manera efectiva el ruido de alta frecuencia en medidas de temperaturas. Por ejemplo, los filtros paso bajo son útiles para eliminar el ruido de línea de potencia de 60 Hz que se presenta comúnmente en varios laboratorios y plantas. Excitación Ya que los RTDs y termistores son dispositivos sensibles, se les debe administrar una corriente de excitación y luego leer el voltaje a través de los terminales. Si el calor adicional no se puede disipar, el calentamiento causado por la corriente de excitación puede incrementar la temperatura del elemento de detección. El auto calentamiento cambia la resistencia del RTD o termistor, provocando errores en las medidas.. Precisión y Resolución Al seleccionar el sensor y el hardware de adquisición de datos adecuados, se deben conocer los requerimientos de precisión y resolución para su aplicación. Sin embargo los filtros y la amplificación pueden mejorar significativamente la precisión de las medidas de termopares, de RTDs y de termistores. Además de las consideraciones de los sensores, el hardware de adquisición de datos y acondicionamiento de señal debe igualar la precisión y la resolución requerida. Compensación de Junta Fría (CJC) CJC es una tecnología requerida para medidas precisas de termopares. Un voltaje es generado en la conexión entre el termopar y el terminal de su dispositivo de adquisición de datos. CJC mejora la precisión de sus medidas al proporcionar la temperatura en esta unión 26 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial y al aplicar la corrección apropiada. Es importante conocer cómo funciona la CJC porque el error introducido por el sensor CJC se compone de cualquier error existente en su medida. Al calcular la precisión del sistema, este error puede ser significante y debe ser considerado Eliminación de Ruido Las señales de los sensores generalmente están en el rango de los milivoltios, lo cual los hace sensibles al ruido. Los filtros paso bajo se utilizan comúnmente en los sistemas de adquisición de datos de termopares para eliminar de manera efectiva el ruido de alta frecuencia. También se puede reducir el ruido amplificando los voltajes de bajo nivel cerca de la fuente de señal. Otras fuentes de ruidos son debidas a que por ejemplo los termopares, se suelen montar o soldar en materiales conductivos, haciéndolos particularmente sensibles al ruido en modo común y a los lazos de tierra. Un buen aislamiento ayuda a prevenir que ocurran lazos a tierra y puede mejorar drásticamente el rechazo de ruido en modo común. 2.3.5 Sensores de Temperatura con Semiconductores. La corriente de conducción de una unión p-n polarizada directamente, responde exponencialmente con la tensión de forma directa, e inversa con la temperatura. Si se recuerda la ecuación característica de funcionamiento de un diodo. (5) donde: q=carga del electrón k=constante de boltman T=temperatura Isat=corriente de saturación De esta ecuación, se desprende que a corriente constante, la tensión varía a razón de -2’2m por cada grado centígrado (ºC), considerando el diodo formado por la unión baseemisor de un transistor bipolar. 27 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial (6) Pero además de la variación con T, mantiene una fuerte dependencia de Isat con la temperatura, lo que hace que no sea directamente utilizable debido a la compleja forma de dependencia con la temperatura. Si se toman N transistores idénticos al primero sobre lo que se reparte igualitariamente la misma corriente Ic. (7) Si se toma la tensión diferencia entre ambos conjuntos, se tendrá una tensión proporcional a la temperatura absoluta pero sin tener dependencia alguna con Isat. (8) 28 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial De esta manera, puede construirse un circuito conteniendo N+1 transistores NPN, un espejo de corriente PNP y una resistencia estable con la temperatura, como se muestra en la figura siguiente, cuya corriente será proporcional a la temperatura absoluta, como lo será igualmente la caída de tensión sobre la resistencia R (que representa la diferencia entre V y Vn de las ecuaciones anteriores). Los sensores basados en este sistema pueden dar su salida según la siguiente tabla: Tabla 4. Tipo de salidas para los sensores Los sensores de temperatura con salida en corriente se basan en el circuito descrito en la figura anterior, a estos sensores se les denomina sensor de temperatura band-gap. Este tipo de sensores no necesitan calibración alguna o ajuste externo. La incorporación de dispositivos digitales integrados junto con el sensor reduce el número de componentes externos en las aplicaciones. Así, existen circuitos como el MCP9804 de Microchip que proporcionan un salida digital I2C como salida de temperatura. 29 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial Figura 24. Diagrama de bloques sensor integrado 2.3.6 Elección Final En base a las necesidades del proyecto y a las características de los diferentes sensores descritos se ha escogido para desarrollar el proyecto el sensor de temperatura de Microchip MCP9804. El MCP9804 es un sensor de temperatura basado en semiconductores del tipo bandgap. La ventaja del uso de semiconductores en el sensado de temperatura es su capacidad de integración. En el caso del MCP9804, viene integrado con un convertidor analógico/digital y con una comunicación I2C. 30 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial El uso de un termopar, RTD o termistor implica la existencia de un circuito para acondicionar la señal. Acondicionamiento de señal necesaria Tipo de sensor Exactitud Termopar Amplificación Filtro Unión fria Compensación RTD Amplificación La mejor Filtro Corriente de excitación Amplificación Muy buena Filtro Corriente de excitación No necesita Muy buena acondicionamiento de señal Termistor Integrado lineal MCP9804 Buena Sensibilidad Buena Muy buena La mejor Buena Tabla 5. Comparativa sensores Tª En el presente proyecto el uso de un circuito acondicionador de señal presenta varios inconvenientes. - Se añade un circuito acondicionador a la placa del dispositivo inalámbrico. - Se debe controlar el circuito acondicionador para que mientras no esté en uso consuma la mínima energía. - El hecho de utilizar más componentes discretos incrementa la complejidad del circuito, lo hace más susceptible a fallos y hace más difícil su reparación. - Un circuito acondicionador aumenta el precio del sistema sensor. En la siguiente tabla se muestra el precio aproximado de los diferentes sensores. Tipo Sensor MCP9804 Termopar tipo T Termistor RTD - PT100 Precio (euros) 1.59 4.27 0.7 3.65 Intercambiabilidad excelente buena mala excelente Estabilidad buena media media buena Circuito Acond. 0 1 1 1 TOTAL 1.59 5.27 1.7 4.65 Tabla 6. Comparativa precios diferentes sensores Como se puede observar, el sensor más económico es el termistor, sin embargo, la necesidad de acondicionar su señal lo relega al segundo puesto, siendo el MCP9804 el más económico. 31 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial Existen sensores de temperatura basados en semiconductores más económicos, sin embargo su señal de temperatura es analógica, lo que hace necesaria un acondicionamiento de la señal, siendo el precio final similar al MCP9804. En definitiva, el uso del MCP9804 presenta muchas ventajas frente al resto de sensores, entre las que podemos destacar: - facilidad de ínter cambiabilidad, en caso de fallo del sensor - Alta precisión y resolución - No necesita acondicionar la señal de salida. Salida digital de temperatura. - Disminuye la complejidad del sistema y aumenta su fiabilidad. - Presenta modo de funcionamiento en bajo consumo, necesario en sistemas a batería. - El conjunto sensor se encuentra entre los más económicos 32 Monitorización Wireless Constantes Vitalesde un bebé 2.4 Automática y Electrónica Industrial Comunicación Wireless entre Módulos ZigBee constituye una de las partes importantes de este proyecto puesto que será el medio de transmisión elegido para el envío de los datos, una vez medidos con el sensor de temperatura. Como se verá más adelante, ZigBee puede ser usado para una gran variedad de aplicaciones, como podemos observar en la Figura 25, pero en este caso su utilización es para fines de monitorización corporal. Figura 25. Aplicaciones tecnología Zigbee En este apartado se tratará de forma amplia y específica el funcionamiento de este tipo de conexión, partiendo de una definición de ZigBee y posteriormente estudiando tanto sus principales características como su funcionamiento en una red ZigBee. Otro punto a tener en cuenta es el porqué de su elección teniendo otros tipos de posibilidades. Para ello se realizará una comparación con otros medios de transmisión muy parejos a ZigBee. A partir de dicha comparativa podremos entender y asimilar que un medio ZigBee para este tipo de proyecto es lo más adecuado. 2.4.1 ZigBee ZigBee es el nombre de la especificación de un conjunto de protocolos de alto nivel de comunicación inalámbrica. Esta especificación define una solución para comunicaciones inalámbricas de bajo coste y consumo. El principal objetivo que pretende satisfacer una red de comunicación ZigBee es la de comunicar aplicaciones que requieren comunicaciones seguras, con baja tasa de envío y maximización de la vida útil de sus baterías. La red, en su conjunto, utilizará una cantidad 33 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial muy pequeña de energía de forma que cada dispositivo individual pueda tener una autonomía de hasta 5 años antes de necesitar un recambio en su sistema de alimentación. La ZigBee Alliance es el grupo encargado de su desarrollo. La primera versión 1.0 fue aprobada el 14 de diciembre de 2004. En diciembre de 2006 se aprobó el protocolo ZigBee 2006, y actualmente se está trabajando en nuevas versiones. El medio de transmisión ZigBee trabaja sobre la banda ISM para usos industriales, científicos y médicos; en concreto, 868MHz en Europa, 915MHz en Estados Unidos y 2.4GHz en todo el mundo. Al ser éste último libre en todo el mundo, las empresas optan por esta opción a la hora de diseñar. En el rango de frecuencias de 2.4GHz se definen hasta 16 canales, cada uno de ellos con un ancho de banda de 5MHz. La pila de protocolos ZigBee, también conocida como ZigBee Stack, se basa en el nivel físico (PHY) y el control de acceso al medio (MAC) definidos en el estándar IEEE 802.15.4, que desarrolla estos niveles para redes inalámbricas de área personal de baja tasa de transferencia (LR-WPAN, Low Rate - Wireless Personal Area Network). La especificación ZigBee completa este estándar añadiendo cuatro componentes principales: - Nivel de red. Nivel de aplicación Objetos de dispositivo ZigBee (ZDO, ZigBee Device Objects). Objetos de aplicación definidos por el fabricante. Además de añadir dos capas de alto nivel (nivel de red y de aplicación) a la pila de protocolos, el principal cambio es la adición de los ZDO ya que son los responsables de llevar a cabo una serie de cometidos, entre los que se encuentran el mantenimiento de los roles de los dispositivos, la gestión de peticiones de unión a una red, el descubrimiento de otros dispositivos y la seguridad. También hacer referencia a los objetos de aplicación definidos por el fabricante puesto que permiten la personalización y adaptación, y favorecen la integración total. Dicha ZigBee Stack será un elemento a tener en cuenta más adelante puesto que los dispositivos que se usen para implementar nuestro proyecto deberán ser totalmente compatibles con ZigBee y de este modo poder programar la pila de protocolos. En la Figura 26 vemos de forma esquematizada los distintos niveles del estándar 802.15.4 y de la especificación ZigBee. 34 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial Figura 26. Niveles estándar 802.15.4 2.4.2 IEEE 802.15.4 Antes de estudiar la especificación ZigBee, trataremos los niveles definidos por el estándar IEEE 802.15.4 específico para conexiones inalámbricas tales como la nuestra. El estándar no define niveles superiores ni subcapas de interoperabilidad. Existen extensiones, como la especificación ZigBee, que complementan al estándar en la propuesta de soluciones completas. IEEE 802.15.41 es la base sobre la que se define la especificación de ZigBee, cuyo propósito es ofrecer una solución completa para este tipo de redes construyendo los niveles superiores de la pila de protocolos que el estándar no cubre. El propósito del estándar es definir los niveles de red básicos para dar servicio a un tipo específico de red inalámbrica de área personal (WPAN) centrada en la habilitación de comunicación entre dispositivos con bajo coste y velocidad. Se enfatiza el bajo coste de comunicación con nodos cercanos y sin infraestructura, o con muy poca, para favorecer aún más el bajo consumo. En su forma básica se concibe un área de comunicación de 10 metros con una tasa de transferencia de 250kbps. Como se ha indicado, la característica fundamental de 802.15.4 entre las WPAN’s es la obtención de costes de fabricación excepcionalmente bajos por medio de la sencillez tecnológica, sin perjuicio de la generalidad o la adaptabilidad. Entre los aspectos más importantes se encuentra la adecuación de su uso para tiempo real por medio de slots2 de tiempo garantizados, evitación de colisiones por CSMA/CA y soporte integrado a las comunicaciones seguras. También se incluyen 35 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial funciones de control de consumo de energía como calidad del enlace y detección de energía. 2.4.2.1 Arquitectura de los Protocolos La definición de los distintos niveles se basa en el modelo OSI. Aunque los niveles inferiores (físico y enlace de datos) se definen en el estándar 802.15.4, se prevé la interacción con el resto de niveles por medio de un subnivel de Control de Enlace Lógico basado en IEEE 802.2 (LLC, Logical Link Control), que acceda al Control de Acceso al Medio (MAC) a través de un subnivel de convergencia. La implementación puede basarse en dispositivos externos o integrarlo todo en dispositivos autónomos. Figura27. Pila de protocolos modelo OSI 2.4.2.2 Nivel Físico El nivel físico (PHY) proporciona el servicio de transmisión de datos sobre el medio físico propiamente dicho, así como la interfaz con la entidad de gestión del nivel físico, por medio de la cual se puede acceder a todos los servicios de gestión del nivel y que mantiene una base de datos con información de redes de área personal relacionadas. De esta forma, PHY controla el transceptor de radiofrecuencia y realiza la selección de canales junto con el control de consumo y de la señal. Como ya se ha comentado con anterioridad, se opera en una de las tres posibles bandas de frecuencia siguientes: - 868-868.8MHz: Europa. Permite de uno a tres canales. 902-928MHz: Norte América. Permite de diez a treinta canales. 2400-2483.5MHz: Uso en todo el mundo. Permite hasta dieciséis canales. 36 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial Figura 28. Banda de frecuencias La versión original del estándar (2003) especifica dos niveles físicos basados en Espectro Ensanchado por Secuencia Directa (DSSS, Direct Sequence Spread Spectrum). Uno de los dos niveles físicos trabaja en las bandas de 868/915MHz con tasas de transferencia de entre 20 y 40kbps; el otro nivel trabaja en la banda de 2450MHz con hasta 250kbps. Posteriormente se realizó una revisión en el 2006 incrementando las tasas de datos máximas de las bandas de 868/915MHz, pasando a transmitir hasta 100 y 250kbps. En el nivel físico podemos localizar cuatro niveles físicos distintos en base al método de modulación usado. Tres de estos cuatro niveles conservan el mecanismo DSSS: las bandas de 868-915MHz que usan modulación en fase binaria o por cuadratura en offset (OQPSK, Offset Quadrature Phase Shift Keying). En la banda de 2450MHz se usa la técnica OQPSK. Adicionalmente, se define una combinación opcional de modulación binaria y en amplitud para las bandas de menores frecuencias, basadas por lo tanto en una difusión de espectro paralela, no secuencial (PSSS). Si se usan éstas bandas de menor frecuencia, se puede cambiar dinámicamente el nivel físico usado entre los soportados. 2.4.2.3 Nivel Enlace de Datos En este nivel encontramos el Control de Acceso al Medio (MAC). Éste transmite tramas MAC usando para ello el canal físico. Además del servicio de datos, ofrece un interfaz de control y regula el acceso al canal físico y al balizado de la red. También controla la validación de las tramas y las asociaciones entre nodos, y garantiza slots de tiempo. Por último, ofrece puntos de enganche para servicios seguros. En el nivel de enlace de datos podemos localizar el Control de Enlace Lógico (LLC) que hace la función de interfaz con los niveles superiores de la pila de protocolos. En la figura 29 podemos observar los niveles definidos por el estándar 802.15.4 y las capas intermedias que posibilitan la comunicación con los niveles superiores definidos por un tipo de especificación WPAN, como ZigBee. 37 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial Figura 29. Pila de protocolos del estándar IEEE 802.15.4 2.4.3 Especificación Zigbee Nivel de RED Los cometidos principales del nivel de red son permitir el correcto uso del subnivel MAC, definido por el estándar 802.15.4, y ofrecer un interfaz adecuado para su uso por parte del nivel inmediatamente superior, el nivel de aplicación. Sus capacidades son las típicas de un nivel de red clásico. Por una parte, la entidad de datos crea y gestiona las unidades de datos del nivel de red a partir del payload del nivel de aplicación y realiza el ruteo en base a la topología de la red en la que el dispositivo se encuentra. Por otra parte, las funciones de control del nivel de red controlan la configuración de nuevos dispositivos y el establecimiento de nuevas redes; puede decidir si un dispositivo colindante pertenece a la red e identifica nuevos routers y vecinos. El control puede detectar así mismo la presencia de receptores, lo que posibilita la comunicación directa y la sincronización a nivel MAC. Nivel de APLICACIÓN El nivel de aplicación es el más alto definido por la especificación y, por tanto, la interfaz efectiva entre el nodo ZigBee y sus usuarios. En él se ubican la mayor parte de los componentes definidos por la especificación: tanto ZDO’s, como sus procedimientos de control y los objetos de aplicación. Componentes principales El ZDO se encarga de la definición del rol de un dispositivo como Coordinador ZigBee o Dispositivo Final. Además, el ZDO identifica los dispositivos que se encuentran a un salto en la red (dispositivos vecinos) y los servicios que ofrecen. Tras ello, puede proceder a establecer enlaces seguros con dispositivos externos y responder peticiones. El subnivel de soporte a la aplicación (APS, Application Support Sublayer) es el segundo componente básico del nivel. Como tal, ofrece una interfaz bien definida y 38 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial servicios de control asociados. Trabaja como nexo de unión entre el nivel de red y el resto de componentes del nivel de aplicación. Mantiene actualizadas las tablas de asociaciones en forma de base de datos, que puede utilizarse para encontrar dispositivos adecuados en base a los servicios demandados y ofrecidos. Como puente entre dos niveles, encamina los mensajes a lo largo de la pila de protocolos. 2.4.4 Dispositivos que Constituyen una Red Zigbee En una red ZigBee podemos encontrar y detectar tres tipos de dispositivos ZigBee diferentes, según el papel que desarrollen en nuestra red. Estos dispositivos son los siguientes: - Coordinador ZigBee (ZigBee Coordinator, ZC): Consiste en el dispositivo más completo de los tres, puesto que sus funciones son las de controlar y coordinar la red y los caminos que deben seguir los dispositivos para conectarse entre ellos. Debemos encontrar obligatoriamente un ZC en cada red ZigBee. - Router ZigBee (ZigBee Router, ZR): Su función es la de interconectar los dispositivos separados en la topología de la red, además de ofrecer un nivel de aplicación para la ejecución de código de usuario. - Dispositivo Final (ZigBee End Device, ZED): En este dispositivo queda representado las principales características de ZigBee, como son el bajo consumo y el bajo coste. Los ZED poseen la funcionalidad necesaria para comunicarse con su nodo padre, que ya puede ser el Router ZigBee o el Coordinador ZigBee, pero no puede transmitir información destinada a otros dispositivos. Es por ello, que este tipo de dispositivo puede estar “dormido” la mayor parte del tiempo aumentando así la vida media de sus baterías. Un ZED tiene requerimientos mínimos de memoria y es por ello significativamente más barato. Vistas las funciones realizadas por los distintos tipos de dispositivos que forman una red ZigBee podemos clasificarlos, según su funcionalidad, en dos tipos de nodo definidos por el estándar 802.15.4: - Dispositivo de Funcionalidad Completa (FFD, Full-Function Device): Conocido también como nodo activo. Gracias a la memoria adicional y a la capacidad de computar puede funcionar como Coordinador o Router ZigBee de una red de área personal (PAN) o como un nodo normal. Implementa un modelo general de comunicación que le permite establecer un intercambio con cualquier otro dispositivo pudiendo encaminar mensajes, en cuyo caso se le denomina coordinador (coordinador de la PAN si es el responsable de toda la red y no sólo de su entorno). Puede ser usado en dispositivos de red que actúen de interface con los usuarios. - Dispositivo de Funcionalidad Reducida (RFD, Reduced-Function Device): Conocido también como nodo pasivo. Posee una capacidad y funcionalidad limitada para garantizar un bajo coste y una gran simplicidad, por ello sólo pueden 39 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial comunicarse con FFD’s y nunca pueden ser coordinadores. Básicamente constituyen los sensores de la red. 2.4.5 Comunicaciones y Descubrimientos de Dispositivos Para que los dispositivos que forman una aplicación puedan comunicarse, deben utilizar un protocolo de aplicación compartido. Estos acuerdos se agrupan en perfiles. En el momento de establecer una comunicación entre los distintos dispositivos se realiza mediante pares de identificadores fuente y destino (identificadores de cluster), agrupando las parejas en tablas de asociaciones. Dichas tablas estarán correctamente almacenadas en los Coordinadores ZigBee. En base a la información disponible, el descubrimiento de dispositivos puede efectuarse utilizando varios métodos. En caso de conocer la dirección de red, se pide la dirección IEEE utilizando unicast3. Si no es así, se pide por broadcast4. Los Dispositivos Finales ZigBee responden a estas peticiones con sus direcciones propias, mientras que los Routers y Coordinadores ZigBee envían también las direcciones de todos los dispositivos asociados a ellos. Los identificadores de cluster favorecen la asociación entre entidades complementarias por medio de tablas de asociación, mantenidas en los Coordinadores ZigBee, ya que estas tablas siempre han de estar disponibles en una red. Los Coordinadores son los encargados de guardar las tablas ya que, de entre todos los nodos, son los que con mayor seguridad dispondrán de una alimentación continua. Para establecer asociaciones entre diferentes dispositivos se necesita que se haya formado un enlace de comunicación, tras ello se decide si es necesario adjuntar un nuevo nodo a la red en base a la aplicación y las políticas de seguridad. Nada más establecerse la asociación, pueden iniciarse las comunicaciones. Existen dos modos de direccionamientos. Por una parte, el direccionamiento directo utiliza la dirección de radio y el número de endpoint5; por otra parte, el direccionamiento indirecto necesita toda la información relevante (dirección, endpoint, cluster y atributo), y la envía al Coordinador de la red. El Coordinador es el encargado de traducir su petición y proporcionarle los datos deseados. Este último direccionamiento es especialmente útil para favorecer el uso de dispositivos muy sencillos y minimizar el almacenamiento interno. 2.4.6 Modos de Funcionamiento El funcionamiento de ZigBee debe cumplir la premisa del bajo consumo de sus nodos. Para ello un nodo ZigBee, tanto activo como pasivo, reduce su consumo gracias a que puede permanecer “dormido” la mayor parte del tiempo, incluso muchos días seguidos. Cuando decimos que el nodo permanece “dormido” nos referimos a que está a la espera de ser activado por parte del Router o del Coordinador ZigBee. Cuando se requiere su uso, el nodo ZigBee es capaz de despertar en un tiempo ínfimo, para volverse a “dormir” cuando deje de ser requerido. El tiempo que tarda un nodo cualquiera en despertarse es de aproximadamente 15ms. Las redes ZigBee han sido diseñadas para conservar la potencia en los nodos esclavos (ZED), de esta forma se consigue el bajo consumo de potencia. La idea del funcionamiento ZigBee consiste en que 40 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial los dispositivos esclavos en todo momento permanecen en modo “dormido” a no ser que sean activados, de tal forma que solo se “despiertan” por una fracción de segundo para confirmar que siguen en nuestra red de dispositivos de la que forman parte, es decir, que siguen “vivos”. En las redes ZigBee, se pueden usar dos modos de funcionamiento diferentes: con balizas o sin balizas. Con balizas En este modelo de funcionamiento, el camino de transmisión y recepción está permanentemente controlado por un distribuidor que se encarga de controlar el canal y dirigir las transmisiones. El distribuidor permite a todos los dispositivos saber cuándo pueden transmitir. Para el control del canal se utilizan las balizas, elementos que se usan para poder sincronizar todos los dispositivos que conforman la red. Los intervalos de las balizas son asignados por el coordinador de la red (Coordinador ZigBee) y pueden variar desde los 15ms hasta los 4 minutos. Este modo es más recomendable cuando el coordinador de red trabaja con una batería. Los dispositivos que conforman la red escuchan a dicho coordinador durante el balizamiento (envío de mensajes a todos los dispositivos -broadcast-, entre 0.015 y 252 segundos). Un dispositivo que quiere intervenir, lo primero que tendrá que hacer es registrarse para el coordinador, y es entonces cuando mira si hay mensajes para él. En el caso de que no haya mensajes, este dispositivo vuelve a “dormir”, y se despierta de acuerdo a un horario que ha establecido previamente el coordinador. En cuanto el coordinador termina el balizamiento, todos los dispositivos de la red vuelven a “dormirse”. Como vemos, se trata de un mecanismo de control del consumo de potencia en la red. Sin balizas En este tipo cada dispositivo es autónomo, pudiendo iniciar una conversación en la cual los otros dispositivos pueden interferir. A veces puede ocurrir que el nodo destino puede no oír la petición o que el dispositivo emisor pretenda transmitir cuando el canal esté ocupado, ocasionando posibles colisiones. Es por ello que se debe utilizar un mecanismo de control de acceso al medio. Las redes sin balizas acceden al canal por medio del CSMA/CA. El CSMA/CA (Carrier Sense Multiple Access with Collision Avoidance) se basa en la escucha del canal por parte del nodo que pretende transmitir, y de esta forma detecta si algún otro nodo que compone la red está transmitiendo o tiene intención de ello. Al tratarse de un medio inalámbrico, la detección de colisiones no es posible, por lo tanto para evitar dichas colisiones la estación que quiera transmitir, si no hay tráfico en el canal, podrá hacerlo pasado un cierto instante de tiempo; en caso de existir tráfico, deberá esperar un cierto tiempo de espera más otro cierto intervalo de tiempo aleatorio. Este sistema se usa típicamente en los sistemas de seguridad, en los cuales sus dispositivos duermen prácticamente todo el tiempo. Para que se les tenga en cuenta, estos elementos se “despiertan” de forma regular para anunciar que siguen en la red. 41 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial Cuando se produce un evento, como por ejemplo que un sensor detecte algún movimiento, el sensor “despierta” instantáneamente y transmite a la alarma correspondiente. Es en ese momento cuando el coordinador de red recibe el mensaje enviado por el sensor y activa la alarma pertinente. En este caso, el coordinador de red se alimenta de la red principal durante todo el tiempo. Los routers suelen estar activos todo el tiempo, por lo que requieren una alimentación estable en general. Esto permite redes heterogéneas en las que algunos dispositivos pueden estar transmitiendo todo el tiempo, mientras que otros sólo transmiten ante la presencia de estímulos externos. En general, los protocolos ZigBee que no hacen uso de las baliza, minimizan el tiempo de actividad para evitar el uso de energía. En las redes con balizas, los nodos sólo necesitan estar despiertos mientras se transmiten las balizas (además de cuando se les asigna tiempo para transmitir); si no hay balizas, el consumo de cada dispositivo será distinto ya que encontraremos nodos activos permanentemente y otros que sólo lo están esporádicamente. Acceso al medio El medio físico es un recurso al que se accede utilizando CSMA/CA. Las redes que no utilizan las balizas hacen uso de una variación del mismo basada en la escucha del medio, temporizada por un algoritmo de backoff6, salvo en el caso de las confirmaciones (ACK, Acknowledgement). Estos mensajes de confirmación pueden ser opcionales en algunos casos. La recepción de una confirmación certifica el éxito de nuestro envío. En cualquier caso, si un dispositivo es incapaz de procesar una trama en un momento dado, no confirma su recepción. Pueden realizarse reintentos basados en timeout un cierto número de veces, tras lo cual se decide si seguir intentándolo a dar error de transmisión. El entorno de funcionamiento previsto para este tipo de redes exige que se maximice la vida de la fuente de energía, por lo que se favorecen los protocolos que conducen a estos fines. Para ello, se programan comprobaciones periódicas de mensajes pendientes, más o menos frecuentes según la aplicación concreta. En lo que respecta a la seguridad en las comunicaciones, el subnivel MAC ofrece funcionalidades que los niveles superiores pueden utilizar para lograr alcanzar el nivel de seguridad deseado. Estos niveles superiores pueden especificar claves simétricas para proteger los datos y restringir éstos a un grupo de dispositivos o a un enlace punto a punto. Estos grupos se especifican en listas de control de acceso. Además, MAC realiza comprobaciones de frescura (freshness check) entre recepciones sucesivas para asegurar que las tramas viejas cuyo contenido no se considera útil o válido ya, no transcienden a los niveles superiores. 42 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial 2.4.7 Modelo de Redes Zigbee Las redes están compuestas por grupos de dispositivos separados por distancias suficientemente reducidas. Cada dispositivo posee un identificador único de 64 bits, aunque si se dan ciertas condiciones de entorno en éste pueden utilizarse identificadores cortos de 16 bits. Probablemente éstos se utilizarán dentro del dominio de cada PAN separadas. Un aspecto a tener muy en cuenta son los tipos de topologías de red que permite el estándar que soporta ZigBee. Su nivel de red permite tres topologías distintas: - Topología en estrella. Topología en árbol. Topología de malla. Toda red necesita al menos un dispositivo coordinador (FFD), encargado de su creación, mantenimiento básico y control de sus parámetros. Seguidamente estudiaremos de forma detallada los distintos tipos de topologías de ZigBee, dónde se sitúa en cada uno de ellos el coordinador de la red y cuál es la topología más adecuada. Topología estrella En redes en estrella el coordinador se sitúa en el centro, y toda conexión que se quiera realizar entre los distintos nodos de la red debe pasar por éste. Una red en estrella activa tiene un nodo central activo que normalmente tiene los medios para prevenir problemas. Se utiliza sobre todo para redes locales. La mayoría de las redes de área local que tienen un router, un switch o un hub7 siguen esta topología. El nodo central, en el caso de utilizar uno de estos dispositivos, sería el router, el switch o el hub por el que pasan todos los paquetes. Las ventajas que nos puede aportar una red en estrella sería la facilidad a la hora de implementarla, adecuada para redes temporales, el fallo de un nodo periférico no influiría en el comportamiento del resto de la red y no hay problemas con colisiones de datos ya que cada estación tiene su propia conexión al coordinador central. En contrapartida, la utilización de una red en estrella nos limita tanto el número de nodos que pueden estar conectados a la red, como la longitud del cableado (en caso de ser una conexión cableada). También se debe tener muy en cuenta que los costes de mantenimientos pueden aumentar a largo plazo, y que el fallo del nodo central puede echar abajo la red entera. A causa de todo ello, podemos confirmar que una red en estrella puede ser poco fiable en el momento de realizar transferencias de información Topología en árbol Topología de red en la que los nodos están colocados en forma de árbol. Para este tipo de topología el coordinador será la raíz del árbol. Desde una vista topológica, la conexión en árbol es parecida a una serie de redes en estrella interconectadas, salvo en que 43 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial no tiene un nodo central. En cambio, tiene un nodo de enlace troncal, generalmente ocupado por un hub o switch, desde el que se ramifican los demás nodos. En redes de árbol se permite el uso de Router ZigBee para interconectar los distintos nodos de la red. Así mismo, la comunicación en árbol es estrictamente jerárquica con lo que puede utilizar opcionalmente tramas balizas. Una falla de un nodo no implica la interrupción en las comunicaciones. Se comparte el mismo canal de comunicaciones. Los problemas asociados a este tipo de topología radican en que los datos son recibidos por todas las estaciones sin importar para quien vayan dirigidos. Por lo tanto es necesario dotar a la red de un mecanismo que permita identificar al destinatario de los mensajes. Además, debido a la presencia de un medio de transmisión compartido entre muchas estaciones, pueden producirse interferencias entre las señales cuando dos o más estaciones transmiten al mismo tiempo. La solución al primero de estos problemas aparece con la introducción de un identificador de estación destino. Para darle solución al segundo problema, hay que mantener una coordinación entre todas las estaciones, y para eso se utiliza cierta información de control en las tramas que controlan quien transmite en cada momento (utilización de tramas balizas mencionadas anteriormente). Topología en malla La topología más interesante es la topología de malla. Consiste en que al menos uno de los nodos tendrá más de dos conexiones. Con ello conseguimos que si, en un momento dado, un nodo del camino falla y se cae, pueda seguir la comunicación entre todos los demás nodos debido a que se rehacen todos los caminos. El establecimiento de una red de malla es una manera de encaminar datos, voz e instrucciones entre los nodos. Las redes de malla se diferencian de otras redes en que las piezas de la red (los nodos) están conectadas unas con otras por uno u otro camino. Esta configuración ofrece caminos redundantes por toda la red, de modo que si falla un cable, otro se hará cargo del tráfico. Esta topología, a diferencia de las vistas en apartados anteriores, no requiere de un servidor o nodo central, con lo que se reduce el mantenimiento. Un error en un nodo, sea importante o no, no implica la caída de toda la red. Como ya se ha comentado anteriormente, las redes de malla son autogenerables. La red puede funcionar incluso cuando un nodo desaparece o la conexión falla, ya que el resto de nodos evitan el paso por ese punto. Consecuentemente, se forma una red muy confiable. Gracias a las estructuras arbitrarias que permite la topología en malla , es posible llevar los mensajes de un nodo a otro por diferentes caminos. A consecuencia de este tipo de estructura no se pueden usar tramas balizas. Al igual que en la topología en árbol, las redes en malla permiten el uso de Routers ZigBee para habilitar la comunicación en el nivel de red. Éstos no son Coordinadores ZigBee, pero pueden serlo de sus respectivos espacios de operación personal definidos por 802.15.4. 44 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial Aunque la facilidad de solución de problemas y el aumento de la fiabilidad son ventajas muy interesantes, estas redes resultan caras de instalar, ya que utilizan mucho cableado. En la siguiente figura, se puede apreciar las diferentes topologías que puede tener una red ZigBee. Figura 30. Topologías de una red ZigBee Árbol de clusters Vistos los tipos de topologías que podemos manipular, encontramos que nuestro estándar menciona un tipo de red definido como “árbol de clusters”. Para ello se usan redes punto a punto. Las redes punto a punto pueden formar patrones arbitrarios de conexionado, donde su extensión se ve limitada únicamente por la distancia existente entre cada par de nodos. Forman la base de redes ad hoc8 autoorganizativas. El estándar no define un nivel de red, por lo que no se soportan funciones de ruteo de forma directa, aunque si ha dicho nivel se le añade se pueden realizar comunicaciones en varios saltos. Las estructuras árbol de clusters están formadas por el conexionado entre nodos FFD y RFD. Puesto que se necesita de al menos un nodo FFD para poder conectar diferentes RFD’s, se aprovecha de ello para generar estructuras donde los nodos RFD’s simbolizan las hojas de un árbol, y donde la mayoría de los nodos son FFD’s. A partir de los árboles de clusters podemos generar grandes redes de malla, cuyos nodos sean árboles de clusters con un coordinador local para cada cluster, junto con un coordinador global. 45 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial Figura 31. Árbol de clusters 2.4.8 Otros Medios de Transmisión de Datos y Elección Final Como ya hemos podido comprobar, el desarrollo de la tecnología de ZigBee se centra en la sencillez y bajo coste de sus nodos y en el bajo nivel de transmisión de información. Es por ello que su utilización en este proyecto es la más adecuada en comparación con otras redes inalámbricas semejantes de la familia WPAN, como por ejemplo Bluetooth. ZigBee vs. Bluetooth ZigBee es muy similar a Bluetooth, pero con algunas diferencias: - Una red ZigBee puede constar de más de 65000 nodos distribuidos en subredes de 255 nodos, frente a los 8 máximos de una subred (piconet9) Bluetooth. - Menor consumo eléctrico que el de Bluetooth. Este menor consumo se debe a que el sistema ZigBee, como ya se ha mencionado anteriormente, se queda la mayor parte del tiempo dormido, mientras que en una comunicación Bluetooth esto no se puede dar ya que suelen estar siempre transmitiendo y/o recibiendo. En la siguiente tabla podemos ver en términos exactos el consumo de ZigBee y de Bluetooth. Tabla 6. Consumo ZigBee Vs Bluetooth La velocidad ZigBee es menor a la de Bluetooth. ZigBee tiene una velocidad de hasta 250kbps, mientras que en Bluetooth es de hasta 1Mbps. Esta diferencia de valores es lógica si tenemos en cuenta que ZigBee se basa en una transmisión de datos baja, y por lo tanto no nos afecta en gran medida en el momento de transmisión y recepción de datos. Vistas las principales diferencias entre ZigBee y Bluetooth, podemos llegar a la conclusión de que uno es más apropiado que el otro para ciertas aplicaciones. Haciendo referencia a la diferencia de velocidades, Bluetooth se usa para aplicaciones con mayor carga de información para transmitir, como por ejemplo para teléfonos móviles e 46 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial informática casera; la velocidad de ZigBee se hace insuficiente para estas tareas, desviándolo a usos tales como la domótica, los productos dependientes de la batería, artículos de juguetería y sensores médicos, en los cuales la transferencia de datos es menor. Éste último caso de utilización de ZigBee, los sensores médicos, nos garantiza que ZigBee será un medio idóneo para este proyecto que se basa en la transmisión de datos a partir de medidas capturadas por un sensor de temperatura. Wireless USB Wireless USB es un protocolo de comunicación inalámbrica por radio con gran ancho de banda, que combina la sencillez de uso de USB con la versatilidad de las redes inalámbricas. Utiliza como banda frecuencial la plataforma UWB (Ultra-Wide Band), operando en los rangos de frecuencia de 3.1 a 10.6GHz. Puede lograr tasas de transmisión de hasta 480Mbps en rangos de tres metros y 110Mbps en rangos de diez metros. Gracias a su alta tasa de transferencia, Wireless puede usarse para aplicaciones que requieren un flujo de transferencia elevado. Wireless USB se utiliza en mandos de videoconsola, impresoras, escáneres, transmisión y visualización de vídeos, etc. Haciendo una comparativa de los principales aspectos de Wireless USB, Bluetooth, Wi-Fi y ZigBee, como podemos comprobar en la siguiente tabla, el rango de frecuencia en el que trabaja Wireless es superior al de los otros medios de transmisión, al mismo tiempo que su tasa de transferencia es más elevada. Centrándonos en los valores de transferencia y utilizando la lógica, a mayor tasa de transferencia mayor será el consumo, con lo cual no nos beneficia para el tipo de proyecto que queremos llevar a cabo. ZigBee sigue siendo la mejor opción. Tabla 7. Comparativa ZigBee – Bluetooth – Wireless USB – Wi-Fi Wi-Fi Wi-Fi, al igual que el resto de medios que estamos analizando, consiste en un sistema de envío de datos sobre redes que utiliza ondas en lugar de cables (wireless). Se basa en el estándar IEEE 802.11, y es por ello que podemos encontrar diversos tipos de Wi-Fi: - Los estándares IEEE 802.11 son fácilmente aceptados debido a que usan la banda frecuencial de 2.4GHz. La velocidad de transferencia del medio depende del estándar que se haga uso. Puede proporcionarnos una velocidad de 11Mbps (IEEE 802.11b) hasta 108Mbps (IEEE 802.11n), pasando por los 54Mbps del estándar IEEE 802.11g. 47 Monitorización Wireless Constantes Vitalesde un bebé - Automática y Electrónica Industrial En la actualidad ya se utiliza el estándar IEEE 802.11a, conocido como Wi-Fi5 ya que opera en la banda de 5GHz. Dicha banda frecuencial (5GHz) ha sido recientemente habilitada. Al no existir otras tecnologías como ZigBee o Bluetooth que hagan uso de ella, nos garantiza un mínimo de interferencias vecinas. Su alcance es algo menor que el de los estándares que trabajan a 2.4GHz. La principal ventaja que nos proporciona Wi-Fi, aparte de las altas velocidades de transferencia, es la capacidad de suministrar cobertura en un gran rango de distancia (capaz de alcanzar los 100 metros). Por otra parte, la desventaja fundamental de estas redes existe en el campo de la seguridad. Existen algunos programas capaces de capturar paquetes enviados y calcular la contraseña de la red, y de esta forma acceder a ella. Al igual que el resto de medios de transmisión wireless, la velocidad de transferencia se ve disminuida al no utilizar cables. Vistos los principales puntos que nos puede aportar la utilización de Wi-Fi (altas velocidades de transmisión y gran cobertura), se puede concluir que este tipo de medio quedaría fuera del tipo de transmisión que se pretende llevar a cabo al necesitar una mayor fuente de energía para poder proporcionar dichas tasas de velocidades. Wibree Wibree resultaría ser una opción a tener en cuenta para su empleo en este proyecto puesto que sus principales características y sus principios básicos son parejos a los ya vistos en ZigBee. Wibree es una nueva tecnología digital de radio interoperable para pequeños dispositivos. Consiste en una tecnología de comunicación inalámbrica que nos ofrece conexión y comunicación entre dispositivos móviles o computadores y otros dispositivos más pequeños. Su diseño está pensado para que funcione con un consumo de energía mínimo. Al igual que en ZigBee, Wibree opera a los 2.4GHz (banda ISM) haciendo posible la comunicación entre dispositivos de pila de botón y dispositivos Bluetooth. Su tasa de transferencia es superior respecto a ZigBee: 250kbps de ZigBee frente a 1Mbps de Wibree. Puesto que en este proyecto la cantidad de información a transmitir será mínima (datos medidos por el sensor de temperatura), la tasa de transferencia tampoco interesa, en primera instancia, que sea muy elevada. Wibree se diseñó para dos modos distintos de implementación: - Wibree de implementación única: Esta implementación está pensada para el funcionamiento de dispositivos que requieren un consumo bajo de energía, pequeños y de bajo costo, como por ejemplo relojes, sensores deportivos, teclados inalámbricos, etc. - Wibree de implementación modo dual (Bluetooth – Wibree): Se diseña para su uso en dispositivos Bluetooth donde Wibree se integra con Bluetooth y BluetoothRF, 48 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial utilizando los dispositivos existentes y dirigidos especialmente a dispositivos como teléfonos móviles y computadoras personales. TinyOS TinyOS es un sistema operativo open source basado en componentes para redes de sensores inalámbricas. Está diseñado para incorporar nuevas innovaciones rápidamente y para funcionar bajo las importantes restricciones de memoria que se dan en las redes de sensores. Las aplicaciones para TinyOS se escriben en nesC, un dialecto del lenguaje de programación C optimizado para las limitaciones de memoria de las redes de sensores; donde el lenguaje de programación nesC consiste en un conjunto de tareas y procesos que colaboran entre sí. Existen, además, varias herramientas que completan y facilitan su uso, escritas en su mayoría en Java y en Bash. TinyOS proporciona interfaces, módulos y configuraciones específicas, que permiten a los programadores construir programas como una serie de módulos que hacen tareas específicas. Los módulos de TinyOS proporcionan interfaces para los tipos estándar de entradas y salidas de hardware y sensores. A pesar de que TinyOS no sea una tecnología para comunicaciones inalámbricas, se puede tener en cuenta su utilización para posibles configuraciones y programaciones de redes inalámbricas. 49 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial Comparativa general Tabla 8. Comparativa entre los distintos medios de transmisión de datos Una vez analizados los distintos medios de transmisión inalámbricos podemos concluir diciendo que cada uno de los medios se adapta mejor a un tipo de necesidades, pero en este caso son primordiales el bajo consumo y la baja transmisión de datos, por lo tanto el medio que mejor se adapta es ZigBee. 50 Monitorización Wireless Constantes Vitalesde un bebé 2.5 Automática y Electrónica Industrial Módulos Zigbee en el Mercado. Actualmente existen cerca de una veintena de compañías dedicadas entre otras cosas a la manufacturacón de chips ZigBee, entre ellas, las más importantes son las siguientes: Atmel Corporation, Chipcon, Crossbow, Ember Corporation, Freescale, etc. MaxStream al igual que otros fabricantes desarrollan Módulos ZigBee utilizando estos chips, MaxStream ha optado por la plataforma ZigBee de Freescale. En este apartado se analizan distintos módulos ZigBee a fin de comparar sus especificaciones más relevantes. Entre las especificaciones se pueden mencionar a modo de ejemplo la corriente de transmisión, la corriente de recepción, la dimensión, los tipos de antenas, etc. Tabla 9. Comparativa módulos Zigbee 51 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial Tabla 10. Comparativa módulos Zigbee Analizando las tablas comparativas se puede observar que los productos ZigBee de MaxStream son la mejor opción frente a otros módulos de la competencia. Cuentan con unas dimensiones reducidas, una fácil integración, diferentes tipos de antenas según las necesidades del usuario final, un consumo aceptable, una buena disponibilidad, y la característica más relevante es la concesión del certificado ZigBee. Además, cabe destacar que existe bastante información, resultando ser un factor importante al momento de elegir un ódulo ZigBee, ya que una buena documentación permitirá que el desarrollo del proyecto avance de forma continuada y fluida en el transcurso del tiempo. La familia de productos Xbee de MaxStream ha recibido la homologación ZigBee que concede ZigBee Alliance, superando rigurosas pruebas hasta convertirse en uno de los pocos productos en recibir la exclusiva homologación ZigBee. 2.5.1 Elección Final La familia Xbee presenta 2 módulos, el Xbee y el Xbee-PRO. Las características de ambos son las siguientes: 52 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial Tabla 11. Comparativa módulos Xbee y Xbee Pro Para el desarrollo de este proyecto, se ha optado por escoger el modulo Xbee, con antena chip integrada. De los dos es el que más se ajusta por su bajo consumo y dimensiones. Con antena chip integrada, los alcances de las especificaciones se reducen un 70%, aun así, siguen siendo más que suficientes para el objetivo de este proyecto. 53 Monitorización Wireless Constantes Vitalesde un bebé 2.6 Automática y Electrónica Industrial El Microcontrolador 2.6.1 Función El microcontrolador se encargará de gestionar los recursos y los componentes. Se encargará de temporizar los estados de bajo consumo cuando no se necesite la temperatura y de despertar a los diferentes módulos cuando se requiera su uso. 2.6.2 Requisitos El microcontrolador escogido tendrá que comunicarse con el módulo Xbee de MaxStream y el sensor MCP9804 de Microchip. Partiendo de las características de cada uno de los equipos se debe elegir el microcontrolador más adecuado. Sensor MCP9804. Tensión de alimentación: desde 2’7 V a 5’5 V Entradas / salidas digitales necesarias: Figura 32. MCP9804 Para su comunicación, el sensor MCP9804 utiliza el protocolo I2C. SDA – PIN 1 SCL – PIN 2 La señal de Alert (PIN 3) no se utilizará en esta aplicación. Las señales A0, A1 y A2 (PIN 7, 6 y 5) se configurarán por hardware. 54 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial Módulo Xbee. Figura 33. Módulo Xbee Tensión de alimentación: desde 2’8 V a 3’4 V Entradas / salidas digitales necesarias: Para su comunicación, el módulo XBee utiliza la UART DOUT – PIN 2 DIN – PIN 3 Para entrar en modo de bajo consumo y salir del modo en bajo consumo se utiliza el PIN 9. SLEEP_RQ – PIN 9 El resto de entradas / salidas no se aplican en este proyecto. Por lo tanto el microcontrolador deberá disponer: - Capacidad para una comunicación I2C - Capacidad para una comunicación UART - Un pin digital para controlar el modo de funcionamiento del módulo XBee. - Debe funcionar con una tensión de alimentación comprendida entre 2’8V y 3’4V. - Debe poder trabajar en modo de bajo consumo y despertarse por si solo transcurrido un determinado periodo de tiempo. 55 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial Requisitos Microcontrolador Dispositivo PIN 1 SDA Sensor MCP9804 2 SCL 2 DOUT Módulo Xbee 3 DIN 9 SLEEP_RQ I2C UART Tabla 12. Requisitos del microcontrolador. 2.6.3 Alternativas Aunque existen múltiples fabricantes, los posibles microcontroladores se han buscado dentro de la gama que el fabricante MICROCHIP posee. El principal motivo de la decisión de usar un microcontrolador de MICROCHIP es que suelen ser de bajo coste y ya disponemos de las herramientas y equipos necesarios para su programación. El programa usado para su programación ha sido el CCS y el hardware para cargar los progamas el USB PIC BURNER. 2.6.4 Elección Final Dentro de la amplia gama de microcontroladores que posee Microchip, tiene las versiones LF que trabajan a baja tensión. Para esta aplicación, estas versiones son las más idóneas ya que trabajan a partir de los 2V de tensión de alimentación. El resto de familias necesitan 4’2V como mínimo. Al ser un prototipo no se ha buscado ajustar el microcontrolador a las necesidades iniciales de diseño, ya que limitaría al equipo en sus posibles mejoras, por lo que se ha buscado un microcontrolador que facilitase la incorporación de nuevas opciones al prototipo. Finalmente, el microcontrolador escogido es el PIC 18LF2525. Es un microcontrolador de 24 pines, no excesivamente grande, pero lo suficiente para poder disponer de puertos libres para posibles ampliaciones. Las características de este microcontrolador son iguales a las del PIC 18F2525, únicamente cambia la tensión mínima de alimentación. 56 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial Tabla 13. Características PIC18F2525. 57 Monitorización Wireless Constantes Vitalesde un bebé 2.7 Automática y Electrónica Industrial Módulo 2: Equipo de Sobremesa 2.7.1 Funciones: El módulo 2 es el equipo encargado de realizar las funciones de interface con el usuario. Su principal misión será la de mostrar en todo momento la temperatura corporal que el módulo 1 está midiendo. A su vez, permitirá que el usuario disponga de una serie de opciones para ajustarse a las necesidades de este. Entre otras cosas deberá permitir: - Conocer si el módulo 1 se encuentra con batería o sin batería. - Programar la temperatura a la que quiere que el dispositivo de la alarma. 2.7.2 Diagrama de Bloques: El diagrama de bloques del modulo 2 será el siguiente: Regulador 5V LCD Regulador 3'2V uC AC / DC Sist. Wireless Figura 34. Diagrama funcional de bloques Módulo 2 Estará formado por: - Un circuito de alimentación. Se encargará de alimentar los diferentes elementos con las tensiones adecuadas. 58 Monitorización Wireless Constantes Vitalesde un bebé - Automática y Electrónica Industrial El microcontrolador Se encargará de gestionar la información recibida por los pulsadores y el módulo de comunicación Xbee. Enviará la información al módulo LCD para mostrarlo por pantalla y se podrá configurar la aplicación. - El módulo LCD Se encargará de mostrar la información que le envia el microcontrolador, tanto los menús de configuración, como la temperatura del módulo 1. - Pulsadores Mediante unos pulsadores, el usuario podrá configurar el módulo 2. - Zumbador, Es el encargado de avisar al usuario cuando alguna alarma se activa. Como por ejemplo: - - Temperatura alta / baja del usuario. - Falta batería en el módulo 1. El módulo de comunicación inalámbrica Es el encargado de recibir la información proporcionada por el módulo 1 y enviarla al microcontrolador. 2.7.3 El módulo de comunicación inalámbrica. Tal y como se ha evaluado en el módulo 1, el dispositivo inalámbrico adecuada para la comunicación en este tipo de aplicaciones es un dispositivo que utilice la tecnología ZigBee. El módulo escogido es el Xbee de Maxstream, la justificación es la misma que para el módulo 1. 2.7.4 El módulo LCD. Las pantallas de cristal líquido LCD o display LCD para mensajes (Liquid Cristal Display) tienen la capacidad de mostrar cualquier carácter alfanumérico, permitiendo representar la información que genera cualquier equipo electrónico de una forma fácil y económica. 59 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial La pantalla consta de una matriz de caracteres (normalmente de 5x7 o 5x8 puntos) distribuidos en una, dos, tres o cuatro líneas de 16 hasta 40 carácteres cada línea. El proceso de visualización es gobernado por un microcontrolador incorporado a la pantalla, siendo el HITACHI 44780 el modelo de controlador más utilizado. En la siguiente figura se puede observa un LCD. Figura 1 : LCD de 2x16: está compuesto por 2 líneas de 16 carácteres En el presente proyecto se ha optado un un LCD de 2x16, ya que la cantidad de información a mostrar es mínima. Las características generales de un módulo LCD 16x2 son las siguientes: - Consumo muy reducido, del orden de 7’5 mW. - Pantalla de carácteres ASCII, además de los carácteres japoneses kanji, carácteres griegos y símbolos matemáticos. - Desplazamiento de los carácteres hacia la izquierda o a la derecha. - Memoria de 40 carácteres por línea de pantalla, visualizándose 16 carácteres por línea. - Movimiento del cursor y cámbio de su aspecto. - Permite que el usuario pueda programar 8 carácteres. - Pueden ser gobernados de 2 formas principales: - Conexión con bus de 4 bits. - Conexión con bus de 8 bits. En este caso, se ha optado por una conexión con bus de 4 bits. La ventaja frente al bus de 8 bits es su velocidad de transmisión de datos, sin embargo, al ser la necesidad de velocidad en la muestra de los datos en nuestra aplicación baja, no es necesario una conexión de 8 bits. Además, nos permite disponer de 4 pines más del microprocesador libres. 60 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial En la siguiente tabla, se presenta la descripción de señales empleadas por el módulo LCD así como el número de patilla a la que corresponden. Tabla 14. Señales del módulo LCD El módulo LCF posee una zona de memoria RAM llamada DDRAM (Data Display Ram) donde se almacenan los caracteres que se van a mostrar en la pantalla. Tiene una capacidad de 80 bytes, 40 por cada línea, de los cuales sólo 32 se pueden visualizar a la vez (16 bytes por línea). De las 80 posibles, las dos direcciones más importantes de la DDRAM son: - Dirección 00h, que es el comienzo de la primera línea - Dirección 40h, que es el comienzo de la segunda línea. Además de la DDRAM, el módulo LCD dispone de una memoria interna no volátil llamada CGROM donde se almacena una tabla con los 192 caracteres que pueden ser visualizados. Cada uno de los caracteres tiene su representación binaria de 8 bits. Para visualizar un carácter debe recibir por el bus de datos el código correspondiente. 61 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial Tabla 15. Caracteres ASCII Como ya he comentado anteriormente, la conexión del LCD al microcontrolador se realizará mediante 4 bits, utilizaremos el puerto B del PIC para realizar esta conexión. Las conexiones son las siguientes: - Las 4 líneas superiores del módulo LCD, pines <DB7:DB4> se conectan a las 4 líneas del puerto B de la siguiente manera: - DB4 - PIN B4 - DB5 - PIN B3 - DB6 - PIN B2 - DB7 - PIN B1 - PIN RS del LCD a la línea PIN B7 del PIC - PIN R/W del LCD a la línea PIN B6 del PIC - PIN Enable del LCD a la línea PIN B5 del PIC 62 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial La siguiente figura muestra un ejemplo de esquema de conexión del módulo LCD, aunque no es la utilizada en el presente proyecto ya que en la figura se utiliza el puerto D. Figura 35. Conexión a 4 bits Para su funcionamiento he utilizado la librería que el compilador CCS ya incorpora con subrutinas de control. 2.7.5 Pulsadores Se han implementado 3 pulsadores mediante los cuales el usuario puede acceder al menú de la aplicación y configurarla. La denominación de los pulsadores será: - Pulsador 1 Æ Menu / OK - Pulsador 2 Æ Sig. + - Pulsador 3 Æ Prev. – El circuito para implementar los pulsadores es el siguiente: 63 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial VCC Pulsador PIN uC R1 10k Figura 36. Esquema conexión pulsador Para evitar rebotes en la señal durante la pulsación se implementa mediante software un retardo en la siguiente lectura del pulsador, evitando así que en una misma pulsación se detecten varias. 2.7.6 Zumbador El zumbador utilizado es un zumbador (buzzer) electromecánico. Se activará mediante un PIN del microcontrolador. Debido a que la intensidad máxima que puede proporcionar un pin a su salida es de 25 mA, utilizaremos un transistor NPN en la siguiente configuración como interruptor. 2 VCC 1 BUZZER PIN uC R2 1k Q1 NPN BCE Figura 37. Esquema conexión zumbador 2.7.7 Alimentación Los diferentes sistemas que forma el módulo se alimentan principalmente a 2 tensiones diferentes. El microcontrolador y el módulo Xbee y el zumbador se alimentan a 3,2 V mientras que el LCD se alimenta a 5 V. La tensión de alimentación general la obtenemos de la red eléctrica a 230V – 50 Hz y mediante un transformador la pasamos 9 V de tensión continua. Mediante 2 reguladores de tensión obtenemos las tensiones deseadas. 64 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial El regulador LM317 es un regulador ajustable, con una tensión a su salida que puede ajustar entre los 1’2V y los 37V. Mediante el LM317 conseguimos la tensión de 3’2V deseada. Su conexión típica es la que aparece en su hoja de características y es la siguientes: Figura 38. Montaje típico LM317 Donde la tensión de salida Vou viene dada por la siguiente expresión: (9) Para la tensión de 5V, hemos elegido el regulador L7805 que proporciona una tensión fija a su salida de 5V. Su conexión típica según su hoja de características es la siguiente: Figura 39. Montaje típico 7805. 65 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial Para evitar posibles conexiones incorrectas de la alimentación, hemos colocado un diodo en serie justo a la salida del transformador, así evitamos la alimentación inversa. 66 Monitorización Wireless Constantes Vitalesde un bebé 2.8 Automática y Electrónica Industrial Manual de Funcionamiento Para operar con los equipos se deben seguir una serie de pasos que se enumeran a continuación. 1- Conectar el módulo de sobremesa a la red y poner el interruptor en posición ON. 2- La pantalla del LCD se encenderá y aparecerán los comandos AT de configuración del módulo Xbee. 3- Una vez configurado aparecerá sobre la pantalla el mensaje “esperando dato”. 4- Una vez ha aparecido el mensaje “esperando dato” se procede a conectar el dispositivo inalámbrico poniendo el interruptor en posición ON. 5- Tras unos segundo aparecerá la temperatura en la pantalla LCD. En cualquier momento, y siempre después de configurarse el módulo Xbee del dispositivo de sobremesa, se puede entrar al menú de configuración mediante el pulsador “Menú”. El Menú presenta el siguiente árbol de submenus: Menú: 1- Alarma. Configura los parámetros de alarma de la temperatura. 1.1- T. Max. Dentro de este apartado se puede modificar el valor de alarma para la temperatura máxima. 1.2- T. Min. Dentro de este apartado se puede modificar el valor de alarma para la temperatura mínima. 1.3- Act. Alarma. Dentro de este apartado se puede activar o desactivar la alarma sonora de temperatura. Por defecto, cuando arranca el equipo está desactivada. 1.4- Salir. Sale del submenu alarma. 2- Termómetro. Dentro de este submenu se puede configurar el tiempo de muestreo de la temperatura, un intervalo de 5s mínimo a un intervalo de 60s. 3- Save conf. Dentro de este submenu se guarda la configuración del usuario en la Eeprom del dispositivo. La siguiente vez que se enciende se carga la última configuración salvada. 4- Salir. Sale del menú. En caso de que una vez conectado el dispositivo de sobremesa pasen más de 2 minutos sin que se reciba señal de dispositivo inalámbrico, aparece por pantalla la señal de “Dispositivo no conectado o Baja Bateria”. 67 Monitorización Wireless Constantes Vitalesde un bebé 3 Automática y Electrónica Industrial MEMORIA DE CÁLCULO A partir de los elementos reflejados en la memoria descriptiva, se han desarrollado dos programas para los microcontroladores de los módulos 1 y 2. El lenguaje utilizado es el CCS, ya que dispone de herramientas y librerias muy útiles y se trata de un lenguaje muy parecido al C. El compilador utilizado es el PCWHD versión 4.104 de CCS. 3.1 Diagrama de Flujo Módulo 1: Equipo Inalámbrico con Sensor de Tª A continuación se refleja el diagrama de flujo del programa que gobierna el microcontrolador. En la primera y segunda figura se muestra el diagrama de flujo de las interrupciones del TIMER1 y de la UART. Inicio interrupcion Timer1 Contador_timer ++ Si contador_timer>tiempo_muestreo No Si muestrea_envia=1 contador_timer=0 Cargo Timer1 Fin Interrupción Figura 40. Diagrama de flujo Interrupción TIMER1 68 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial El código es el siguiente: #int_TIMER1 (temporizador) //Vector de interrupción por TIMER1 void TIMER1_isr(void) { contador_TIMER1++; if (contador_TIMER1>tiempo_de_muestreo) segundos //(500ms*tiempo_de_muestreo =xx segundos) //500msx60=30s { muestrea_envia=1; contador_TIMER1=0; } set_timer1(0x0BDC); //Carga el timer1 } Funcionamiento: Cada 500 ms se produce una interrupción por el Timer 1 del microcontrolador. Cuando entra en la interrupción, se incrementa un contador y se compara con el tiempo de muestreo preestablecido. Si es mayor, entonces la variable muestrea_envia toma valor 1 y se pone a 0 el contador. Esta variable, indicará al programa principal que puede muestrear la Tª del sensor y enviarla al módulo de sobremesa. Finalmente, se carga el Timer1 con el valor 0x0BDC para que vuelva a generar una interrupción a los 500 ms. 69 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial Inicio Interrupción UART Si kbhit Si dato=getc() No dato_recibido=1 Fin Interrupción Figura 41. Diagrama de flujo Interrupción UART El código es el siguiente: #int_rda //Vector de interrupcion de la recepcion de void rda_isr(void) //por el usart datos { if (kbhit()) // si entra un dato { dato[indi]=getc(); aux[indi]=dato[indi]; indi++; dato_recibido=1; ; } } Funcionamiento: Si se genera una interrupción de la UART en primer lugar miro si es debido a la entrada de un dato (if (kbhit)). Si se genera por la entrada de un dato, leo ese dato, hago una copia en una variable auxiliar he indico al programa principal que he recibido un dato (dato_recibido=1). 70 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial El siguiente diagrama de flujo muestra el programa principal. 71 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial Inicio Inicio variables globales Configuro Xbee No Si "recibo_dato=1" Si Defino el tiempo de muestreo Obtengo Tª del sensor Envio el dato Configuro Timer1 Si "muestrea_envia=1" No Si Xbee modo normal uC modo bajo consumo Obtengo Tª del sensor Envio el dato Xbee bajo consumo muestrea_envia=0 Mientras True Figura 42. Diagrama de flujo programa principal 72 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial El código del programa principal es el siguiente: void main() { dato_recibido=0; indice=0; indi=0; inicio_Xbee(); while (dato_recibido==0) {} printf("z"); configuracion // señal para el coordinador de fin de delay_ms(1000); tiempo_de_muestreo=((aux[0]-48)*10)+(aux[1]-48); delay_ms(1000); muestrea(); envia(); inicio_TIMER1(); do { if (muestrea_envia==1) { output_low(PIN_C5); XBee, si C5=0, lo despierta delay_ms(20); espero 20 ms // PIN_C5 está conectado al SLEEP_RQ del // El Xbee tarda 13'2 ms en despertarse, muestrea(); envia(); output_high(PIN_C5); // Si C5=1->SLEEP_RQ=1, Xbee entra en modo sleep (<10 uA de consumo) muestrea_envia=0; } else { SCS1=1; SCS2=0; IDLE=1; sleep(); // Duermo el microcontrolador pero dejo funcionando el TIMER1, cuando provoque interrupción despierta. } }while (TRUE); } 73 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial Funcionamiento: En primer lugar inicializo las variables globales. Configuro el módulo Xbee mediante la acción inicio_Xbee(). Durante su configuración, y para entrar en modo comando, el módulo Xbee envia el comando +++ al módulo de sobremesa indicando que está configurando el módulo Xbee, cuando termina la configuración envia el carácter “z”, cuando éste lo recibe, le envía un valor entero con el tiempo de muestreo deseado. En el bucle del while, se espera a recibir este dato. Una vez recibido, se envía el carácter “z” al módulo de sobremesa para que sepa que se ha recibido correctamente el valor del tiempo de muestreo, y después se actualiza ese valor. A continuación, se activa el sensor, se toma el valor de la Tª, se pone al sensor en bajo consumo y se envía ese valor por el módulo Xbee. Se configura el Timer1 para que genere una interrupción cada 500 ms y se entra en un bucle cerrado infinito. En este bucle, se mira si la variable muestrea_envia toma el valor 1, si es así, se saca al módulo Xbee de su modo de bajo consumo, se saca al sensor de su modo de bajo consumo, se muestrea la Tª, se pone al sensor en modo de bajo consumo, se envía el dato y se vuelve a poner al módulo Xbee en modo de bajo consumo. Una vez enviado, muestrea_envia vuelve a valer 0. La variable muestrea_envia toma el valor 1 cuando el número de interrupciones realizadas por el timer 1 toma un valor superior a valor de tiempo de muestreo. En ese momento, la interrupción pone muestrea_envia a 1 y vuelve a inicializar el contador de interrupciones. Si muestrea_envia está a 0, el microcontrolador entra en modo de bajo consumo. Únicamente despertará en la interrupción del Timer1. Volverá a analizar el valor de muestrea_envia, y si es 0 volverá a modo de bajo consumo,sino, enviará la temperatura. Este ciclo lo realizará infinitamente. El código completo del programa se encuentra en el capítulo de Anexos. 3.2 Diagrama de Flujo Módulo 2: Módulo de Sobremesa Para representar el programa del módulo de sobremesa se ha utilizado 3 diagramas de flujo. Los dos primeros representan los diagramas de flujo de las interrupciones provocadas por el microcontrolador, mientras que el último representa el desarrollo principal del programa. 74 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial Interrupción Timer1 Contador_timer1++ Si (alarma=1) y (activar_alarma=1) Si Si (contador_alarma=1) No Si No Dispositivo_no_conectado=1 Si Contador_alarma=0 Contador_alarma=1 Suena alarma Desactiva Alarma Si contador_timer1>180 No Contador_timer1=0 Cargo Timer1 Fin Interrupción Figura 43. Diagrama de flujo interrupción TIMER 1 El código es el siguiente: #int_TIMER1 (temporizador) //Vector de interrupción por TIMER1 void TIMER1_isr(void) { contador_TIMER1++; if ((alarma==1)&&(activar_alarma==1)) { if (contador_alarma==1) { output_high(PIN_C2); contador_alarma=0; } else { if (contador_alarma==0) { output_low(PIN_C2); 75 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial contador_alarma=1; } } } if (contador_TIMER1>180) // 60 segundos (500ms*120=60 segundos) { disp_no_conectado=1; contador_TIMER1=0; } set_timer1(0x0BDC); //Carga el timer1 } Funcionamiento: En el programa principal se carga el valor del Timer1 con el valor 0xBDC, con lo que conseguimos que se realice una interrupción cada 500 ms. Una vez dentro de la interrupción, se incrementa un contador. Cuando este contador es mayor al valor de 180, significa que no se ha recibido ningún mensaje del módulo inalámbrico durante más de 60 segundos, por lo que se da la señal de alarma de dispositivo no conectado. A su vez, si tenemos la alarma de temperatura activada, cada 500 ms cambia el estado del zumbador, de activo a inactivo y viceversa, consiguiendo así una señal de alarma intermitente. 76 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial Inici Interrupción UART Si (comando=1) Si No dato=getc() dato=getc() aux=dato recibido=1 Fin Interrupción Figura 44. Diagrama de flujo interrupción UART El código es el siguiente: #int_rda de datos //Vector de interrupcion de la recepcion void rda_isr() //por el usart { if (comando==1) { if (kbhit()) { dato[indice]= getc(); //Se lee el dato recibido indice++; } } if (comando==0) { if (kbhit()) { dato[indice]=getc(); 77 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial aux[indice]=dato[indice]; indice++; recibido=1; } } } Funcionamiento: Cuando se provoca la interrupción de la UART, en primer lugar miro se el módulo se encuentra en modo comando, esto significa que está configurando el módulo Xbee. Si es así, y tambien se da la condición de que la interrupción es provocada por una entrada de datos, entonces guardo el dato entrante en la variable datos. Si el módulo no se encuentra en modo comando, y también se da la condición de que la interrupción es provocada por una entrada de datos, guardo ese dato en la variable dato, hago una copia de dato a una variable auxiliar, aux, e indico que se ha recibido un dato. 78 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial Inicio Inicio LCD Inicio variables Inicio Xbee Inicio Timer1 Si (presiono Menu) Entro en menu() Si No Si (recibido=1) Contador_timer1=0 Si Si (dato[0]=+) Si ini_Xbee=0 No Si (dato[0]=x) Si Si (Xbee_ok=1) sensor_ok=1 No envio t_muestreo sensor_ok=0 envio t_muestreo ini_Xbee=1 ini_Xbee=1 No sensor_ok=1 Si (dato[0]=z) Si No Si Xbee_ok=1, sensor_ok=1, ini_Xbee=1 escribe en LCD la Tª Ejecuta Alerta() Si dispositivo_no_conectado=1 No Si escribe en LCD"No conectado" dispositivo_no_conectado=0 Mientras (True) Figura 44. Diagrama de flujo programa Principal 79 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial El código es el siguiente: void main() { set_tris_c(00111000); (Pin7,6,5,4,3,2,1,0) //0 = salida, 1 = entrada int xbee_ok=0; int sensor_ok=0; int ini_xbee=0; inicio_LCD(); inicio_variables(); inicio_Xbee(); inicio_TIMER1(); do { // Si presiona el boton Menu (PIN C3) entra en Menu. if (input(PIN_C3)) { if (C3==-1) C3++; else{ opciones_menu(); } } // Si recibo dato del sensor... if ((recibido==1)) { contador_TIMER1=0; conectado vuelve a cero. // El contador de sensor no index=0; // Si recibido la '+', indica que el Xbee del módulo sensor se está configurando if (dato[0]=='+') ini_xbee=0; // Si recibido la 'x', envio t_muestreo e indico que el Xbee del módulo sensor está configurado if (dato[0]=='x') { if (xbee_ok==1) { sensor_ok=0; printf("%d",t_muestreo); 80 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial ini_xbee=1; } else { xbee_ok=1; printf("%d",t_muestreo); ini_xbee=1; } for (index=0;index<8;index++) {dato[index]='f';} } // Si recibido la 'z', el módulo sensor ha recibido el tiempo de muestreo if (dato[0]=='z') { sensor_ok=1; for (index=0;index<8;index++) {dato[index]='f';} } //Si del módulo sensor el Xbee y el sensor están configurados, recibo la temperatura y la muestro por pantalla. if ((ini_xbee==1)&&(xbee_ok==1)&&(sensor_ok==1)) { lcd_putc("\f Temp="); escribe_dato_lcd(); T_real=((aux[0]-48)*10)+(aux[1]-48)+((aux[3]48)*0.1)+((aux[4]-48)*0.01); alerta(); } index=0; T_real=0; delay_us(15); recibido=0; indice=0; } if (disp_no_conectado==1) { lcd_putc("\fSENSOR NO CONECT\n"); lcd_putc("o BAJA BATERIA\n"); disp_no_conectado=0; 81 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial } }while (TRUE); } Funcionamiento: En primer lugar, inicio variables, el módulo LCD, el módulo Xbee y el timer 1. Este último lo configuro para que realice una interrupción cada 500 ms. Una vez configurado el timer 1 el programa entra en un bucle infinito. Dentro de este bucle realiza secuencialmente varias acciones: Si se presiona el botón de menú, entonces entra en la opción menú. Si se ha recibido un dato, lo compara con varios caracteres: 1- Si es un “+”, significa que el módulo inalámbrico está configurando su módulo Xbee. 2- Si es una “x” indica que el módulo inalámbrico ha terminado de configurar su módulo Xbee, en ese momento se envia el valor del tiempo de muestreo que se desea realizar de la Tª. 3- Si recibe una “z” indica que el módulo inalámbrico ha recibido ese dato correctamente. 4- Si el módulo inalambrico ha configurado su módulo Xbee y tiene el tiempo de muestreo, se escribe el dato del sensor por pantalla y se ejecuta la función alerta. Esta compara la temperatura con un máximo y un mínimo y da una señal de alarma. Si la variable dispositivo no conectado toma valor 1, significa que hace más de 60 segundos que no se ha recibido un dato del dispositivo inalámbrico, por lo que se muestra por pantalla del LCD la seña de DISPOSITIVO NO CONECTADO O BAJA BATERÍA. El código completo se encuentra en el capítulo de Anexos. 82 Monitorización Wireless Constantes Vitalesde un bebé 3.3 Automática y Electrónica Industrial Batería Módulo 1: Módulo inalámbrico Para la alimentación del módulo 1 se ha escogido un batería de 3’6V, 2600mA, AA. Aunque existen en el mercado las pilas tipo botón, de menor tamaño, he considerado que al ser un prototipo susceptible de mejoras y al que se le podrían añadir nuevos componentes, la batería a escoger debía estar sobredimensionada. La duración aproximada de la batería, en funcionamiento continuo, y realizando un muestreo de temperatura cada minuto sería el siguiente: Características de la pila: Tensión: 3’6 V Capacidad: 2600 mA/h Elementos conectados y consumos: Dispositivos PIC 18LF2525 MCP9804 Xbee (uA) Modo Normal Modo bajo consumo 11 2,50 200 0,10 45000 10 Totales (uA) = 45211 12,6 Tabla 16. Consumos en modo normal y bajo consumo Suponiendo que el usuario desea una muestra de temperatura cada minuto, y que adquirir esa muestra en el peor de los casos conllevará que los componentes funcionen en modo normal durante menos de un segundo. Siendo: Tmn = tiempo (s) funcionamiento en modo normal Imn = consumo en modo normal Tbc = tiempo (s) funcionamiento en modo bajo consumo Ibc = consumo en modo bajo consumo Suponemos Tmn = 1 s y Tbc=59s. El consumo del equipo será: 83 Monitorización Wireless Constantes Vitalesde un bebé Consumo = Automática y Electrónica Industrial Tmn ⋅ Im n + Tbc ⋅ Ibc (10) Tmn + Tbc Sustituyendo obtenemos un consumo de 0’77mA. Dividiendo la capacidad de la batería (mA/h) entre el consumo (mA), obtenemos las horas de funcionamiento. El resultado son 3395 horas, aproximadamente 4 meses y medio. Esta es la duración del equipo si su funcionamiento fuese continuo. Si el uso doméstico fuese igual que el de los termómetros, su uso sería esporádico, por lo que el dispositivo podría durar años con la misma batería. Suponiendo su uso 10 días al mes, durante 8 horas seguidas hacen un total de 80 horas. Diviendo entre las 3395 horas, nos salen 42 meses, aproximadamente tres años y medio. 84 Monitorización Wireless Constantes Vitalesde un bebé 3.4 Automática y Electrónica Industrial Datos experimentales Se ha comprobado el correcto funcionamiento del sensor y el envio de datos al módulo de sobremesa comparando la temperatura dada con la obtenida mediante un termómetro digital de farmacia. En la siguiente tabla se muestran los resultados obtenidos: Sensor 36,18 36,00 36,05 36,25 36,34 ºC Termómetro farmacia 36,2 36 36,1 36,2 36,2 error 0,02 0,00 0,05 -0,05 -0,14 Tabla 17. Comparativa valores obtenidos. Las muestras se han obtenido en diferentes días. 85 Monitorización Wireless Constantes Vitalesde un bebé 4 Automática y Electrónica Industrial PLANOS La relación de planos es la siguiente: Nº PLANO Plano nº 1 Plano nº 2 Plano nº 3 Plano nº 4 Plano nº 5 Plano nº 6 Descripción Esquema Módulo 1: Módulo inalámbrico Esquema Módulo 2: Módulo de sobremesa Disposición elementos Módulo 1: Módulo Inalámbrico Disposición de elementos Módulo 2: Módulo de sobremesa Fotografía Módulo 1 Fotografía Módulo 2 Tabla 18. Relación de planos. 86 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial V1 + 3V U7 V1 + 3V V1 + 3V SDA SCL U6 V1 + 3V SWITCH D3 BAT54/SOT +3 '6V V1 2 3 4 5 6 7 21 22 23 24 25 26 27 28 9 1 SW5 R11 V1 + 3V 20 RA0/AN0 RC0/T1OSO/T1CKI RA1/AN1 RC1/T1OSI/CCP2 RA2/AN2/VREFRC2/CCP1 RA3/AN3/VREF+ RC3/SCK/SCL RA4/T0CKI RC4/SDI/SDA RA5/SS/AN4 RC5/SDO RC6/TX/CK RB0/INT RC7/RX/DT RB1 RB2 OSC2/CLKOUT RB3/PGM RB4 RB5 RB6/PGC RB7/PGD 11 12 13 14 15 16 17 18 R10 10k 19 8 8 7 6 5 MCP9804 SDA 10 V1 + 3V U5 RX TX MCLR/VPP/THV VDD SDA Vdd SCL A0 Alert A1 GND A2 TX RX OSC1/CLKIN 10k R9 10k SCL 1 2 3 4 1 2 3 Vcc Dout Din GND GND C6PIC18LF2525 1nF 9 10 V1 + 3V SLEEP_RQ GND XBee Nº Plano: Título: Escala Plano 1 Esquema Módulo 1: Módulo inalámbrico Proyecto: --:-Fecha: 01/06/2011 Monitorización wireless de las constantes vitales de un bebé Versión 0 Hoja 1/1 87 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial V2 +9V DC SWITCH 1 BNC V2 U2 LM317/TO220 D2 R1 330 2 1 3 BAT48 C1 0.1uF VIN 1 R8 330 VOUT 2 V1 + 3'2V ADJ U3 7805 1 C2 1uF VIN 3 VOUT C3 1uF V3 +5V C4 10uF D1 LED R2 10k 2 LS1 V1 + 3'2V 1 R12 21 22 23 24 25 26 27 28 V3 +5V R7 9 10k R6 1 SW4 20 RA0/AN0 RC0/T1OSO/T1CKI RA1/AN1 RC1/T1OSI/CCP2 RA2/AN2/VREFRC2/CCP1 RA3/AN3/VREF+ RC3/SCK/SCL RA4/T0CKI RC4/SDI/SDA RA5/SS/AN4 RC5/SDO RC6/TX/CK RB0/INT RC7/RX/DT RB1 RB2 OSC2/CLKOUT RB3/PGM RB4 RB5 RB6/PGC RB7/PGD SW1 10 RX MCLR/VPP/THV VDD SW2 R3 10k V1 + 3'2V OSC1/CLKIN C5 1nF 10k 11 12 13 14 15 16 17 18 BUZZER SW3 R4 10k V1 + 3'2V R5 10k V1 + 3'2V TX V1 + 3'2V GND GND 2 3 4 5 6 7 Q1 NPN BCE 10k U1 19 8 LCD_PIN OUT 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 J2 U4 PIC18LF2525 RX V1 + 3'2V V1 + 3'2V TX 1 2 3 9 10 Nº Plano: Título: Escala Vcc Dout Din SLEEP_RQ GND Plano 2 Esquema Módulo 2: Módulo de sobremesa Proyecto: --:-Fecha: XBee 01/06/2011 Monitorización wireless de las constantes vitales de un bebé Versión 0 Hoja 1/1 88 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial Pila 3'6V Switch SW5 D3 Port B C8 R10 R9 Sensor C6 UART PIC 18LF2525 Port C Port A R11 Xbee Nº Plano: Título: Escala Plano 3 Disposición elementos Módulo 1: Módulo Inalámbrico Proyecto: --:-Fecha: 01/06/2011 Monitorización wireless de las constantes vitales de un bebé Versión 0 Hoja 1/1 89 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial +9 Vdc C2 Switch1 +9V R6 R8 +3'2V UART U2 Q1 Port B R5 Xbee R4 SW1 SW2 R3 UART PortA R12 PortB LCD R2 U1 PIC 18LF2525 SW4 Port C D2 C5 C1 D1 +3'2V R1 SW3 R7 C3 U3 C4 Buzzer Nº Plano: Título: Escala Plano 4 Disposición de elementos Módulo 2: Módulo de sobremesa Proyecto: --:-Fecha: 01/06/2011 Monitorización wireless de las constantes vitales de un bebé Versión 0 Hoja 1/1 90 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial Nº Plano: Título: Escala Plano 5 Fotografía Módulo 1 Proyecto: --:-Fecha: 01/06/2011 Monitorización wireless de las constantes vitales de un bebé Versión 0 Hoja 1/1 91 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial Nº Plano: Título: Escala Plano 6 Fotografía Módulo 2 Proyecto: --:-Fecha: 01/06/2011 Monitorización wireless de las constantes vitales de un bebé Versión 0 Hoja 1/1 92 Monitorización Wireless Constantes Vitalesde un bebé 5 PRESUPUESTO 5.1 Mediciones Automática y Electrónica Industrial Las mediciones son el conjunto de todos los conceptos necesarios para la ejecución del proyecto, agrupando por separado todas aquellas unidades que sean objeto del mismo precio. Las mediciones del proyecto son las siguientes: MEDICIONES 5.2 ITEM UNIDAD DESCRIPCIÓN CANTIDAD 1 ud 1 2 3 ud ud 4 ud 5 ud 6 ud 7 8 9 10 11 12 13 ud ud ud ud ud ud ud 14 ud 15 16 17 18 19 ud ud ud ud ud 20 21 22 23 24 25 26 27 28 ud ud ud ud ud ud ud ud Pa Suministro y montaje de OMNICELL - ER14505S - BATERÍA, LITIO, AA, 3'6V, 2400mAh Suministro y montaje de KEYSTONE - 2460 - BATTERY HOLDER Suministro y montaje de microcontrolador de MICROCHIP - PIC18LF2525-I/SP - 8BIT MCU, 48K FLASH, PDIP28 Suministro y montaje de MULTICOMP - 2227MC-28-06-07-F1 - ZÓCALO, DIL, 0.6", 28VÍAS Suministro y montaje de NKK SWITCHES - GW12RHP - INTERRUPTOR OSCILANTE, SPDT, ON-ON Suministro y montaje de ALPS - SKHHARA010 - INTERRUPTOR, TÁCTIL, PCB, 2.55N Suministro y montaje de Resistencia 10 kΩ, 0'25W, 1% Suministro y montaje de placa a topos de 160x100mm. Suministro y montaje de sensor de temperatura MCP9804-E/MS. Suministro y montaje de placa MSOP a DIP para sensor. Suministro y montaje de módulo Xbee de MaxStream 1mW con chip antena. Suministro y montaje de placa DIP para módulo Xbee. Suministro y montaje de LUMBERG - 1613 20 - HEMBRA, CC, 90 GRADOS, MONTAJE PCB . Suministro y montaje de LUMBERG - NES/J 135 - MACHO, BAJA TENSIÓN, 1.35mm. Suministro y montaje de condensador electrolítico 0,1 uF, 16V. Suministro y montaje de condensador electrolítico 1 uF, 16V. Suministro y montaje de condensador electrolítico 10 uF, 16V. Suministro y montaje de condensador 1 nF. Suministro y montaje de STMICROELECTRONICS - BAT48 - DIODO, SCHOTTKY, PEQUEÑA SEÑAL Suministro y montaje de Resistencia 330 kΩ, 0'25W, 1% Suministro y montaje de ptenciometro multivuelta 10 kΩ. Suministro y montaje de Interruptor MSP 121C N/A 650mA Negro Suministro y montaje de led estandar amarillo Suministro y montaje de regulador de tensión LM317. Suministro y montaje de regulador de tensión 7805. Suministro y montaje de LCD alfanumérico de 2x16 Suministro, montaje y mecanizado de caja plástica.120x60x40mm. Pequeño material, cables… 1 2 2 2 2 8 1 1 1 2 2 1 1 1 2 1 2 2 2 1 3 1 1 1 1 1 1 Cuadro de Precios Unitarios En los Precios Unitarios figuran en letra y cifra los precios totales de cada una de las unidades que aparecen en la obra sin detallar su descomposición. Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial PRECIOS DESCOMPUESTOS ITEM UNIDAD DESCRIPCIÓN CANTIDAD Prec. Unitario TOTAL 1 ud Suministro y montaje de OMNICELL - ER14505S - BATERÍA, LITIO, AA, 3'6V, 2400mAh (TRES EUROS Y SESENTA Y CUATRO CÉNTIMOS) 1 3,64 3,64 2 ud Suministro y montaje de KEYSTONE - 2460 - BATTERY HOLDER (UN EURO Y CINCUENTA Y TRES CÉNTIMOS) 1 1,53 1,53 3 ud Suministro y montaje de microcontrolador de MICROCHIP - PIC18LF2525-I/SP 8-BIT MCU, 48K FLASH, PDIP28 (SEIS EUROS Y CUARENTA Y SIETE EUROS) 1 6,47 6,47 4 ud Suministro y montaje de MULTICOMP - 2227MC-28-06-07-F1 - ZÓCALO, DIL, 0.6", 28VÍAS (UN EURO Y CINCUENTA Y OCHO CÉNTIMOS) 1 1,58 1,58 5 ud Suministro y montaje de NKK SWITCHES - GW12RHP - INTERRUPTOR OSCILANTE, SPDT, ON-ON (DOS EUROS Y DOS CÉNTIMOS) 1 2,02 2,02 6 ud Suministro y montaje de ALPS - SKHHARA010 - INTERRUPTOR, TÁCTIL, PCB, 2.55N (OCHENTA Y NUEVE CÉNTIMOS) 1 0,89 0,89 7 ud Suministro y montaje de Resistencia 10 kΩ, 0'25W, 1% (VEINTISIETE CÉNTIMOS) 1 0,27 0,27 8 ud Suministro y montaje de placa a topos de 160x100mm. (CUATRO EUROS) 1 4 4 9 ud Suministro y montaje de sensor de temperatura MCP9804-E/MS. (CUATRO EUROS Y QUINCE CÉNTIMOS) 1 4,15 4,15 10 ud Suministro y montaje de placa MSOP a DIP para sensor. (UN EURO Y CINCUENTA Y CINCO CÉNTIMOS) 1 1,55 1,55 11 ud Suministro y montaje de módulo Xbee de MaxStream 1mW con chip antena. 1 17 17 (DIECISIETE EUROS) 12 ud Suministro y montaje de placa DIP para módulo Xbee. (DOS EUROS Y SETENTA CÉNTIMOS) 1 2,7 2,7 13 ud Suministro y montaje de LUMBERG - 1613 20 - HEMBRA, CC, 90 GRADOS, MONTAJE PCB . (UN EURO Y SETENTA Y NUEVE CÉNTIMOS) 1 1,79 1,79 14 ud Suministro y montaje de LUMBERG - NES/J 135 - MACHO, BAJA TENSIÓN, 1.35mm. (UN EURO Y CUARENTA CÉNTIMOS) 1 1,4 1,4 15 ud Suministro y montaje de condensador electrolítico 0,1 uF, 16V. (SETENTA Y CINCO CÉNTIMOS) 1 0,75 0,75 16 ud Suministro y montaje de condensador electrolítico 1 uF, 16V. (SETENTA Y CINCO CÉNTIMOS) 1 0,75 0,75 17 ud Suministro y montaje de condensador electrolítico 10 uF, 16V. (SETENTA Y CINCO CÉNTIMOS) 1 0,75 0,75 18 ud Suministro y montaje de condensador 1 nF. (SETENTA Y CINCO CÉNTIMOS) 1 0,75 0,75 19 ud Suministro y montaje de STMICROELECTRONICS - BAT48 - DIODO, SCHOTTKY, PEQUEÑA SEÑAL (SETENTA Y UN CÉNTIMOS) 1 0,71 0,71 20 ud Suministro y montaje de Resistencia 330 kΩ, 0'25W, 1% (VEINTISIETE CÉNTIMOS) 1 0,27 0,27 94 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial PRECIOS DESCOMPUESTOS ITEM UNIDAD 21 ud 22 5.3 DESCRIPCIÓN CANTIDAD Prec. Unitario TOTAL Suministro y montaje de potenciometro multivuelta 10 kΩ. (SESENTA Y UN CÉNTIMOS) 1 0,61 0,61 ud Suministro y montaje de Interruptor MSP 121C N/A 650mA Negro (DOS EUROS CON DIECINUEVE CÉNTIMOS) 1 2,19 2,19 23 ud Suministro y montaje de led estandar amarillo (CUARENTA Y NUEVE CÉNTIMOS) 1 0,49 0,49 24 ud Suministro y montaje de regulador de tensión LM317. (UN EURO CON CINCUENTA Y CINCO CÉNTIMOS) 1 1,55 1,55 25 ud Suministro y montaje de regulador de tensión 7805. (UN EURO Y VEINTISIETE CÉNTIMOS) 1 1,27 1,27 26 ud Suministro y montaje de LCD alfanumérico de 2x16 (SIETE EUROS Y TREINTA Y TRES CÉNTIMOS) 1 7,33 7,33 27 ud Suministro, montaje y mecanizado de caja plástica.120x60x40mm. (DIECISEIS CÉNTIMOS) 1 16 16 28 Pa Pequeño material, cables… (CUATRO EUROS Y SEIS CÉNTIMOS) 1 4,6 4,6 Cuadro de Precios Descompuestos En el cuadro de precios descompuestos se detalla la descomposición de cada uno de los precios que figura en el Cuadro de Precios Unitarios. 95 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial PRECIOS DESCOMPUESTOS ITEM UNIDAD DESCRIPCIÓN CANTIDAD Prec. Unitario TOTAL 1 ud Suministro y montaje de OMNICELL - ER14505S - BATERÍA, LITIO, AA, 3'6V, 2400mAh Material: OMNICELL - ER14505S - BATERÍA, LITIO, AA, 3'6V, 2400mAh Mano de obra: Horas trabajadas 1 3,64 3,64 1 3,64 3,64 0 12 0 Total 3,64 1 1,53 1,53 1 0,93 0,93 0,05 12 0,6 Total 1,53 2 6,47 12,94 1 6,47 6,47 0 12 0 Total 6,47 2 1,58 3,16 1 0,98 0,98 0,05 12 0,6 Total 1,58 2 2,02 4,04 1 1,42 1,42 0,05 12 0,6 Total 2,02 2 0,89 1,78 1 0,29 0,29 0,05 12 0,6 Total 0,89 8 0,27 2,16 1 0,03 0,03 0,02 12 0,24 Total 0,27 1 4 4 1 4 4 0 12 0 Total 4 ud hr 2 ud ud hr 3 ud ud hr 4 ud ud hr 5 ud ud hr 6 ud ud hr 7 ud ud hr 8 ud ud hr Suministro y montaje de KEYSTONE - 2460 - BATTERY HOLDER Material: KEYSTONE - 2460 - BATTERY HOLDER Mano de obra: Horas trabajadas Suministro y montaje de microcontrolador de MICROCHIP - PIC18LF2525-I/SP 8-BIT MCU, 48K FLASH, PDIP28 Material: MICROCHIP - PIC18LF2525-I/SP - 8-BIT MCU, 48K FLASH, PDIP28 Mano de obra: Horas trabajadas Suministro y montaje de MULTICOMP - 2227MC-28-06-07-F1 - ZÓCALO, DIL, 0.6", 28VÍAS Material: MULTICOMP - 2227MC-28-06-07-F1 - ZÓCALO, DIL, 0.6", 28VÍAS Mano de obra: Horas trabajadas Suministro y montaje de NKK SWITCHES - GW12RHP - INTERRUPTOR OSCILANTE, SPDT, ON-ON Material: NKK SWITCHES - GW12RHP - INTERRUPTOR OSCILANTE, SPDT, ON-ON Mano de obra: Horas trabajadas Suministro y montaje de ALPS - SKHHARA010 - INTERRUPTOR, TÁCTIL, PCB, 2.55N Material: ALPS - SKHHARA010 - INTERRUPTOR, TÁCTIL, PCB, 2.55N Mano de obra: Horas trabajadas Suministro y montaje de Resistencia 10 kΩ, 0'25W, 1% Material: Resistencia 10 kΩ, 0'25W, 1% Mano de obra: Horas trabajadas Suministro y montaje de placa a topos de 160x100mm. Material: placa a topos de 160x100mm. Mano de obra: Horas trabajadas 96 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial PRECIOS DESCOMPUESTOS ITEM UNIDAD 9 ud ud hr 10 ud ud hr 11 ud ud hr 12 ud ud hr 13 ud ud hr 14 ud ud hr 15 ud ud hr 16 ud ud hr 17 ud ud hr DESCRIPCIÓN Suministro y montaje de sensor de temperatura MCP9804-E/MS. Material: sensor de temperatura MCP9804-E/MS. Mano de obra: Horas trabajadas Suministro y montaje de placa MSOP a DIP para sensor. Material: placa MSOP a DIP para sensor. Mano de obra: Horas trabajadas Suministro y montaje de módulo Xbee de MaxStream 1mW con chip antena. Material: módulo Xbee de MaxStream 1mW con chip antena. Mano de obra: Horas trabajadas Suministro y montaje de placa DIP para módulo Xbee. Material: placa DIP para módulo Xbee. Mano de obra: Horas trabajadas Suministro y montaje de LUMBERG - 1613 20 - HEMBRA, CC, 90 GRADOS, MONTAJE PCB . Material: LUMBERG - 1613 20 - HEMBRA, CC, 90 GRADOS, MONTAJE PCB . Mano de obra: Horas trabajadas Suministro y montaje de LUMBERG - NES/J 135 - MACHO, BAJA TENSIÓN, 1.35mm. Material: LUMBERG - NES/J 135 - MACHO, BAJA TENSIÓN, 1.35mm. Mano de obra: Horas trabajadas Suministro y montaje de condensador electrolítico 0,1 uF, 16V. Material: condensador electrolítico 0,1 uF, 16V. Mano de obra: Horas trabajadas Suministro y montaje de condensador electrolítico 1 uF, 16V. Material: condensador electrolítico 1 uF, 16V. Mano de obra: Horas trabajadas Suministro y montaje de condensador electrolítico 10 uF, 16V. Material: condensador electrolítico 10 uF, 16V. Mano de obra: Horas trabajadas CANTIDAD Prec. Unitario TOTAL 1 4,15 4,15 1 1,75 1,75 0,2 12 2,4 Total 4,15 1 1,55 1,55 1 0,95 0,95 0,05 12 0,6 Total 1,55 2 17 34 1 16,4 16,4 0,05 12 0,6 Total 17 2 2,7 5,4 1 2,1 2,1 0,05 12 0,6 Total 2,7 1 1,79 1,79 1 1,19 1,19 0,05 12 0,6 Total 1,79 1 1,4 1,4 1 0,8 0,8 0,05 12 0,6 Total 1,4 1 0,75 0,75 1 0,15 0,15 0,05 12 0,6 Total 0,75 2 0,75 1,5 1 0,15 0,15 0,05 12 0,6 Total 0,75 1 0,75 0,75 1 0,15 0,15 0,05 12 0,6 Total 0,75 97 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial PRECIOS DESCOMPUESTOS ITEM UNIDAD 18 ud ud hr 19 ud ud hr 20 ud ud hr 21 ud ud hr 22 ud ud hr 23 ud ud hr 24 ud ud hr 25 ud ud hr 26 ud ud hr 27 ud ud hr 28 Pa ud hr DESCRIPCIÓN Suministro y montaje de condensador 1 nF. Material: condensador 1 nF. Mano de obra: Horas trabajadas Suministro y montaje de STMICROELECTRONICS - BAT48 - DIODO, SCHOTTKY, PEQUEÑA SEÑAL Material: STMICROELECTRONICS - BAT48 - DIODO, SCHOTTKY, PEQUEÑA SEÑAL Mano de obra: Horas trabajadas Suministro y montaje de Resistencia 330 kΩ, 0'25W, 1% Material: Resistencia 330 kΩ, 0'25W, 1% Mano de obra: Horas trabajadas Suministro y montaje de potenciometro multivuelta 10 kΩ. Material: potenciometro multivuelta 10 kΩ. Mano de obra: Horas trabajadas Suministro y montaje de Interruptor MSP 121C N/A 650mA Negro Material: Interruptor MSP 121C N/A 650mA Negro Mano de obra: Horas trabajadas Suministro y montaje de led estandar amarillo Material: led estandar amarillo Mano de obra: Horas trabajadas Suministro y montaje de regulador de tensión LM317. Material: regulador de tensión LM317. Mano de obra: Horas trabajadas Suministro y montaje de regulador de tensión 7805. Material: regulador de tensión 7805. Mano de obra: Horas trabajadas Suministro y montaje de LCD alfanumérico de 2x16 Material: LCD alfanumérico de 2x16 Mano de obra: Horas trabajadas Suministro, montaje y mecanizado de caja plástica.120x60x40mm. Material: caja plástica.120x60x40mm. Mano de obra: Horas trabajadas Pequeño material, cables… Material: Cable, conectores, estaño … Mano de obra: Horas trabajadas CANTIDAD Prec. Unitario TOTAL 2 0,75 1,5 1 0,15 0,15 12 0,6 Total 0,75 2 0,71 1,42 1 0,11 0,11 0,05 12 0,6 Total 0,71 0,05 2 0,27 0,54 1 0,03 0,03 0,02 12 0,24 Total 0,27 1 0,61 0,61 1 0,25 0,25 0,03 12 0,36 Total 0,61 3 2,19 6,57 1 1,95 1,95 0,02 12 0,24 Total 2,19 1 0,49 0,49 1 0,25 0,25 0,02 12 0,24 Total 0,49 1 1,55 1,55 1 0,95 0,95 0,05 12 0,6 Total 1,55 1 1,27 1,27 1 0,67 0,67 0,05 12 0,6 Total 1,27 1 7,33 7,33 1 6,13 6,13 0,1 12 1,2 Total 7,33 16 16 1 1 4 4 1 12 12 Total 16 1 4,6 4,6 1 4 4 0,05 12 0,6 Total 4,6 98 Monitorización Wireless Constantes Vitalesde un bebé 5.4 Automática y Electrónica Industrial Presupuesto El presupuesto es el siguiente: ITEM UNIDAD DESCRIPCIÓN CANTIDAD PRECIO UNITARIO PRECIO TOTAL Módulo 1 : Equipo a batería con sensor de temperatura 1 ud 2 ud 3 ud 4 ud 5 ud 6 ud 7 ud 8 ud 9 10 11 ud ud ud 12 13 ud ud 14 15 ud Pa Suministro y montaje de OMNICELL - ER14505S - BATERÍA, LITIO, AA, 3'6V, 2400mAh Suministro y montaje de KEYSTONE - 2460 - BATTERY HOLDER Suministro y montaje de microcontrolador de MICROCHIP PIC18LF2525-I/SP - 8-BIT MCU, 48K FLASH, PDIP28 Suministro y montaje de MULTICOMP - 2227MC-28-06-07-F1 - ZÓCALO, DIL, 0.6", 28VÍAS Suministro y montaje de NKK SWITCHES - GW12RHP INTERRUPTOR OSCILANTE, SPDT, ON-ON Suministro y montaje de condensador electrolítico 10uF, 16V. Suministro y montaje de STMICROELECTRONICS - BAT48 DIODO, SCHOTTKY, PEQUEÑA SEÑAL Suministro y montaje de ALPS - SKHHARA010 INTERRUPTOR, TÁCTIL, PCB, 2.55N Suministro y montaje de Resistencia 10 kΩ, 0'25W, 1% Suministro y montaje de placa a topos de 160x100mm. Suministro y montaje de sensor de temperatura MCP9804E/MS. Suministro y montaje de placa MSOP a DIP para sensor. Suministro y montaje de módulo Xbee de MaxStream 1mW con chip antena. Suministro y montaje de placa DIP para módulo Xbee. Pequeño material, cables… 1 3,64 3,64 1 1,53 1,53 1 6,47 6,47 1 1,58 1,58 1 2,02 2,02 1 0,75 0,75 1 0,71 0,71 1 0,89 0,89 3 0,5 1 0,27 4 4,15 0,81 2 4,15 1 1 1,55 17 1,55 17 1 0,5 2,70 4,6 2,7 2,3 TOTAL MÓDULO 1 48,1 Módulo 2 : Equipo de sobremesa 1 ud ud Suministro y montaje de LUMBERG - 1613 20 - HEMBRA, CC, 90 GRADOS, MONTAJE PCB . Suministro y montaje de LUMBERG - NES/J 135 - MACHO, BAJA TENSIÓN, 1.35mm. Suministro y montaje de microcontrolador de MICROCHIP PIC18LF2525-I/SP - 8-BIT MCU, 48K FLASH, PDIP28 Suministro y montaje de MULTICOMP - 2227MC-28-06-07-F1 - ZÓCALO, DIL, 0.6", 28VÍAS Suministro y montaje de NKK SWITCHES - GW12RHP INTERRUPTOR OSCILANTE, SPDT, ON-ON Suministro y montaje de condensador electrolítico 0,1 uF, 16V. Suministro y montaje de condensador electrolítico 1 uF, 16V. 2 ud 3 ud 4 ud 5 ud 6 ud 7 1 1,79 1,79 1 1,4 1,4 1 6,47 6,47 1 1,58 1,58 1 2,02 2,02 1 0,75 0,75 2 0,75 1,5 8 ud Suministro y montaje de condensador electrolítico 10 uF, 16V. 1 0,75 0,75 9 10 ud ud Suministro y montaje de condensador 1 nF. Suministro y montaje de STMICROELECTRONICS - BAT48 DIODO, SCHOTTKY, PEQUEÑA SEÑAL Suministro y montaje de ALPS - SKHHARA010 INTERRUPTOR, TÁCTIL, PCB, 2.55N Suministro y montaje de Resistencia 330 kΩ, 0'25W, 1% Suministro y montaje de Resistencia 10 kΩ, 0'25W, 1% Suministro y montaje de ptenciometro multivuelta 10 kΩ. Suministro y montaje de placa a topos de 160x100mm. Suministro y montaje de Interruptor MSP 121C N/A 650mA Negro Suministro y montaje de led estandar amarillo Suministro y montaje de regulador de tensión LM317. Suministro y montaje de regulador de tensión 7805. Suministro y montaje de LCD alfanumérico de 2x16 Suministro y montaje de módulo Xbee de MaxStream 1mW con chip antena. Suministro y montaje de placa DIP para módulo Xbee. Suministro, montaje y mecanizado de caja plástica.120x60x40mm. Pequeño material, cables… 1 1 0,75 0,71 0,75 0,71 11 ud 1 0,89 0,89 12 13 14 15 16 ud ud ud ud ud 2 5 1 1 3 0,27 0,27 0,61 4 2,19 0,54 1,35 0,61 4 6,57 17 18 19 20 21 ud ud ud ud ud 1 1 1 1 1 0,49 1,55 1,27 7,33 17 0,49 1,55 1,27 7,33 17 22 23 ud ud 1 1 2,70 16 2,7 16 24 Pa 0,5 4,6 2,3 TOTAL MÓDULO 2 80,32 TOTAL PRESUPUESTO 128,42 99 Monitorización Wireless Constantes Vitalesde un bebé 5.5 Automática y Electrónica Industrial Resumen del Presupuesto El presupuesto para la ejecución de los prototipos incluyendo el material y la mano de obra de montaje asciende a 128’42 €. (CIENTO VEINTIOCHO EUROS CON CUARENTA Y DOS CÉNTIMOS) No se ha contemplado en el presupuesto las horas de diseño y programación de los prototipos. En caso de su fabricación a gran escala el precio de montaje descendería notablemente debido sobre todo a: - Un mejor precio en la compra de los materiales. La compra de grandes cantidades provoca que los proveedores ajustan más sus precios. Por ejemplo: PIC 18LF2525 : 1 ud 6’47 euros 100 ud 4’07 euros Se logra una rebaja en el precio de compra de un 37%. - Disminución de la mano de obra en la fabricación. En un proceso totalmente automatizado la mano de obra para la fabricación sería prácticamente nula. Por ejemplo: En este proyecto, la mano de obra imputada al total del presupuesto hace incrementar el total en un 26’7%. Considero que una producción en masa podría significar una reducción del presupuesto en un 53%, alcanzando un total de unos 59 euros los dos módulos. 100 Monitorización Wireless Constantes Vitalesde un bebé 6 Automática y Electrónica Industrial CONCLUSIONES El objetivo principal de este proyecto ha sido realizar un sistema de monitorización de la temperatura para bebes wireless. Este tipo de equipos no existen en el mercado actual a nivel doméstico, aunque si se pueden encontrar aplicaciones específicas a nivel hospitalario. Como objetivos secundarios se pretendía conseguir que los equipos diseñados tuviesen un coste, consumo de energía y tamaño mínimo. El proyecto ha presentado dos fases bien diferenciadas. Una primera etapa en la que se ha tenido que decidir la estructura de los módulos, se ha definido el funcionamiento de ambos y se han escogido los componentes adecuados. Y una segunda etapa en la que se ha realizado la implementación en una versión de prototipo de los módulos y se ha comprobado su funcionamiento. Se ha diseñado e implementado un módulo inalámbrico, el cual dispone de un sensor de temperatura y funciona alimentado mediante batería, y un módulo de sobremesa, encargado de mostrar la lectura de temperatura y realizar un aviso sonoro en caso de alarma. En el módulo inalámbrico la gestión de la energía ha sido un factor determinante ya que de ello dependía la duración de la batería. Para la comunicación wireles se ha utilizado la tecnología Zigbee. Esta tecnología ha sido diseñada para aplicaciones de bajo consumo y baja tasa de transferencia de datos, por lo que la hacía ideal para esta aplicación. Se ha profundizado en la comunicación mediante esta tecnología así como en la programación de los microcontroladores en lenguaje C. Experimentalmente se ha comprobado el correcto funcionamiento del sensor comparando sus medidas con un termómetro digital de farmacia. También se ha comprobado el rango de distancia alzanzado en la comunicación, siendo los resultados satisfactorios y mostrados en el proyecto. Se puede afirmar que se ha alcanzado el objetivo principal del proyecto de manera satisfactoria. La posible producción de estos módulos a nivel comercial supondría rellenar un hueco en el mercado de los termómetros todavía sin explotar. Gracias a estos módulos, se puede mejorar el control de la temperatura en bebés. Por extensión, también se podría aplicar a adultos enfermos o con minusvalías. Durante el desarrollo del proyecto han surgido múltiples aplicaciones además de la inicial y posibles mejoras. 101 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial Como posibles mejoras y aplicaciones indicar que la tecnología Zigbee permite la realización de redes de comunicación con un único módulo coordinador, en nuestro caso el módulo de sobremesa. Con este tipo de red, se podría monitorizar desde enfermería a todos los pacientes de una planta hospitalaria de manera continua, o una madre podría controlar a todos sus hijos. Otras posibles mejoras sería la incorporación de nuevos sensores capaces de medir el ritmo cardíaco, el ritmo respiratorio e incluso la tensión sanguínea. Con estos nuevos sensores se podría monitorizar las principales constantes vitales de bebés, de enfermos, o incluso de deportistas de élite. La muerte súbita causa múltiples muertes en los bebés así como en los deportistas de élite. Los módulos multisensor podrían avisar al personal médico cuando alguna de las constantes vitales comenzasen a fallar, anticipándose el personal médico a la muerte súbita. Considero que queda justificada la necesidad de continuar desarrollando los prototipos diseñados, mejorándolos en tamaño, precio y operatividad. A nivel personal he decidido realizar este proyecto ya que considero que una de las vías hacia una mejor atención sanitaria tanto a nivel hospitalario como doméstico, se realiza a través de la prevención y la vigilancia estrecha de las constantes vitales de los bebés y pacientes. Por este motivo he pretendido desarrollar una herramienta que facilite a los padres la vigilancia de sus bebés cuando estos se encuentren enfermos. 102 Monitorización Wireless Constantes Vitalesde un bebé 7 ANEXOS 7.1 Programa en CCS Módulo 1. Automática y Electrónica Industrial #include <18F2525.h> #device adc=10//La resolución del módulo A/D es de 8 bits. // SIN RELOJ EXTERNO #fuses INTRC_IO,PUT,BROWNOUT,NOWDT,NOPROTECT,NOLVP,NOMCLR,NOLVP #use delay(clock=4000000) #use RS232(BAUD=9600,XMIT=PIN_C6,RCV=PIN_C7) #use i2c(master,sda=PIN_C4,scl=PIN_C3,FORCE_HW) // LIBRERIAS #include <stdlib.h> // DECLARO FUNCIONES void inicio_Xbee(); void inicio_TIMER1(); void muestrea(); void envia(); void convierte_a_T(); // DECLARO VARIABLES int contador_TIMER1; int muestrea_envia; int indice; int Upper_data; int Low_data; float T; int dato_recibido; char dato[8]; char aux[8]; int tiempo_de_muestreo; int indi; // DECLARO REGISTROS #byte OSCCON=0xFD3 //Registro configuración modo sleep() #bit IDLE=OSCCON.7 #bit SCS1=OSCCON.1 #bit SCS2=OSCCON.0 // DECLARO INTERRUPCIONES 103 Monitorización Wireless Constantes Vitalesde un bebé #int_rda Automática y Electrónica Industrial //Vector de interrupcion de la recepcion de datos void rda_isr(void) //por el usart { if (kbhit()) { dato[indi]=getc(); aux[indi]=dato[indi]; indi++; dato_recibido=1; ; } } #int_TIMER1 (temporizador) //Vector de interrupción por TIMER1 void TIMER1_isr(void) { contador_TIMER1++; if (contador_TIMER1>tiempo_de_muestreo) (500ms*tiempo_de_muestreo =xx segundos) // 500msx60=30s segundos { muestrea_envia=1; contador_TIMER1=0; } set_timer1(0x0BDC); //Carga el timer1 } //FUNCION PRINCIPAL void main() { dato_recibido=0; indice=0; indi=0; inicio_Xbee(); while (dato_recibido==0) {} printf("z"); configuracion // señal para el coordinador de fin de delay_ms(1000); tiempo_de_muestreo=((aux[0]-48)*10)+(aux[1]-48); delay_ms(1000); muestrea(); 104 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial envia(); inicio_TIMER1(); do { if (muestrea_envia==1) { output_low(PIN_C5); XBee, si C5=0, lo despierta delay_ms(20); espero 20 ms // PIN_C5 está conectado al SLEEP_RQ del // El Xbee tarda 13'2 ms en despertarse, muestrea(); envia(); output_high(PIN_C5); // Si C5=1->SLEEP_RQ=1, Xbee entra en modo sleep (<10 uA de consumo) muestrea_envia=0; } else { SCS1=1; SCS2=0; IDLE=1; sleep(); // Duermo el microcontrolador pero dejo funcionando el TIMER1, cuando provoque interrupción despierta. } }while (TRUE); } //FUNCIONES void convierte_a_T() { //T = Temperatura ambiente ( ºC) T=0; if (bit_test(Low_data,0)) {T=T+0.0625;} if (bit_test(Low_data,1)) {T=T+0.125;} if (bit_test(Low_data,2)) {T=T+0.25;} if (bit_test(Low_data,3)) {T=T+0.5;} 105 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial if (bit_test(Low_data,4)) {T=T+1;} if (bit_test(Low_data,5)) {T=T+2;} if (bit_test(Low_data,6)) {T=T+4;} if (bit_test(Low_data,7)) {T=T+8;} if (bit_test(Upper_data,0)) {T=T+16;} if (bit_test(Upper_data,1)) {T=T+32;} if (bit_test(Upper_data,2)) {T=T+64;} if (bit_test(Upper_data,3)) {T=T+128;} } void envia() { printf("%2.2f",T); printf("f"); } void muestrea() { // Dirección sensor - lectura : 0x3F // Dirección sesnor - escritura: 0x3E // Config register - 0x01 i2c_start(); // Inicio comunicación i2c_write(0x3E); // Dirección escritura i2c_write(0x01); // Dirección Conig register i2c_write(0x00); // Sensor en modo continuo i2c_write(0x00); i2c_stop(); delay_ms(5); // Fin trama // Resolution register - 0x08 i2c_start(); // Inicio comunicación i2c_write(0x3E); // Dirección escritura 106 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial i2c_write(0x08); // Dirección Conig register i2c_write(0x03); // Resolucion: 0'0625ºC i2c_stop(); // Fin trama // Espero conversión delay_ms(350); // Leo conversión i2c_start(); // send START command i2c_write (0x3E); //WRITE Command (see Section 4.1.4) i2c_write(0x05); // Write TA Register Address i2c_start(); //Repeat START i2c_write(0x3F); // READ Command (see Section 4.1.4) Upper_data = i2c_read(1); // READ 8 bits Low_data = i2c_read(0); // READ 8 bits i2c_stop(); // send STOP command delay_ms(5); // Lectura realizada, duermo el sensor. i2c_start(); // Inicio comunicación i2c_write(0x3E); // Dirección escritura i2c_write(0x01); // Dirección Conig register i2c_write(0x01); // Sensor en modo shutdown i2c_write(0x00); i2c_stop(); delay_ms(5); // Convierto dato a grados centígrados convierte_a_T(); } void inicio_TIMER1() { contador_TIMER1=0; muestrea_envia=0; setup_timer_1(T1_INTERNAL|T1_DIV_BY_8); preescaler= 8 enable_interrupts(INT_TIMER1); particular del TIMER1 enable_interrupts(GLOBAL); globales //Setup timer: Reloj interno, //Habilito interrupción //Habilito interrupciones // Desbordamiento_TIMER1=(4/frecuencia_oscilador)*Preescaler*(65536-TMR1) // Provocamos un desbordamiento del TIMER1 cada 500 ms. 107 Monitorización Wireless Constantes Vitalesde un bebé set_timer1(0x0BDC);//Carga hexadecimal del TMR1 Automática y Electrónica Industrial con el valor 3036, 0x0BDC en } void inicio_Xbee() //Configuro Xbee { enable_interrupts(int_rda); enable_interrupts(global); //Entro en modo comando printf("+++"); delay_ms(1500); //La dirección del módulo es BBBB printf("ATMYBBBB\r"); delay_ms(1500); // La dirección del módulo de destino es 0xAAAA printf("ATDLAAAA\r"); delay_ms(1500); // La PAN ID es 0x3332 printf("ATID3332\r"); delay_ms(1500); // Comunicación entre el HOST y el MODEM es 9600 baudios printf("ATBD3\r"); delay_ms(1500); // Se elige el canal 0x0C, canal 12. printf("ATCHC\r"); delay_ms(1500); // Se elige MODO SLEEP 1 controlado por un pin (1=sleep / 0=wake up). printf("ATSM1\r"); delay_ms(1500); // Graba todos los parámetros en memoria printf("ATWR\r"); delay_ms(1500); // Sale del modo comando printf("ATCN\r"); delay_ms(3000); printf("x"); configuracion // señal para el coordinador de fin de } 108 Monitorización Wireless Constantes Vitalesde un bebé 7.2 Automática y Electrónica Industrial Programa en CCS Módulo 2. #include <18F2525.h> // CON RELOJ EXTERNO //#fuses XT,NOWDT,NOPROTECT,NOLVP,PUT,BROWNOUT,MCLR // SIN RELOJ EXTERNO #fuses INTRC_IO,NOPUT,NOBROWNOUT,NOWDT,NOPROTECT,NOLVP,MCLR,NOLVP #use delay(clock=4000000) #use RS232(BAUD=9600,XMIT=PIN_C6,RCV=PIN_C7) // Conexiones uC con el LCD #define LCD_RS_PIN PIN_B7 #define LCD_RW_PIN PIN_B6 #define LCD_ENABLE_PIN PIN_B5 #define LCD_DATA4 PIN_B4 #define LCD_DATA5 PIN_B3 #define LCD_DATA6 PIN_B2 #define LCD_DATA7 PIN_B1 // LIBRERIAS #include "lcd_mod.c" #include <stdlib.h> #include <internal_eeprom.c> // Valores predeterminados float const Tmax_default_valor=38.00; máxima temperatura para alarma // valor predeterminado como float const Tmin_default_valor=35.50; minima temperatura para alarma // valor predeterminado como int const Sample_default_valor=60; // valor mediante el cual se configura el tiempo de muestreo 60*500ms=30s int const Tmax_default_adress=0x0A; // dirección de EEPROM donde se guarda la Tª maxima elegida por el usuario int const Tmin_default_adress=0x14; // dirección de EEPROM donde se guarda la Tª minima elegida por el usuario int const Sample_default_adress=0x1E; se guarda el tiempo de muestreo de la Tª // dirección de EEPROM donde long const pulsacion=300; evitar rebotes en los pulsadores // tiempo en ms que espera para int const primer_adress=0x28; programa se ejecuta por primera vez // direccion donde guardo si el // DECLARO FUNCIONES 109 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial void inicio_LCD(); void inicio_Xbee(); void inicio_variables(); void escribe_dato_LCD(); void opciones_menu(); void t_config(); void inicio_TIMER1(); void alerta(); void activar_al(); void termometro(); // DECLARO VARIABLES char dato[8]; char aux[8]; int fin_mensaje; int fin; int respuesta; int indice; int index; int comando; int temperatura; int recibido; int menu; float T_max; float T_min; float T_real; int alarma; int aceptar_opcion; int salir; int temp_maxima; long C3; int contador_TIMER1; int disp_no_conectado; int comienza; int contador_alarma; int activar_alarma; int t_muestreo; int ini_xbee; // DECLARO INTERRUPCIONES 110 Monitorización Wireless Constantes Vitalesde un bebé #int_TIMER1 (temporizador) //Vector Automática y Electrónica Industrial de interrupción por TIMER1 void TIMER1_isr(void) { contador_TIMER1++; if ((alarma==1)&&(activar_alarma==1)) { if (contador_alarma==1) { output_high(PIN_C2); contador_alarma=0; } else { if (contador_alarma==0) { output_low(PIN_C2); contador_alarma=1; } } } if (contador_TIMER1>180) // 60 segundos (500ms*120=60 segundos) { disp_no_conectado=1; contador_TIMER1=0; } set_timer1(0x0BDC); //Carga el timer1 } #int_rda datos void rda_isr() //Vector de interrupcion de la recepcion de //por el usart { if (comando==1) { if (kbhit()) { dato[indice]= getc(); //Se lee el dato recibido indice++; } 111 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial } if (comando==0) { if (kbhit()) { dato[indice]=getc(); aux[indice]=dato[indice]; indice++; recibido=1; } } } //PROGRAMA PRINCIPAL void main() { set_tris_c(00111000); //0 = salida, 1 = entrada (Pin7,6,5,4,3,2,1,0) int xbee_ok=0; int sensor_ok=0; int ini_xbee=0; inicio_LCD(); inicio_variables(); inicio_Xbee(); inicio_TIMER1(); do { // Si presiona el boton Menu (PIN C3) entra en Menu. if (input(PIN_C3)) { if (C3==-1) C3++; else{ opciones_menu(); } } // Si recibo dato del sensor... if ((recibido==1)) { contador_TIMER1=0; vuelve a cero. // El contador de sensor no conectado 112 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial index=0; // Si recibido la '+', indica que el Xbee del módulo sensor se está configurando if (dato[0]=='+') ini_xbee=0; // Si recibido la 'x', envio t_muestreo e indico que el Xbee del módulo sensor está configurado if (dato[0]=='x') { if (xbee_ok==1) { sensor_ok=0; printf("%d",t_muestreo); ini_xbee=1; } else { xbee_ok=1; printf("%d",t_muestreo); ini_xbee=1; } for (index=0;index<8;index++) {dato[index]='f';} } // Si recibido la 'z', el módulo sensor ha recibido el tiempo de muestreo if (dato[0]=='z') { sensor_ok=1; for (index=0;index<8;index++) {dato[index]='f';} } //Si del módulo sensor el Xbee y el sensor configurados, recibo la temperatura y la muestro por pantalla. están if ((ini_xbee==1)&&(xbee_ok==1)&&(sensor_ok==1)) { lcd_putc("\f Temp="); escribe_dato_lcd(); T_real=((aux[0]-48)*10)+(aux[1]-48)+((aux[3]48)*0.1)+((aux[4]-48)*0.01); alerta(); 113 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial } index=0; T_real=0; delay_us(15); recibido=0; indice=0; } if (disp_no_conectado==1) { lcd_putc("\fSENSOR NO CONECT\n"); lcd_putc("o BAJA BATERIA\n"); disp_no_conectado=0; } }while (TRUE); } // FUNCIONES void alerta() { if (T_real<T_min) { alarma=1; lcd_putc("\n TEMP.BAJA!"); } else { if (T_real>t_max) { alarma=1; lcd_putc("\n TEMP.ALTA!"); } else { alarma=0; lcd_putc("\n TEMP.OK"); } } } 114 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial void inicio_TIMER1() { contador_TIMER1=0; setup_timer_1(T1_INTERNAL|T1_DIV_BY_8); preescaler= 8 //Setup timer: Reloj interno, enable_interrupts(INT_TIMER1); particular del TIMER1 //Habilito interrupción enable_interrupts(GLOBAL); globales //Habilito interrupciones // Desbordamiento_TIMER1=(4/frecuencia_oscilador)*Preescaler*(65536-TMR1) // Provocamos un desbordamiento del TIMER1 cada 500 ms. set_timer1(0x0BDC);//Carga hexadecimal del TMR1 con el valor 3036, 0x0BDC en } void inicio_LCD() { delay_ms(1000); lcd_init(); lcd_putc("\fXBee Coordinador\n"); delay_ms(2000); } void inicio_Xbee() { lcd_putc("\fSetup: uC-->XBee\n"); delay_ms(1000); enable_interrupts(int_rda); enable_interrupts(global); comando=1; //Entro en modo comando printf("+++"); delay_ms(1500); printf (lcd_putc,"\f%d)+++\n ",comando); indice=0; escribe_dato_LCD(); //La dirección del módulo es AAAA printf("ATMYAAAA\r"); delay_ms(1500); printf (lcd_putc,"\fATMYAAAA\n"); 115 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial indice=0; escribe_dato_LCD(); // La dirección del módulo de destino es 0xBBBB printf("ATDLBBBB\r"); delay_ms(1500); printf (lcd_putc,"\fATDLBBBB\n"); indice=0; escribe_dato_LCD(); // La PAN ID es 0x3332 printf("ATID3332\r"); delay_ms(1500); printf (lcd_putc,"\fATID3332\n"); indice=0; escribe_dato_LCD(); // Comunicación entre el HOST y el MODEM es 9600 baudios printf("ATBD3\r"); delay_ms(1500); printf (lcd_putc,"\fATBD3\n"); indice=0; escribe_dato_LCD(); // Se elige el canal 0x0C, canal 12. printf("ATCHC\r"); delay_ms(1500); printf (lcd_putc,"\fATCHC\n"); indice=0; escribe_dato_LCD(); // Graba todos los parámetros en memoria printf("ATWR\r"); delay_ms(1000); printf (lcd_putc,"\fATWR\n"); indice=0; escribe_dato_LCD(); // Sale del modo comando printf("ATCN\r\f"); delay_ms(1000); printf (lcd_putc,"\fATCN\n"); indice=0; escribe_dato_LCD(); delay_ms(1000); comando=0; 116 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial lcd_putc("\f.esperando dato.\n"); } void escribe_dato_LCD() { index=0; for (index=0;index<8;index++) { if (dato[index]!='f') { printf (lcd_putc,"%c",dato[index]); dato[index]='f'; } } } void inicio_variables() { activar_alarma=0; contador_alarma=0; aceptar_opcion=0; C3=-1; menu=0; fin=0; recibido=0; temperatura=0; fin_mensaje=0; comando=1; index=0; indice=0; respuesta=0; // Inicializo las temperaturas máxima y mínima de alarma. Un byte de la eeprom viene de fábrica con valor entero -1. Leo una posición de memoria a la que llamo // "primer", si vale -1 es que se ejecuta por primera vez el programa y cargo las temperaturas iniciales, si es diferente de -1, cargo las que tenga guardada la eeprom. int primer; primer=read_eeprom(primer_adress); if (primer==-1) { 117 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial write_float_eeprom(Tmax_default_adress,Tmax_default_valor); write_float_eeprom(Tmin_default_adress,Tmin_default_valor); write_eeprom(Sample_default_adress,Sample_default_valor); T_max=read_float_eeprom(Tmax_default_adress); T_min=read_float_eeprom(Tmin_default_adress); t_muestreo=read_eeprom(Sample_default_adress); write_eeprom(primer_adress,5); } else { T_max=read_float_eeprom(Tmax_default_adress); T_min=read_float_eeprom(Tmin_default_adress); t_muestreo=read_eeprom(Sample_default_adress); } alarma=0; disp_no_conectado=0; for (index=0;index<8;index++) { dato[index]='f'; } index=0; comienza=0; } void opciones_menu() { lcd_putc("\fConfiguracion: \n"); long C4, C5; long opcion, sig, prev; int aceptar; C3=-1; C4=-1; C5=-1; opcion=100; sig=10; prev=10; aceptar=0; menu=1; do { if (input (PIN_C3)) 118 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial { if (C3==-1) C3++; else aceptar=1; } if (input (PIN_C4)) { if (C4==-1) C4++; else opcion=opcion+sig; } if (input (PIN_C5)) { if (C5==-1) C5++; else opcion=opcion-prev; } switch (opcion){ case 100: lcd_gotoxy(1,2); lcd_putc("1/4-> Alarma "); delay_ms(pulsacion); if (aceptar==0){ prev=-40; sig=10;} else{ opcion=101; aceptar=0;} break; case 101: lcd_gotoxy(1,2); lcd_putc("1/4->T. Max: "); delay_ms(pulsacion); prev=-3; sig=1; if (aceptar==1){ temp_maxima=1; 119 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial t_config(); aceptar=0;} break; case 102: lcd_gotoxy(1,2); lcd_putc("2/4->T. Min: "); delay_ms(pulsacion); prev=1; sig=1; if (aceptar==1){ temp_maxima=0; t_config(); aceptar=0;} break; case 103: lcd_gotoxy(1,2); lcd_putc("3/4->Act Alarma "); delay_ms(pulsacion); if (aceptar==0){ prev=1; sig=1;} else { activar_al(); aceptar=0;} break; case 104: lcd_gotoxy(1,2); lcd_putc("4/4-> Salir "); delay_ms(pulsacion); if (aceptar==0){ prev=1; sig=-3;} else { opcion=100; aceptar=0;} break; case 120: lcd_gotoxy(1,2); lcd_putc("2/4->Termometro "); delay_ms(pulsacion); 120 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial if (aceptar==0){ prev=10; sig=10;} else { termometro(); aceptar=0;} break; case 130: lcd_gotoxy(1,2); lcd_putc("3/4->Save conf. "); delay_ms(pulsacion); if (aceptar==0){ prev=10; sig=10;} else{ write_float_eeprom(Tmax_default_adress,T_max); delay_ms(2); write_float_eeprom(Tmin_default_adress,T_min); delay_ms(2); write_eeprom(Sample_default_adress,t_muestreo); delay_ms(2); lcd_gotoxy(1,2); lcd_putc("2/3-> SALVADO! "); delay_ms(2000); lcd_gotoxy(1,2); int segundo; segundo=(t_muestreo/10)*5; printf (lcd_putc,"%f,%f,%ds ",T_max,T_min,segundo); delay_ms(2000); opcion=120; aceptar=0; } break; case 140: lcd_gotoxy(1,2); lcd_putc("4/4-> Salir "); delay_ms(pulsacion); if (aceptar==0){ prev=10; sig=-40;} 121 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial else{ menu=0; aceptar=0; } break; default: break;} }while (menu==1); lcd_gotoxy(1,2); lcd_putc("Fin Menu "); delay_ms(3000); lcd_putc("\f.esperando dato.\n"); C3=0; } void activar_al() { long C4, C5; C3=-1; C4=-1; C5=-1; salir=1; do { if (input (PIN_C3)) { if (C3==-1) C3++; else{ salir=0; delay_ms(pulsacion);} } if (input (PIN_C4)) { if (C4==-1) C4++; else{ if (activar_alarma==0) { activar_alarma=1; } 122 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial else { activar_alarma=0; output_low(PIN_C2); } delay_ms(pulsacion);} } if (input (PIN_C5)) { if (C5==-1) C5++; else{ if (activar_alarma==0) { activar_alarma=1; } else { activar_alarma=0; output_low(PIN_C2); } delay_ms(pulsacion);} } if (activar_alarma==0) { lcd_gotoxy(1,2); lcd_putc("Alarma = NO "); } else { lcd_gotoxy(1,2); lcd_putc("Alarma = SI "); } }while (salir); 123 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial } void t_config() { long C4, C5; C3=-1; C4=-1; C5=-1; if (temp_maxima) // Configuro la variable de la temperatura máxima. { salir=1; do { if (input (PIN_C3)) { if (C3==-1) C3++; else{ salir=0; delay_ms(pulsacion);} } if (input (PIN_C4)) { if (C4==-1) C4++; else{ T_max=T_max+0.1; delay_ms(200);} } if (input (PIN_C5)) { if (C5==-1) C5++; else{ T_max=T_max-0.1; delay_ms(pulsacion);} } lcd_gotoxy(1,2); printf (lcd_putc,"T.Max Al.=%f",T_max); }while (salir); } 124 Monitorización Wireless Constantes Vitalesde un bebé else Automática y Electrónica Industrial // Configuro la variable de la temperatura mínima. { salir=1; do { if (input (PIN_C3)) { if (C3==-1) C3++; else{ salir=0; delay_ms(pulsacion);} } if (input (PIN_C4)) { if (C4==-1) C4++; else{ T_min=T_min+0.1; delay_ms(pulsacion);} } if (input (PIN_C5)) { if (C5==-1) C5++; else{ T_min=T_min-0.1; delay_ms(pulsacion);} } lcd_gotoxy(1,2); printf (lcd_putc,"T.Min Al.=%f",T_min); }while (salir); } } void termometro() { long C4, C5; int segundos; C3=-1; C4=-1; 125 Monitorización Wireless Constantes Vitalesde un bebé Automática y Electrónica Industrial C5=-1; salir=1; do { if (input (PIN_C3)) { if (C3==-1) C3++; else{ salir=0; delay_ms(pulsacion);} } if (input (PIN_C4)) { if (C4==-1) C4++; else{ t_muestreo=t_muestreo+10; delay_ms(200); if (t_muestreo>120) t_muestreo=10; } } if (input (PIN_C5)) { if (C5==-1) C5++; else{ t_muestreo=t_muestreo-10; delay_ms(pulsacion); if (t_muestreo<10) t_muestreo=120; } } segundos=(t_muestreo/10)*5; lcd_gotoxy(1,2); printf (lcd_putc,"T. temp(s)= %d ",segundos); }while (salir); } 126 Monitorización Wireless Constantes Vitalesde un bebé 7.3 Automática y Electrónica Industrial Ficheros En el cd adjunto al proyecto se encuentran todos los ficheros de programación así como las hojas de características técnicas de los equipos empleados. 127