ALGORITMO DE DETECCIÓN DE CAÍDASEN UN SISTEMA EMBEBIDO.
TESIS
PARA OBTENER EL GRADO DE:
MAESTRO EN SISTEMAS INTELIGENTES MULTIMEDIA
PRESENTA:
ING. CARLOS ENRIQUE MORAN GARABITO
ASESOR: Dr. RUBÉN ESTRADA MARMOLEJO
GUADALAJARA, JALISCO, SEPTIEMBRE 2017
07 de Julio de 2017
Respetables miembros del Jurado
Me ha tocado el honor de haber sido designado Revisor del trabajo titulado
“ALGORITMO DE DETECCIÓN DE CAÍDAS
EN UN SISTEMA EMBEBIDO” del Ing. Carlos Enrique Moran Garabito.
Después de haber leído detalladamente el trabajo que me fue entregado, he
tenido la oportunidad de intercambiar información con el sustentante y como
resultado de estas acciones he concluido que:
El trabajo tiene los siguientes aspectos positivos:
1.- Asistencia electrónica a personal de la tercera edad o personal con algún tipo
de riesgo en su movilidad.
2.- Uso de la tecnología actual para servicios de localización y monitoreo a
distancia en adultos mayores.
3.- El trabajo da oportunidad a desarrollar más aplicaciones para el monitoreo a
distancia
El trabajo tiene las siguientes oportunidades de mejora:
1.- Optimización en el uso de las baterías para tener funcionalidad prolongada del
dispositivo.
2.- Desarrollo de algoritmos en casos de falla.
3.- Desarrollar dispositivos para la detección de caídas sin tarjetas embebidas de
desarrollo.
Haciendo un análisis crítico del trabajo y balanceando lo positivo y las
oportunidades de mejora, considero RECOMENDAR al Jurado que le otorgue el
Grado de Maestro en Sistemas Inteligentes Multimedia, al Ing. Carlos Enrique Moran
Garabito por lo que acepto se imprima el trabajo de tesis.
No obstante lo anterior, le solicitaría al sustentante me responda las siguientes
preguntas:
1.- Para poder alargar la vida útil de la batería, que cambios se podrían
implementar en el dispositivo creado.
2.- En caso de que no haya ningún reporte de movilidad, en cuanto tiempo se daría
cuenta la persona que estaría de encargada del monitoreo de la persona adulta,
ya sea su familiar o una enfermera.
Le agradecería al Honorable Jurado tenga en consideración la propuesta de
otorgar el Grado que pongo a su consideración.
Atentamente
Nombre del revisor
Grado académico del revisor
M. en C. Victor Manuel Saldaña Garcia___________________________
Grado y Nombre completo del Revisor
DEDICATORIA
A mi esposa,
compañera incansable en mis aventuras y noches de desvelo
A mis hijos:
José Alberto, Sara Itza y Ernesto Daniel,
fuente de mi alegrías.
A mi madre, Estela Alejandra,
inspiración que me lleva a buscar cada vez un mayor conocimiento.
I
Resumen
La población de adultos mayores son una parte vulnerable de la sociedad, dado que al irse
deteriorando algunas de sus funciones, pueden presentar algunas limitantes creando de poca
a amplia dependencia, requiriendo de personal calificado para su cuidado, que les dedique
tiempo, para su constante observación [1].
Actualmente con los avances tecnológicos es posible llevar un mejor control de ciertas si-
tuaciones. Dentro del hogar, podemos llevar un control de la iluminación, la automatización de
los aspersores, la detección de humos, el control automático de la temperatura. Esto ha sido
posible gracias a la tecnología de los MEMS1 que ha permitido desarrollar sensores y actua-
dores a una escala nanométrica permitiendo la portabilidad por su tamaño y su bajo consumo
energético. Con todo esto se ha contribuido a mejorar la calidad de vida de los usuario. Dan-
do soluciones a distintos tipos de necesidades. Estos avances nos pueden llevar a desarrollar
aplicaciones que anteriormente no eran posibles como los detectores de caídas para adultos
mayores con el fin de poder dar aviso a familiares, vecinos o a los servicios de médicos de
asistencia. De esta manera el adulto mayor debe de sentirse más seguro en su domicilio para
disfrutar de un hogar confortable.
1Microelectromechanical Systems
III
Índice general
Bibliografía III
Índice de figuras IX
Índice de tablas XIII
1. Introducción 1
1.1. Antecedentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2. Definición del problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3. Justificación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.4. Objetivo general: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.4.1. Objetivo particulares: . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.5. Hipótesis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2. Análisis de requerimientos del algoritmo 5
2.1. Requerimientos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.2. Introducción a los requerimientos del sistemas. . . . . . . . . . . . . . . . . . 5
2.2.1. Propósito. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.2.2. Alcance. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.2.3. Limitaciones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.2.4. Personal involucrado. . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.3. Descripción general. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.3.1. Perspectiva del prototipo. . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.3.2. Características de los usuarios. . . . . . . . . . . . . . . . . . . . . . . 7
2.3.3. Restricciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
V
2.4. Suposiciones y dependencias . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.5. Requerimientos funcionales. . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.5.1. Funcionalidad del prototipo. . . . . . . . . . . . . . . . . . . . . . . . 8
2.5.2. Funcionamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.6. Requisitos específicos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.6.1. Interfaces. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.7. Casos de uso. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.8. Modelos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.8.1. De procesos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.8.2. Flujo de datos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.9. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3. Detección de caídas 19
3.1. Detección de caídas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.1.1. Contexto. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.2. Acelerómetros. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.2.1. Marco teórico, calibración. . . . . . . . . . . . . . . . . . . . . . . . . 23
3.3. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4. Diseño del algoritmo del prototipo 35
4.1. Algoritmo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.1.1. Código del microcontrolador . . . . . . . . . . . . . . . . . . . . . . . 35
4.1.2. Almacenado de los datos . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.1.3. Análisis de los datos . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.2. Resultados y conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
A. Gráficas 45
B. Kinetis design studio 75
C. Python 85
D. Octave/Matlab 89
VI
Bibliografía 93
VII
Índice de figuras
2.1. Diagrama a bloques del sistema detector de caídas en personas . . . . . . . . . 10
2.2. Caso 1. Diagrama de bloques del encendido del sistema y su interación con el
usuario. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.3. Caso 2. Diagrama de bloques de ahorro de energía. . . . . . . . . . . . . . . . 13
2.4. Caso 3. Diagrama de bloques del sistema en la detección de caídas. . . . . . . . 14
2.5. Caso 4. Diagrama de bloques del sistema activando las alertas. . . . . . . . . . 15
2.6. Representación del sistema y los subsistemas del detector de caídas. . . . . . . 16
2.7. Diagrama conceptual de flujo de datos. . . . . . . . . . . . . . . . . . . . . . . 16
2.8. Diagrama de estructura para el software para la detección de caídas en personas
adultas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.1. Estructura del Acelerometro . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.2. Orientaciones del acelerómetro . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.3. Orientiación del acelerómetro . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
4.1. Gráficas de actividades diarias y de caídas. . . . . . . . . . . . . . . . . . . . . 37
4.2. Árbol de toma de decisiones de valores mínimos después del filtro . . . . . . . 38
4.3. Árbol de toma de decisiones de valores máximos después del filtro . . . . . . . 39
4.4. Comparativa de los valores crudos recibidos por el microprocesador de cada eje
cuando la persona cae. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.5. Comparativa de filtro s y filtro absoluto de los valores crudos recibidos por el
microprocesador cuando la persona se cae. . . . . . . . . . . . . . . . . . . . . 44
A.1. Comparativa de filtro s y filtro absoluto de los valores crudos recibidos por el
microprocesador cuando la de una persona recostándose. . . . . . . . . . . . . 45
IX
A.2. Comparativa de filtro s y filtro absoluto de los valores crudos recibidos por el
microprocesador cuando la de una persona de una persona dejandose caer en la
cama. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
A.3. Comparativa de filtro s y filtro absoluto de los valores crudos recibidos por el
microprocesador cuando la de una persona de una persona recostándose. . . . . 47
A.4. Gráfica 1 de parámetros de una persona agachándose. . . . . . . . . . . . . . . 48
A.5. Gráfica 2 de parámetros de una persona agachándose. . . . . . . . . . . . . . . 49
A.6. Gráfica 1 de parámetros de una persona bajando las escaleras. . . . . . . . . . 50
A.7. Gráfica 2 de parámetros de una persona bajando las escaleras. . . . . . . . . . 51
A.8. Gráfica 3 de parámetros de una persona bajando las escaleras. . . . . . . . . . 52
A.9. Gráfica 4 de parámetros de una persona bajando las escaleras. . . . . . . . . . 53
A.10.Gráfica 1 de parámetros de una persona cuando se cae. . . . . . . . . . . . . . 54
A.11.Gráfica 2 de parámetros de una persona cuando se cae. . . . . . . . . . . . . . 55
A.12.Gráfica 1 de parámetros de una persona realiza una caminata tranquila. . . . . . 56
A.13.Gráfica 2 de parámetros de una persona realiza una caminata tranquila. . . . . . 57
A.14.Gráfica 3 de parámetros de una persona realiza una caminata tranquila. . . . . . 58
A.15.Gráfica 1 de parámetros de una persona sentándose en una silla. . . . . . . . . 59
A.16.Gráfica 2 de parámetros de una persona sentándose (dejándose caer) en un sofá. 60
A.17.Gráfica 3 de parámetros de una persona sentandose en la cama. . . . . . . . . . 61
A.18.Gráfica 4 de parámetros de una persona sentandose en un una silla. . . . . . . . 62
A.19.Gráfica 5 de parámetros de una persona sentandose en un sofá. . . . . . . . . . 63
A.20.Gráfica 6 de parámetros de una persona sentandose en la cama (dejándose caer). 64
A.21.Gráfica 7 de parámetros de una persona sentandose en el suelo. . . . . . . . . . 65
A.22.Gráfica 1 de parámetros de una persona subiendo escaleras. . . . . . . . . . . . 66
A.23.Gráfica 2 de parámetros de una persona subiendo escaleras. . . . . . . . . . . . 67
A.24.Gráfica 3 de parámetros de una persona subiendo escaleras. . . . . . . . . . . . 68
A.25.Gráfica 4 de parámetros de una persona subiendo escaleras. . . . . . . . . . . . 69
A.26.KDSK kinetis expert. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
A.27.Selección del microprocesador. . . . . . . . . . . . . . . . . . . . . . . . . . . 70
A.28.Sección lateral izquierda. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
A.29.Sección central superior. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
X
A.30.Sección central inferior. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
A.31.Sección central superior. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
D.1. Máximos, mínimos y promedio de los datos. . . . . . . . . . . . . . . . . . . . 92
XI
Índice de tablas
2.1. Requisitos específicos de hardware y de software solicitados para el sistema. . . 9
2.2. Descripcion del caso de uso uno, encender el dispositivo. . . . . . . . . . . . . 11
2.3. Descripcion del caso de uso dos, modo de ahorro de energía. . . . . . . . . . . 12
2.4. Descripcion del caso de uso tres, detección de caídas. . . . . . . . . . . . . . . 13
2.5. Descripcion del caso de uso tres, detección de caídas. . . . . . . . . . . . . . . 14
3.1. Tiempos de caída de objetos a distintas alturas . . . . . . . . . . . . . . . . . . 32
4.1. Datos mínimos y máximos de las actividades (valores crudos), parte 1. . . . . . 37
4.2. Datos mínimos y máximos de las actividades (valores crudos), parte 2. . . . . . 38
4.3. Datos actividades en la matriz de confusión. . . . . . . . . . . . . . . . . . . . 42
A.1. Tabla de pines de los puertos A y B seleccionados. . . . . . . . . . . . . . . . 72
A.2. Tabla de pines de los puertos D y E seleccionados. . . . . . . . . . . . . . . . . 72
B.1. Tabla de direcciones I2C0 del acelerómetro MMA8451Q . . . . . . . . . . . . 77
B.2. Tabla de direccionesI2C1 del acelerómetro MMA8451Q . . . . . . . . . . . . 77
B.3. Tabla de las banderas del acelerómetro MMA8451Q . . . . . . . . . . . . . . 78
XIII
Capítulo 1
Introducción
1.1. Antecedentes
La tecnología aplicada dentro del hogar contribuye a mejorar la calidad de vida del usuario.
Constantemente surgen nuevas aplicaciones fruto del desarrollo tecnológico para dar solución
a nuevas necesidades. Empleando estas tecnologías, el adulto mayor debe de sentirse seguro en
su domicilio para disfrutar de un hogar confortable. Algunos ejemplos son los controles de ilu-
minación, dispositivos de detección de humos, de escapes de gas LP y de fugas de agua, control
de temperatura ambiental, así como detectores de caídas con el fin de poder dar aviso a fami-
liares, vecinos o a los servicios de médicos de asistencia. Los factores ambientales que ponen
en peligro a una caída en los adultos mayores dentro de una vivienda, son: suelos irregulares o
muy pulidos, muebles muy altos, falta de barras de soporte, cables sueltos, objetos en el suelo e
iluminación insuficiente o demasiado brillantes.
En la detección de caídas, se han desarrollado varios estudios. Estos estudios involucran el
uso de cámaras, piso inteligente, sensores colocados en varías partes del cuerpo y el empleo de
sensores MEMS.
El método de cámaras involucra el empleo de sistemas de visión, cámaras infrarrojas o am-
bas. Las cámaras tienen como principal característica, que permiten reconocer multitud de pa-
trones. El programador usa estas cualidad para generar códigos que sirvan para tener una mejor
precisión sobre la cinemática de la persona y su posición. Logrando que el dispositivo empleado
sea un elemento no invasivo, permitiéndole a la persona tenga libertad en sus movimientos[2].
2 CAPÍTULO 1. INTRODUCCIÓN
Sin embargo, muchos de los adultos mayores se opone a tener cámaras por todos lados en su
casa [3]. Además, el empleo de las cámaras requiere de un procesador de gama media-alta o
superior con coprocesador matemático para poder realizar las complejas ecuaciones necesarias
en los algoritmos para la interpretación de las imágenes. Estos algoritmos requieren el uso de
filtros digitales que deben discernir entre la localización y posición de la persona y de los demás
objetos que se encuentren en su ambiente. El programa se vuelve mas complejo entre mas ele-
mentos en movimiento se incorporen al campo de visión de la cámara, además de que el tiempo
de procesamiento requerido para reconocer las imágenes se extiende [4].
Los pisos inteligentes emplean sensores de vibración y presión en pisos, de tal manera que
pueda reconocer a una persona por su pisada y su velocidad. De esta manera, el piso inteligente
le es posible determinar la fuerza de un impacto y así saber si se cayo algo sobre él [5].
Los sensores conectados a diferentes partes del cuerpo presenta el problema de que, al estar
cableada la interconexión entre los sensores es un método invasivo sobre las personas. En el
laboratorio es posible obtener datos y mantener a la gente conectada de esta manera, pero no en
aplicaciones reales. [6]
Con la nanotecnología, se han realizado sensores MEMs como el acelerómetros y giros-
copios. Sensores que son cada vez mas comunes dentro de nuestra vida cotidiana[7]. Estos
sensores los podemos encontrarlos ampliamente en distintos dispositivos que usamos cotidia-
namente como son el celular, relojes, pulseras deportivas y otros dispositivos vestibles [8]. Los
dispositivos MEMS tienen como principal ventajas que su uso requiere un bajo consumo ener-
getico y alta precisión en los datos muestreados. Es por ello que son perfectos para su aplicación
en sistemas embebidos [7]. Con los dispositivos vestibles se puede tener la capacidad funcional
de medir los movimientos de los individuos sin que estén cableados a alguna computadora den-
tro de un ambiente doméstico [9]. Los algoritmos empleados son redes neuronales [10], logíca
difusa [11].
1.2. Definición del problema
La población de adultos mayores son una parte vulnerable de la sociedad, dado que al irse
deteriorando algunas de sus funciones, pueden presentar algunas limitantes creando de poca a
amplia dependencia, requiriendo de personal calificado para su cuidado, que les dedique tiempo,
1.3. JUSTIFICACIÓN 3
para su constante observación.
1.3. Justificación
Los adultos mayores son uno de los sectores mas vulnerables de nuestra sociedad. Pues
al disminuir parte de sus funciones motrices y psicológicas, necesitan de apoyos y cuidados
que anteriormente eran solventadas por la persona que se quedaba en el hogar. Sin embargo
actualmente ambas parejas realizan roles de trabajo fuera del hogar. Lo que complica el cuidado
de los ancianos. Quedando estos relegados y marginados de la sociedad, llegando a considerarlo
como una persona enferma, limitada e incompetente para asumir tareas y ejercer funciones. Lo
que ha llevado a la familia a la internación del anciano en instituciones de larga estancia.
La esperanza de vida actual en México, en hombres es de 73 años y en las mujeres de 78
años. Un 9.7% en hombres y en mujeres de un 12.6% mas que la década anterior. Se espera
que para el 2025 se encuentre en un 13.9 por ciento, y en 2050, a 26.5 por ciento. Este incre-
mento representaría la cuarta parte de la población total mexicana. La principal causa de este
incremento es por el control o erradicación de algunas enfermedades. Sin embargo, el hecho de
poder vivir más años no necesariamente significa vivir mejor.
Un incremento de esta magnitud representa todo un reto para el sistema de salud, pues hay
varios accidentes que sufren los adultos mayores y no son atendidas a tiempo, lo que conlleva
a secuelas posteriores, entre los accidentes con mayor numero de casos se encuentan las caídas
[12]. Además, la calidad de vida de un individuo esta relaciona con el proceso vital de autóno-
mia, no sólo del componente biológico, sino también de las condiciones del medio ambiente y
de su representación social que tiene en una sociedad. Este concepto de calidad de vida en la
tercera edad se pueden desarrollar tecnologías que sirvan de auxilio o apoyo a los adultos para
lograr una mayor independencia
1.4. Objetivo general:
Desarrollar el algoritmo para la detección de la caída de una persona dentro del ambiente
del hogar.
4 CAPÍTULO 1. INTRODUCCIÓN
1.4.1. Objetivo particulares:
Alcances
- Reconocer cuando un adulto mayor se haya caído.
- Reconocer cuando este realizado una actividad cotidiana.
- Realizar las pruebas con una tarjeta embebida de desarrollo rápido.
- Seleccionar los sensores para su correcta detección.
Alcances futuros que no se contemplan en este proyecto
- Equipar con sistema wireless.
- Localizar el adulto dentro del hogar para la pronta asistencia con un sistema wireless.
- Seleccionar sensores de presión y pulsos sanguíneos para casos críticos de caídas.
1.5. Hipótesis
Empleando la tecnología de los sistemas embebidos y los sensores MEMS es posible de-
terminar cuando una persona se ha caído, con el objetivo de prevenir la muerte prematura en
adultos mayores.
Capítulo 2
Análisis de requerimientos del algoritmo
2.1. Requerimientos.
2.2. Introducción a los requerimientos del sistemas.
El uso de las técnicas de modelado del lenguaje (UML) permite clarificar cada uno de los
pasos y secciones que componen el sistema. Dentro esta metodología se encuentra el SysML
que extiende su uso a las técnicas de modelado de hardware. Para el diseño del detector de
caídas, empezamos con el planteamiento de las Especificaciones de Requisitos de software de
Proyecto (ERP) empleadas para el desarrolló del Algoritmo de detección de caídas en un siste-
ma embebido. El objetivo principal del modelo de requisitos es la delimitación del sistema y la
captura de la funcionalidad viéndolo desde la perspectiva del usuario. [13]
Estas especificación indican el que y como debe funcionar el sistema. De esta manera, el
cliente estará seguro de lo que recibe evitando los desfasamientos en tiempos y de las caracte-
rísticas que debe llevar el sistema1.
2.2.1. Propósito.
Definir y poner en contexto de manera formal las características con las que el sistema debe
cumplir. Esto sirve al lector y a toda persona involucrada en el desarrollo e implementación del
1Esta basando en las directrices dadas por el estándar IEEE Práctica Recomendada para Especificaciones deRequisitos Software ANSI/IEEE 830, 1998.
6 CAPÍTULO 2. ANÁLISIS DE REQUERIMIENTOS DEL ALGORITMO
sistema sobre los requerimientos que son necesarios cubrir para que el software se considere
terminado. El cliente podrá ver en este documento una manera de desarrollo clara, verificable y
formal de realización de proyectos.
2.2.2. Alcance.
Diseñar el algoritmo y los códigos de detección de caídas para un sistema embebido envian-
do una alerta. El código deberá identificar cuando la persona se siente o cuando se acueste o
cuando se ponga de pie, evitando mandar falsas alarmas. La alerta sera enviado en forma sonora
y en forma visual.
2.2.3. Limitaciones.
El código del programa solo podrá ser almacenado en microcontroladores Freescale ARM
M0+.
2.2.4. Personal involucrado.
Nombre. Rubén Estrada Marmolejo.
Rol. Tutor de la tesis
Categoría profesional. PhD. Control.
Responsabilidad. Asesoría.
Información del contacto. [email protected]
Nombre. Carlos Enrique Morán Garabito.
Rol. Analista, diseñador y programador.
Categoría profesional. Ingeniero de software.
Responsabilidad. Análisis, diseño e implementación.
Información de contacto. [email protected]
2.3. DESCRIPCIÓN GENERAL. 7
2.3. Descripción general.
2.3.1. Perspectiva del prototipo.
El algoritmo de detección de caídas podrá realizar todas las siguientes tareas:
Software.
Detectar variaciones en los movimientos mayores a 10 puntos con respecto a los valores
crudos registrados por el sensor.
Determinar si ese cambio fue el resultado de una caída.
Discernir entre una caída, sentarse y acostarse.
El sensor podrá ser cableado o conectado por wireless.
En caso de que los sensores sean cableados, estos cables deben ser flexibles, y adaptables
al movimiento del cuerpo de la persona.
Determinar si el dispositivo esta puesto.
El dispositivo entrara en funcionamiento cuando haya sido colocado en la persona.
La alerta sera sonora y visual.
Enviar un aviso visual de agotamiento de la batería.
Uso continuo por una semana.
2.3.2. Características de los usuarios.
Usuario final.
El usuario principal al que esta destinado este dispositivo es el adulto mayor. Sin embargo,
puede ser usado por cualquier tipo de persona que requiera de una supervisión por posibilidad
de caídas o por caídas constantes.
8 CAPÍTULO 2. ANÁLISIS DE REQUERIMIENTOS DEL ALGORITMO
2.3.3. Restricciones
Las alertas visuales y auditivas dependerán del nivel de carga de la batería.
2.4. Suposiciones y dependencias
La persona que se estará monitoreando siempre portara un dispositivo.
2.5. Requerimientos funcionales.
2.5.1. Funcionalidad del prototipo.
Descripción general.
El dispositivo entrara en activación cuando el dispositivo sea puesto en la persona, sera
entonces que estará midiendo los movimientos y realizando los cálculos para determinar si la
persona ha sufrido una caída o es parte de sus actividades diarias.
El sistema realizará una revisión constante del estado de la batería, en caso de que detecte
que esta por debajo del nivel deseable, enviara un aviso visual.
Descripción especifica.
El sensor enviará las mediciones realizadas en g con el que dependiendo de la diferencia
entre el dato anterior y el actual indicara si ha sido un movimiento rápido o abrupto, con el que
el microcontrolador capturara esa información y realizará el análisis correspondiente con el que
a través de ecuaciones determinara si se ha caído una persona.
El sistema estará midiendo el nivel de energía de la batería, en caso de que este en un nivel
critico, encenderá un led rojo indicando que la batería esta baja para ser remplazada.
2.5.2. Funcionamiento
El sistema deberá funcionar de la siguiente manera:
Cuando el sistema haya sido de reciente adquisición, traerá su batería independiente, y
con las instrucciones de uso. El usuario colocara la batería en la localidad correspon-
2.6. REQUISITOS ESPECÍFICOS. 9
diente y se encenderá un led verde por 10 segundos indicando que el sistema funciona
correctamente.
El usuario colocara el sistema El sistema no necesitara ser removido del lugar donde se
puso, pues el sensor de presencia determinara si es necesario ponerse en uso o no.
El sistema entrara en funcionamiento cuando detecte a una persona que ha sido colocado
y realizará las mediciones de los movimientos.
El sistema realizara los cálculos de cada movimiento realizado para determinar cualquier
posible caída.
El sistema enviará una alerta encendiendo el led rojo en forma de destello y un audio en
caso de que la caída se haya presentado.
Para desactivarlo el usuario deberá presionar el botón de apagado
2.6. Requisitos específicos.
Rsxx – Requisito de software
Rhxx – Requisito de hardware
ID. Requisito.Rh01 El dispositivo contara un sensor de presencia de la persona en uso.Rh02 El dispositivo contara con un sensor que mida la aceleración de la persona cuando este
en movimiento.Rh03 El dispositivo tendrá dos leds, uno rojo y uno verde.Rh04 El dispositivo tendrá una bocina.Rh05 El dispositivo tendrá un sensor que detecte que ha sido puesto en la persona que se
desea monitorear.Rh07 La unidad central sera un microcontrolador ARM M0+.Rs01 El dispositivo leerá los datos que envía el sensor indicando el movimiento de la personaRs02 realizar los cálculos para determinar si es una caída.Rs03 El dispositivo enviará una alarma visual.Rs04 El dispositivo enviará una alarma sonora.Rs05 El dispositivo entrará en modo de ahorro de energía cuando no este en uso.
Tabla 2.1: Requisitos específicos de hardware y de software solicitados para el sistema.
10 CAPÍTULO 2. ANÁLISIS DE REQUERIMIENTOS DEL ALGORITMO
2.6.1. Interfaces.
El dispositivo contara con la interfaz de comunicación entre los sensores
Interfaz de sensores.
Para la interfaz de comunicación con los sensores se realizará usando el puerto I2C pues
este tipo de comunicación permite la ampliación de sensores en caso de que se sea necesario en
un futuro. El sensor de detección de la persona envía un uno o un cero lógico.
Propósito de las interfaces empleadas.
Interfaz. Propósito.
Sensores. Obtener datos sobre la persona y su relación con la precipitación hacia el
suelo.
Leds Salida visual sobre el estado y alertas en el sistema.
buzzer Alerta sonora.
Figura 2.1: Diagrama a bloques del sistema detector de caídas en personas
2.7. Casos de uso.
Introducción
El modelo de casos de uso describe un sistema en términos de sus distintas formas de utili-
zación, cada una de las cuales se conoce como un caso de uso.
2.7. CASOS DE USO. 11
Un caso de uso es una técnica para la captura de requisitos potenciales de un nuevo sistema
o una actualización. Cada caso de uso proporciona uno o más escenarios en forma gráfica los
cuales que indican cómo deberá interactuar el sistema con el usuario o con otro sistema en
respuesta a un evento para conseguir un objetivo específico.
En casos de uso no se emplean términos técnicos, en cambio, se usa un lenguaje coloquial
lo más cercano al usuario final. Esto es debido a que usuarios sin experiencia deben ser capaces
de interpretar lo que se esta desarrollando.
Encendido del sistema.
Esta sección se desarrolla el caso de uso para el encendido del sistema. En este caso de uso,
se le añade su tabla donde se explica con mayor detalle la descripción del caso de uso, y cuales
son los requisitos que lo acompañan, tomados de la Tabla 2.1
Descripción de caso de uso.Nombre: Encender dispositivo.Alias:Actores: Usuario y el sistema.Función: Energizar el sistema e inicializar los sensores.Descripción El usuario podrá encender el sistema. El sistema revisara cada uno de los
dispositivos conectados e inicializa la comunicación.Referencias: De los requerimientos Rh03, Rh02, Rh01
Tabla 2.2: Descripcion del caso de uso uno, encender el dispositivo.
Este caso de uso de la Figura 2.2 representa cuando el usuario enciende el sistema. El usuario
vera como el led verde permanece encendido por 10 segundos cuando es encendido y después
de 10 segundos se apagara. El sistema realizara la interfaz de conexión con los sensores en esos
10 segundos e inicializa su comunicación del microcontrolador con los sensores.
Ahorro de energía.
El ahorro de energía es una parte importante para el proyecto pues permite extender el uso
del dispositivo por periodos prolongados. Debido a que microcontrolador que se solicita es un
ARM cortex M0+, permite un mejor control de la energía y un ahorro considerable durante su
12 CAPÍTULO 2. ANÁLISIS DE REQUERIMIENTOS DEL ALGORITMO
Figura 2.2: Caso 1. Diagrama de bloques del encendido del sistema y su interación con elusuario.
uso y su modo de sleep time. El software (MCU power estimation tool v1) nos proporciona
una idea del tiempo aproximado de uso continuo que se le puede dar. La estimación del tiempo
haciendo uso del modo de ahorro de energía es de 35 días. En modo estándar, el equipo podría
usarse por 18 días usándose 24 hrs al día.
Descripción de caso de uso.Nombre: Ahorro de energíaAlias:Actores: Usuario y el sistema.Función: Extender el tiempo de energía de la batería.Descripción El sistema entrara en modo de ahorro de energía mientras no se cumpla la
condición de abrocharse el cinturónReferencias: De los requerimientos Rs05 y Rh05
Tabla 2.3: Descripcion del caso de uso dos, modo de ahorro de energía.
Para el modo de ahorro de energía se manejan en dos tiempos. El primero consiste en poner
el microcontrolador en modo de sleep time, esto es poner el microcontrolador en modo de bajo
consumo de energía hasta que se genere una interrupción que lo despierte. El segundo es un
switch normalmente abierto, que cuando se cierre, mande la interrupción al microcontrolador o
a un pin de un puerto, con el que se indique que se ha colocado el dispositivo y debe estar listo
para recibir los datos del sensor. A continuación se ve la representación gráfica del caso de uso
dos. Este caso de uso de la Figura 2.3 representa cómo el sistema entra en modo de ahorro de
energía cuando esta inactivo.
2.7. CASOS DE USO. 13
Figura 2.3: Caso 2. Diagrama de bloques de ahorro de energía.
Detección de caída.
La detección de la caída es la parte crucial de esta investigación. Es donde el sistema al
detectar algún cambio drástico determina que se ha producido una caída. La detección deberá
diferenciar entre diferentes tipos de actividades que cotidianamente realizan las personas ma-
yores. Estas actividades son de bajo impacto.
Descripción de caso de uso.Nombre: Detección de caídasAlias:Actores: Usuario y el sistema.Función: Detectar la caída de una personaDescripción Realizar la lectura de las coordenadas x,y,z y realizar los calculos necesarios
para diagnosticar si se ha producido una caídaReferencias: De los requerimientos Rh02, Rh05, Rs01 y Rs02
Tabla 2.4: Descripcion del caso de uso tres, detección de caídas.
Este caso de uso de la Figura 2.4 especifica como el sistema detecta que ha sido colocado
en la persona a monitorear. Una vez detectada la persona, activa la señal de comunicación con
el sensor para que este empiece a mandar datos de los ejes x, y, z. El microcontrolador recibe
estos datos y realiza los cálculos necesarios para determinar si se ha habido alguna caída.
14 CAPÍTULO 2. ANÁLISIS DE REQUERIMIENTOS DEL ALGORITMO
Figura 2.4: Caso 3. Diagrama de bloques del sistema en la detección de caídas.
Alarmas.
La notificación sobre un evento como la caída necesita ser avisado, en este caso se realiza
usando un medio sonoro y un medio visual. La alarma no se suspende cuando la persona se haya
recuperado debido a que un adulto puede haber sufrido algún problema mayor y no notarlo. De
esta manera se podrá asegurar que la persona a cargo del adulto ha sido informado.
Descripción de caso de uso.Nombre: AlarmasAlias:Actores: Usuario y el sistema.Función: Notificar la detección de una caída.Descripción El sistema, tras la detección de una caída, enviara una alarma sonora y una
alarma visual.Referencias: De los requerimientos RS03, Rs04, Rh03 y Rh04
Tabla 2.5: Descripcion del caso de uso tres, detección de caídas.
Este caso de uso de la Figura 2.5 representa cómo el sistema envía las alertas una vez
que se ha detectado una caída. El microcontrolador envía a través de la comunicación con los
dispositivos la activación necesaria para que el led como la bocina se activen.
2.8. MODELOS. 15
Figura 2.5: Caso 4. Diagrama de bloques del sistema activando las alertas.
2.8. Modelos.
Un modelo es una colección de entidades que interactúan y se relacionan entre sí para ob-
tener un mismo fin. Los modelos de sistemas son representaciones pictóricas de la realidad. El
modelo de sistema más básico es representado por un bloque con el que intercambia entradas y
salidas con su ambiente. Ya que el ambiente siempre cambia, los sistemas bien diseñados tienen
una retroalimentación y un lazo de control para permitir que el sistema se adapte a si mismo
para cambiar condiciones.
2.8.1. De procesos.
El modelado de procesos es una técnica para organizar y documentar la estructura y el flujo
de datos a través de los procesos de un sistema. [14] Con esta técnica hemos podido modelar
del detector de caída, que es un sistema de tamaño mediano. Así que lo hemos tenido que
descomponer en pequeños subsistemas y en algunos casos estos subsistemas los volvimos a
descomponer para encontrar eventos más básicos (Figura 2.6).
2.8.2. Flujo de datos.
Para definir la estructura y el comportamiento del sistema se realiza un modelo conceptual
de flujo de datos, el cual permite ver las soluciones al problema planteado. Todo flujo de datos
16 CAPÍTULO 2. ANÁLISIS DE REQUERIMIENTOS DEL ALGORITMO
Figura 2.6: Representación del sistema y los subsistemas del detector de caídas.
tiene un proceso de entrada y otro de salida. Los flujos de datos son las comunicaciones entre
procesos y el ambiente del sistema.
Estos diagramas nos da una primera aproximación de como el sistema debe comportarse y
el flujo de los datos a través del sistema y el procesamiento realizado por el mismo [15].
Figura 2.7: Diagrama conceptual de flujo de datos.
En nuestro diagrama conceptual de la Figura 2.7 están los puntos principales con los que
interactúa el programa junto con los elementos externos con los que se encuentra el sistema.
2.9. CONCLUSIONES 17
En el bloque de los cálculos se establecen los parámetros y las características necesarias para
determinar que tipo de actividad se esta realizando.
El diagrama estructural que vemos en la Figura 2.8 nos da mas a detalle las variables a
utilizar, así como el tipo de función que necesita ó requiere en un determinado momento de un
tiempo t.
2.9. Conclusiones
El análisis debe de ser la etapa principal con la que se empieza a conocer y entender el
problema. Saber que el cliente, su problema son las caídas de las personas y que desea detec-
tarlas para tomar acciones de ello es el inició de nuestro trabajo. Pero el solo saber esto no es
suficiente para desarrollar un proyecto, es por esto que se deben de abstraer los puntos clave del
análisis, esto es fundamental para desarrollar el cuerpo principal del algoritmo para su solución.
Además de establecer los limites que los clientes comunicaron, ya que es fácil enfrascarse con
los proyectos y enfocarse en puntos que se cree que los clientes quieren o esperan, y no en el
principal problema. Con todo esto se debe visualizar la aplicación que el cliente esta esperando
que se tenga para el desarrollo de los prototipos. De esta manera, se puede comprobar que el
sistema cumple con los requisitos que se esperaban.
18 CAPÍTULO 2. ANÁLISIS DE REQUERIMIENTOS DEL ALGORITMO
LED
gpio_pin_config_t
LED_RED_OFF() GPIO_PinInit() LED_RED_TOGGLE()
Alarma
int Valint Val2
LED()UART()
Detección de caída
int Res, Val, Val2, sum, Max, Min, desp;int D1, D2, D3, D4, D5, tmp, Old, New, n, Dif;int med = 114;D5 = 0;D4 = 0;D3 = 0;D2 = 0;D1 = 0;Old = 0;New = 0;
Actividad_min()Actividad_man()Alarm()
Movimiento
int Axis[3]i2c_master_transfer_t masterXfer;memset(&masterXfer, 0, sizeof(masterXfer));masterXfer.slaveAddress = device_addr;masterXfer.direction = kI2C_Read;masterXfer.subaddress = reg_addr;masterXfer.subaddressSize = 1;masterXfer.data = rxBuff;masterXfer.dataSize = rxSize;masterXfer.flags = kI2C_TransferDefaultFlag;
I2C_MasterTransferNonBlocking()I2C_ReadAccelRegs()
Acelerómetro
int8_t Axies[5];uint8_t status0_value = 0;int R;int16_t Axis_x, Axis_y, Axis_z;int16_t X, Y, Z;uint8_t x1, x2, y1, y2, z1, z2;Axis[5]
I2C_ReadAccelRegs() Actividad
int Dif, Actint max, minunsigned long x
int Actividad_min()int Actividad_min()
Calculos
register unsigned long op register unsigned res, one
unsigned long isqrt()int Estado_min()int Estado_max()
Microcontrolador
Enciende
Envía
Parámetros
Determina
Realíza
Envía X,Y,Z
detecta
Figura 2.8: Diagrama de estructura para el software para la detección de caídas en personasadultas.
Capítulo 3
Detección de caídas
3.1. Detección de caídas.
3.1.1. Contexto.
La caída es un problema frecuente y de alto riesgo en edades avanzadas de la vida. Re-
presenta el 54% del total de accidentes que sufren los adultos mayores. En el hogar ocurre el
74% de estos. De estos accidentes sólo el 52% son registrados y atendidos [12]. Este tipo de
accidentes causan mayores estragos conforme se incrementa la edad de la persona, causando
distintos niveles de consecuencias. La persona adulta al caerse llega a presentar en los casos
menos graves un raspón. En los casos más graves llega a sufrir de una fractura mayor, que de
no atenderse puede presentar la muerte.
Las causas de las caídas en el hogar son:
Por objetos mal ubicados o en mal estado.
Suelos en mal estado o resbalosos.
Mala o deficiente iluminación en escaleras irregulares o sin apoyos.
Ausencia de barra de soporte en los lugares adecuados.
La presencia de mascotas.
Calzado inadecuado.
20 CAPÍTULO 3. DETECCIÓN DE CAÍDAS
Uso inadecuada de los objetos.
Mala distribución del mobiliario.
Ingesta de bebidas alcohólicas.
No utilizar ayudas técnicas indicadas (bastón, andadores, lentes).
[16]
Cuando la primera caída se presenta y en un lapso menor a 6 meses se presenta una segunda
caída puede ser el indicativo de varias enfermedades no detectadas. Esta serie de enfermedades
en cascada aumenta los índices de morbilidad1 y dependencia hasta de mortalidad. Esto repre-
senta, económicamente hablando, en altos costos para los servicios de salud y cuidados[17].
3.2. Acelerómetros.
La aceleración es la magnitud física que mide la tasa de variación de la velocidad respecto
del tiempo [18]. La ecuación que le corresponde esta dada por a = cambio de velocidadtiempo empleado . Cuenta con
dirección y magnitud, que son representadas mediante un vector. Sus dimensiones son longitud
entre tiempo al cuadrado y sus unidades, según el sistema internacional, son m/ s2.
Los Acelerómetros son sensores que miden la aceleración y la fuerzas inducidas por las
gravedad aplicadas sobre un mismo plano [19]. Esto es, son sensibles a la diferencia entre
la aceleración lineal del sensor y el campo gravitacional local. La hoja de datos de cualquier
acelerómetro indicará al menos uno de estos ejes x, y, z si no es que todos. Por convención,
éstos se definen de manera que una aceleración alineada en la dirección de estos ejes dará una
salida positiva del acelerómetro.
Un componente de campo gravitacional alineado a lo largo de las mismas direcciones de
ejes pero en sentido contrario, dará como resultado una lectura negativa en el acelerómetro.
Esto se puede entender mirando una imagen de microscopio electrónico de un acelerómetro
MEMS.
Los acelerómetros contienen cuatro componentes básicos: una masa móvil, llamada masa de
prueba o masa sísmica, una suspensión formada por uno o varios soportes y resortes elásticos,
1Número de personas que enferman en una población y período determinados
3.2. ACELERÓMETROS. 21
un amortiguador; y un sensor de desplazamiento que es un mecanismo mediante el cual se
registra el desplazamiento de la masa móvil 3.1.
Masa sismica
Masa movil
Resorte
Sensores
Desplazamiento
Figura 3.1: Estructura del Acelerometro
La masa se utiliza para generar una fuerza debida a la aceleración o desaceleración del
cuerpo sobre el que está montado el acelerómetro. La suspensión sujeta la masa móvil y cumple
funciones de soporte rígido. La masa de prueba superior está suspendida por los muelles de
recuperación. Tanto un campo gravitatorio dirigido a la izquierda como una aceleración lineal
del paquete a la derecha desviarán la masa de prueba a la izquierda.
De esta forma se impide el desplazamiento de la masa en las direcciones y y z. Y el resorte
permite regresa la masa a su posición original una vez que la aceleración ha desaparecido, en la
dirección contraria a la que la masa se haya movido.
El amortiguador es generalmente el volumen de aire, o ambiente controlado, capturado den-
tro del encapsulado o cavidad que rodea al dispositivo y se diseña para controlar el compor-
tamiento de la masa móvil con el fin de obtener características favorables en la respuesta en
frecuencia. El desplazamiento de la masa se transforma en una señal eléctrica de salida gracias
al mecanismo de registro.
Los acelerómetros lineales son clasificados en planares (registran sobre el eje x o y) y fuera
de plano (registran sobre el eje z). La mayoría de los movimientos humanos ocurren entre
0,3 y 3,5 Hz [20]. Por esta razón se utilizan filtros con una frecuencia de corte entre 0,1 y
0,5 Hz para separar los dos componentes de la orientación estática y el movimiento corporal
[19]. El efecto de movimiento que se crea en los tejidos blandos como la respiración quedan
suprimidos en estos filtros. En algunos filtros, se pueden modificar el sensor con el que se mide
la fuerza de gravedad. Permitiendo utilizar en lugares donde las vibraciones externas como son
el desplazamiento de un vehículo pueden estar presentes en la señal.
22 CAPÍTULO 3. DETECCIÓN DE CAÍDAS
Actualmente los acelerómetros están diseñados con tecnología MEMS con las que sobresa-
len las características de que son pequeños, ligeros y portátiles permitiendo su uso en diversos
estudios. Dentro de esos estudios, destacan los siguientes.
Luinge en el articulo Ambulatory measurement of arm orientation utilizo 3 acelerómetros y
3 giroscopios para determinar la posición de un brazo. LeMoyne desarrollo un guante en donde
los acelerómetros estaban colocados en la muñeca para medir la intensidad de la enfermedad de
Parkinson [21]. Ó como medidor de ADL 2 de las personas en los que se emplean de 2 ejes[7]
y 3 ejes [22].
Bianchi [23] realizó mediciones de un sensor de presión de aire y un acelerómetro en un
dispositivo wearable para almacenar datos y su posterior análisis.
Se han desarrollado dispositivos que van montados en el pecho, por ser este el centro de
gravedad de la arquitectura de una persona. La caída es detectada cuando se incrementa un
valor negativo con respecto al cambio de orientación de una posición [19].
Tamura [24] uso el acelerómetro y un giroscopio, con el que se puede detectar la velocidad y
el ángulo de inclinación para determinar la caída y el lado del impacto, colocando bolsas de aire
en la cintura para amortiguar el impacto de la persona y reduciendo los riesgos consecuentes
por el golpe.
Chen [10] creo un dispositivo wireless, no invasivo, de baja energía con un microcontrolador
Atmel 128L de 8 bits y un sistema operativo TinyOS que se conectaba a una pequeña red. El
dispositivo mejora las muestras secuenciales del acelerómetro, reduciendo la carga a la red.
Narayanan [25] emplea una plataforma basada el sistema PreventaFall ambulatory monitor
(PFAM) el que emplea un acelerómetro de 6g y el portal de datos MiiLink (MiiLink).
Un sistema colocado en la cabeza donde estaba un acelerómetro fue empleado por Wang
[8] determinando las velocidades de referencia. La velocidad de referencia se obtiene calculado
utilizando la integración hacia atrás de las aceleraciones y un umbral predefinido. Con ello se
distingue de las actividades diarias normales.
Luo [26] implementa una serie de sensores colocados en la cama y usando un Filtro Gaus-
siano elimina el ruido del cuerpo y con eso determinan las posiciones distintas del cuerpo.
Ghasemzadeh [27] Analizó una máquina de aprendiendo y técnicas estadísticas en la crea-
ción de un sistema de monitoreo que recolectaba información de la aceleración y actividad de
2actividades de la vida diaria
3.2. ACELERÓMETROS. 23
músculos y mejora el análisis de estas señales. Implementando un enfoque similar para Nodos
sensores inerciales que construyen transcripciones de movimiento desde las señales biomédi-
cas e identifica los movimientos. El sistema se basa en Transcripciones de movimiento que se
construyen utilizando un sistema con sensores inerciales wearables.
El análisis de los umbrales de aceleración en adultos entre los 22 y los 38 años los llevó a
cabo Kangas [28]. Realizó caídas laterales, frontales y de espalda para detectar los umbrales de
aceleración en las caídas usando un acelerómetro triaxial. Las medidas de umbral para diferen-
tes parámetros fueron tomadas en la cintura, la muñeca, y la cabeza obteniendo los siguientes
resultados, para la cintura, el rango de los parámetros SVTOT , SVD, SVmaxmin y Z2 fueron ligera-
mente parecidas entre una caída y ADL. Antes del impacto el rango de la velocidad v0 fue de
0.8 a 3.4 ms−1. El índice de las caídas estuvo en el rango de 2.65 a 5.89 g, mientras que cuando
se realizaba ADL, las caídas detectadas fue de 1.10 a 3.62g. En la muñeca el solapamiento de
la información de una caída con respecto al ADL no permitió una certeza para determinar la
caída. Se detecto que el 75% de las caídas arrojaba un valor mas alto que el del ADL. En la
cabeza no existió solapamiento, teniendo una certeza de detección del 100% para este estudio.
3.2.1. Marco teórico, calibración.
El acelerómetro toma las lecturas de cada eje correspondiente a cada coordenada dependien-
do de la posición colocada. De tal manera que para una coordenada existirán valores positivos
en sentido horario y valores negativos en sentido anti-horario como se ve en la imagen 3.2.
Para cada posición del eje, el valor correspondiente enviado por el sensor sera el siguiente:
1. Cuando el sensor se encuentra colocado de canto, viendo el acelerómetro de frente con la
marca del punto de referencia del integrado en la parte superior izquierda tendríamos 0◦
(a). La fuerza gravitatoria esta en el vector y la salida sera negativa. La variable toma el
siguiente valor: Acel_Real−y = (0,−1,0).
2. Cuando el sensor se encuentra colocado de canto girado 180◦ (d), viendo el acelerómetro
de frente con la marca del punto de referencia del integrado en la parte inferior derecha, la
fuerza gravitatoria esta en el vector y la salida sera positiva. La variable toma el siguiente
valor: Acel_Real+y = (0,+1,0).
24 CAPÍTULO 3. DETECCIÓN DE CAÍDAS
Frente0 grados
g
Frente-90 grados 90 grados
Frente180 grados
y=-1g x=1gx=-1g y=1g
z=1gz=-1g
Base
Frente
a) b) c) d)
e)f)
Figura 3.2: Orientaciones del acelerómetro
3. Cuando el sensor se encuentra colocado de canto girado -90◦ (b) a al izquierda con res-
pecto al primer punto (a), viendo el acelerómetro de frente con la marca del punto de
referencia del integrado en la parte inferior izquierda, la fuerza gravitatoria esta en el vec-
tor x la salida sera negativa. La variable toma el siguiente valor: Acel_Real−x = (−1,0,0).
4. Cuando el sensor se encuentra colocado de canto girado 90◦ (c) a al derecha con respecto
al primer punto (a), viendo el acelerómetro de frente con la marca del punto de referencia
del integrado en la parte superior derecha, la fuerza gravitatoria esta en el vector x la
salida sera positiva. La variable toma el siguiente valor: Acel_Real−x = (+1,0,0).
5. La fuerza gravitatoria en el vector +z teniendo el circuito integrado acostado con la ima-
gen de la compañía boca arriba (e), la variable toma el siguiente valor: Acel_Realz =
(0,0,+1g).
6. La fuerza gravitatoria en el vector -z teniendo el circuito integrado acostado con la ima-
gen de la compañía boca abajo (f), la variable toma el siguiente valor: Acel_Real−z =
(0,0,−1).
Al calibrar el sensor es necesario entender la relación de la entrada con respecto a la salida,
y su resolución en caso de contener un convertidor análogo digital.
3.2. ACELERÓMETROS. 25
El sensor puesto en un ambiente sin gravedad (0g), los valores enviados en todos ejes y
en todas las resoluciones debe ser 0x00. Cuando alguna de las coordenadas del sensor esta
interactuando con una fuerza de aceleración de 1g o más, tendremos una salida de datos del
sensor.
Para una resolución de 12 bits, el valor entregado será de 2047 en decimal, ó 0x07FF en
hexadecimal. Y en caso de los valores negativos, (−1g) se usa el formato de complemento de 2.
Lo que significa el valor entregado será de 4095 ó 0x0FFF . Para 14 bits es de 8191 en decimal
o 0x1FFF en hexadecimal para 1g y 16383 ó 0x3FFF para −1g. En el caso de 10 bits es de
511 ó 0x01FF para 1g y 1023 ó 0x3FF para −1g.
Para una calibración básica cuando se sigue el siguiente método:
Colocar el acelerómetro en posición plana para la lectura de la coordenada z. De prefe-
rencia es emplear una mesa de calibración de metrología.
Anote los datos de las coordenadas x y y los cuales deben estar cercanos a los ya mencio-
nados para 0g y de +1g para la coordenada z.
Según la sensibilidad conocida del dispositivo, hay que calcular el valor de 0g para z
restando la salida de aceleración de 1g de la sensibilidad conocida.
Calibración de valores con ajustes del microcontrolador.
Esta técnica requiere que los valores sean leídos mientras el dispositivo está en una posición
especifica conocida. Su uso requiere un esfuerzo mínimo de los recursos del microcontrolador.
Los valores calibrados se calculan de la siguiente manera:
Se coloca el dispositivo como se planteo anteriormente en los pasos de calibración y con los
datos se introducen en las siguientes variables de cada eje de las ecuaciones 3.1 para el eje x,
3.2 para el eje y, y para el z la ecuación 3.3.
Calx =−1ax (3.1)
Caly =−1ay (3.2)
26 CAPÍTULO 3. DETECCIÓN DE CAÍDAS
Calz = S−az (3.3)
Donde ax, ay y az son las lecturas de los offset o desplazamientos correspondientes a los
ejes en 0g mientras que S se refiere al dato tomado del dispositivo en 1g.
Los valores capturados se añaden a la lectura de aceleración actual en el dispositivo y con
eso se pueden obtener los valores de las aceleraciones ya calibradas. Como se muestra a conti-
nuación.
xz = Acelactualx +Calx (3.4)
yz = Acelactualy +Caly (3.5)
zz = Acelactualz +Calz (3.6)
La calibración completa requiere que se repitan estos pasos para cada uno de las coordena-
das y estos datos queden almacenados.
Calx =−1ax (3.7)
Caly = S−ay (3.8)
Calz =−1az (3.9)
xy = Acelactualx +Calx (3.10)
yy = Acelactualy +Caly (3.11)
zy = Acelactualz +Calz (3.12)
Calx =−1ax (3.13)
3.2. ACELERÓMETROS. 27
Caly = S−ay (3.14)
Calz =−1az (3.15)
xx = Acelactualx +Calx (3.16)
yx = Acelactualy +Caly (3.17)
zx = Acelactualz +Calz (3.18)
La calibración final del dispositivo esta dada por la suma de cada una de las calibraciones
(las ecuaciones relacionadas en la coordenada X 3.16, 3.17, 3.18 + las ecuaciones 3.10, 3.11,
3.12 para las coordenadas Y individuales + las ecuaciones 3.4, 3.5, 3.6 para las coordenadas Z
individuales, resultado la ecuación 3.19 para la coordenada x, para la coordenada y resulta la
ecuación 3.20 y para la coordenada z la ecuación 3.21
xtotal = xx + xy + xz (3.19)
ytotal = yx + yy + yx (3.20)
ztotal = zx + zy + zz (3.21)
Método más preciso de calibración:offset y sensibilidad.
Para aumentar la precisión, es necesario que el microcontrolador desarrolle mayores cálcu-
los en cada uno de los desplazamientos (offset) cada una de las seis posiciones y realizar ajustes
en los errores de sensibilidad.
Los pasos son los siguientes:
28 CAPÍTULO 3. DETECCIÓN DE CAÍDAS
Figura 3.3: Orientiación del acelerómetro
1. Colocar el acelerómetro sobre una superficie plana calibrada, usar mesa de calibración
para mayor precisión.
2. Almacenar los valores de offset para todas las 6 posiciones del sensor (ver tabla 3.3) en
el microcontrolador.
3. Después de almacenar los valores de offset de las seis posiciones, determine las sensibi-
lidades y el offset para cada eje.
4. Calcule el punto medio de cada eje considerando −1g y +1g.
En cada posición, el acelerómetro debe entregar un valor de acuerdo como se indica en la
siguiente Tabla, y mientras que no se encuentra en alguna de las opciones indicadas, la salida
del acelerómetro debería dar cero, como se indico anteriormente, pues su gravedad en las otras
posiciones debe ser 0g y su salida debe de ser 0 acelerómetro, todo valor fuera de este rango, es
el desplazamiento fuera del rango ó offset obtenido.
Para calcularel punto medio de cada eje, tomamos de referencia la imagen 3.2 y la Tabla 3.3
y tomamos los valores offset dados en cada posición de acuerdo a la siguiente ecuación:
0gx = (ax +dx + ex + fx
4) (3.22)
0gy = (by + cy + fy + ey
4) (3.23)
0gz = (aZ +bZ +dZ + cZ
4) (3.24)
3.2. ACELERÓMETROS. 29
Estos valores de la calibración son guardados en variables de la siguiente manera:
Calx =−0gx (3.25)
Caly =−0gy (3.26)
Calz =−0gz (3.27)
Análisis de la aceleración.
La relación de la medición entre el valor medido y el valor real nos da la exactitud del
sistema y su margen de error. Esta relación entre el valor de la aceleración real y la medida esta
dada por la siguiente ecuación.
Acelx
Acely
Acelz
=
Xgain YtoX ZtoX
XtoY Ygain ZtoY
XtoZ YtoZ Zgain
Acel_Realx
Acel_Realy
Acel_Realz
+
Xo f s
Yo f s
Zo f s
(3.28)
Las mediciones de la aceleración para cada posición en los 6 puntos de calibración de la
caída, queda dada de la siguiente manera.
Eje X Eje Y Eje Z
Acelx1 = Xgain +XO f s Acely1 = XtoY +Yo f s Acelz1 = XtoZ +ZO f s
Acelx2 =−Xgain +Xo f s Acely2 =−XtoY +Yo f s Acelz2 =−XtoZ +ZO f s
AcelX3 = YtoX +XO f s Acely3 = Ygain +Yo f s Acelz3 = YtoZ +ZO f s
AcelX4 =−YtoX +XO f s Acely4 =−Ygain +Yo f s Acelz4 =−YtoZ +ZO f s
AcelX5 = ZtoX +XO f s Acely5 = ZtoY +Yo f s Acelz5 = Zgain +ZO f s
AcelX6 =−ZtoX +XO f s Acely6 =−ZtoY +Yo f s Acelz6 =−Zgain +ZO f s
(3.29)
La compensación puede ser calculada de varias maneras, sumando dos salidas de la ecuación
3.29. Hay que tener cuidado de cuales ganancias y cruces se emplean ya que se pueden cancelar,
quedando las ecuaciones de la siguiente manera.
30 CAPÍTULO 3. DETECCIÓN DE CAÍDAS
Eje x Eje y Eje z
2Xo f s = Acelx1 +Acelx2 2Yo f s = Acely3 +Acely4 2Zo f s = Acelz1 +Acelz2
2Xo f s = Acelx3 +Acelx4 2Yo f s = Acely1 +Acely2 2Zo f s = Acelz3 +Acelz4
2Xo f s = Acelx5 +Acelx6 2Yo f s = Acely5 +Acely6 2Zo f s = Acelz5 +Acelz6
(3.30)
De la misma manera, dependiendo de la variable a medir, mas de una ecuación puede re-
querida para su estimación. Se puede promediar para mejorar la calidad de la estimación final
3.33.
Para el calculo de las ganancias y de los cruces, se puede obtener un estimado con las
siguientes ecuaciones.
Ganancias Cruces
xgain = Acelx1− xo f s xtoy = Acely1− yo f s
xtoy = −Acely2− yo f s
xgain = Acelx2− xo f s xtoz = Acelz2− yo f s
xtoz = −Acelz2− yo f s
ygain = Acely3− xo f s ytox = Acelx3− yo f s
ytox = −Acelx4− yo f s
ytoz = Acelz3− xo f s
ytoz = Acelz4− xo f s
zgain = Acely5− xo f s ztox = Acelx5− xo f s
ztoX = −Acelx6− xo f s
zgain = Acely6− xo f s ztox = Acely5− xo f s
ztox = −Acely6− xo f s
(3.31)
Con esto la compensación se puede extraer y al multiplicarlo por la matriz inversa obtenien-
do la relación entre la aceleración medida y la aceleración real[29].
Es conveniente combinar todas las incógnitas en una matriz:
3.2. ACELERÓMETROS. 31
Acelx
Acely
Acelz
=
xgain ytox ztox xo f s
xtoy ygain ztoy yo f s
xtoz ytoz zgain zo f s
Acel_Realx
Acel_Realy
Acel_Realz
1
(3.32)
Existen otro métodos para estimar los movimientos del acelerómetro, el Filtro esfera o fac-
tor S esta basado en un conjunto de los tres ejes del sensor, el filtro elipsoide se puede utilizar
para estimar los desplazamientos y las ganancias, y el filtro rotacional elipsoide puede usarse
para estimar los desplazamientos, ganancias y el cruce de las ganancias entre ejes En este úl-
timo caso, el cruce de ganancias entre ejes son usualmente simétricas: xtoy = ytox, xtoz = ztox,
ytoz = ztoy [30].
Filtro esfera
Todo el tiempo el acelerómetro esta tomando datos de la aceleración con respecto a la gra-
vedad, dependiendo de la orientación de cada eje. El empleo de el factor S es una manera de
considerar el total de la aceleración con respecto a todos los ejes.
Factor_S =
√x2
out + y2out + z2
out (3.33)
El tiempo de caída o la distancia recorrida esta dada por la ecuación de movimiento de la
aceleración, que puede tomarse de la velocidad
v =∫
adt = v0 +at (3.34)
Integrando la velocidad tenemos la ecuación
d =∫(v0 +at)dt (3.35)
d = d0 + v0t +12
at2 (3.36)
Para calcular el tiempo de caída es:
32 CAPÍTULO 3. DETECCIÓN DE CAÍDAS
d = v0t +12
at2 (3.37)
Donde:
d Es la distancia
v0 Es la velocidad inicial, la cual consideraremos igual a 0.
d0 Es la distancia inicial, la cual consideraremos igual a 0.
a Es la aceleración y.
t Es el tiempo.
De esta manera, si despejamos t nos quedara:
t2 =2da
(3.38)
t =
√2da
(3.39)
Con estos datos se calcula el tiempo aproximado de una caída lineal [31].
Altura (m) Tiempo de caída(s).4.91 µm 1 ms0.49 mm 10ms1 cm 45 ms4.91 cm 100 ms10 cm 142 ms19.6 cm 200 ms20 cm 202 ms25 cm 226 ms30 cm 247 ms
Altura (m) Tiempo de caída(s).44.1 cm 300 ms60 cm 349.93 ms70 cm 377.96 ms80 cm 404.06 ms90 cm 428.57 ms100 cm 451.75 ms1 m 351 ms1.23 m 500 ms4.905 m 1 s
Tabla 3.1: Tiempos de caída de objetos a distintas alturas
3.3. Conclusiones
Cuando una persona adulta se cae, tiene mayores consecuencias de heridas físicas, golpes o
torceduras que pueden tomar más tiempo en recuperarse que una persona de menor edad. Para
su detección, se pueden emplear distintos tipos de sensores, en nuestro caso, decidimos usar
3.3. CONCLUSIONES 33
el acelerómetro MMA8451Q, que aunque es un sensor invasivo, por ser un sensor MEMs, su
invasión es poco significativa, pues puede estar presente en cualquier vestimenta, cinturón o
joyería.
34 CAPÍTULO 3. DETECCIÓN DE CAÍDAS
Capítulo 4
Diseño del algoritmo del prototipo
4.1. Algoritmo.
4.1.1. Código del microcontrolador
Para saber en que parámetros se encuentran cada una de las actividades que se realizan
normalmente, así como cuando una persona se cae, se programó la tarjeta con el siguiente
algoritmo (algoritmo 1) que hace la función de un DAQ el algoritmo lo que hace es básicamente
tomar los datos que constantemente envía el acelerómetro, el microcontrolador los lee y los
transmite en protocolo serial TX/RX a la computadora.
Algorithm 1 Función, adquisición de datos DAQ (Data AcQuisition) )1: function DAQ(Adquisición de datos)2: I2C← acelerometro3: I2C← bautrade4: I2C← puerto5: I2C← clock6: I2C← GPIO7: microprocesador← UART8: microprocesador← bautrade9: end function
4.1.2. Almacenado de los datos
Con la tarjeta trabajando como un DAQ, hace falta la contra parte que almacene los datos
para su análisis posterior. Python es perfecto para este trabajo, por su facilidad y flexibilidad. El
35
36 CAPÍTULO 4. DISEÑO DEL ALGORITMO DEL PROTOTIPO
algoritmo 2 se comunica con el microcontrolador y toma los datos que esté esta transmitiendo
y los va almacenando en un archivo csv (para mayores detalles, ver apéndice C)
Algorithm 2 Función, Almacenamiento de datos en archivo1: function DAQ(Adquisición de datos)2: localizacion← ttyUSBx3: Velocidad.serie← 300 ... 1152004: Time← Hora, dia, mes, year5: Datos← Abrir archivo para escritura de datos6: var.datos← dato.localizacion7: if var.datos 6= EOF then8: Datos← var.datos + Time.Hora + Time.dia + Time.mes + Time.year9: end if
10: end function
4.1.3. Análisis de los datos
Con estos datos, se obtienen los parámetros para trabajar y graficar. Los picos mas altos
representados por los máximos y los mínimos (ver Figura 4.1). Estos datos permanecen un
periodo muy pequeño, aproximadamente de 1 segundo, lo que incluye entre 90 y 100 muestras.
Tomamos todos los datos y los conjuntamos en una sola gráfica (ver Figura 4.1), con el que
podemos ver los valores pico y su comportamiento conjunta para cada actividad. Los picos mas
altos indican algún movimiento fuera del promedio.
Llenamos la Tabla 4.1 con los valores máximos y mínimos que obtuvimos con el análisis del
script de Matlab/Octace (apéndice D). Estos datos sirven de base para crear el árbol de decisio-
nes con los valores obtenidos, sin embargo es difícil de una búsqueda limitada por profundidad
es la elección de un limite adecuado. [32]. Esto es debido a que los valores no son estáticos,
cambian conforme el tipo de actividad que se realicé sea mas extrema o menos que la anterior.
Es por eso que se realizan dos árboles de decisiones, uno con valores máximos y otro con va-
lores minimos. Con estos valores, generamos un árbol de decisiones con los valores máximos
(ver Figura 4.3) y otro árbol con los valores mínimos (ver Figura 4.3).
4.1. ALGORITMO. 37
Figura 4.1: Gráficas de actividades diarias y de caídas.
Actividad. Máximo. Mínimo. Promedio.Acostado. 178 36 111Acostado. 140 65 109Acostado. 180 43 101Agacharse. 120 95 112Agacharse. 140 88 113
Bajar escaleras. 161 65 106Bajar escaleras. 243 31 107Bajar escaleras. 145 88 107Bajar escaleras. 198 30 107
Caerse. 232 65 111Caerse. 202 55 109Caerse. 258 36 110Caerse. 216 47 110
Tabla 4.1: Datos mínimos y máximos de las actividades (valores crudos), parte 1.
38 CAPÍTULO 4. DISEÑO DEL ALGORITMO DEL PROTOTIPO
Actividad. Máximo. Mínimo. Promedio.Caminar. 143 64 106Caminar. 176 80 107Caminar. 137 87 106Caminar. 142 87 107
Saltar. 195 42 109Saltar. 278 25 110
Sentarse. 123 90 106Sentarse. 143 86 107Sentarse. 130 89 105Sentarse. 139 88 109Sentarse. 141 88 113Sentarse. 182 34 109Sentarse. 137 78 111
Subir escalera. 148 79 106Subir escalera. 199 36 124Subir escalera. 186 46 109Subir escalera. 128 96 110
Tabla 4.2: Datos mínimos y máximos de las actividades (valores crudos), parte 2.
Figura 4.2: Árbol de toma de decisiones de valores mínimos después del filtro
4.1. ALGORITMO. 39
Y hacemos lo mismo con el valor máximo, de acuerdo al árbol de la Figura 4.3.
La forma de leer estos arboles es de izquierda a derecha, de abajo hacia arriba hasta llegar
al punto mas alto y luego otra vez hacia abajo. Cada triangulo representa una toma de decisión.
Entonces, el valor mínimo registrado corresponde a la inactividad, mientras que el máximo
corresponde a saltar. Esto se puede ver tanto en el árbol de máximos como de mínimos.
Figura 4.3: Árbol de toma de decisiones de valores máximos después del filtro
Se puede ver como en el árbol de decisiones mínimos el valor de 122 no tiene ningún dato
cercano que pueda malinterpretarlo el microcontrolador, ya que el valor hacia abajo que le sigue
es el de 74 y el que le sigue hacia arriba, es de 153, por lo tanto todo rango de valores cercanos
corresponden a la detección de caída.
En el caso del árbol de decisiones máximos, la toma de decisión no es tan sencilla, pues
el valor en la caída es de 166 y hacia abajo tenemos de 162 en la subida de escaleas. Cuando
bajamos escaleras el valor es de 212. Por consiguiente, debemos tomar ambos valores y com-
pararlos, de tal manera que se detecta el mínimo como una actividad y el máximo como otra
actividad, la decisión queda anulada.
Con los árboles ya desarrollados, se crea el pseudocodigo con el que se desarrollaran los
programas para el microcontrolador, los cuales se pueden ver las secciones más destacables
en el apéndice (B). Se debe considerar que el microcontrolador constantemente esta revisando
los datos enviados por el acelerómetro, para la toma de decisiones, trabajamos de 100 en 100
muestras, y con ellas determinamos el mínimo y el máximo adquirido y metemos un filtro para
eliminar aquellas oscilaciones generadas por la respiración o actividades de baja frecuencia.
Comparamos el dato mínimo con el tipo de actividad (Algoritmo 3.)
Algorithm 3 Función filtro de inactividad1: function INACTIVIDAD(valores maximos, valores minimos)2: Di f erencia← max−min3: if Di f erencia > 15 then4: llamar f uncionactividad5: regresa valor de actividad6: else regresa valor de reposo7: end if8: end function
El algoritmo 5 es el resultado del árbol 4.3 y también del árbol 4.2, con el que estamos
haciendo la comparativa del valor obtenido y los datos de los árboles, y regresa un estado
máximo. El valor del estado se almacena, para en forma posterior realizar una comparativa
con el estado mínimo.
Algorithm 4 Función, tipo de actividad1: function TIPO ACTIVIDAD(Actividad maximos, actividad minimos)2: Val← Actividad árbol mínimos3: Val2← Actividad árbol máximos4: if ( thenVal 6= Val2)5: Actividad← error;6: end if7: end function
Si la comparativa nos arroja un estado falso (algoritmo 4), no estamos dentro de la actividad
establecida por los estados máximos y mínimos y por lo tanto no ha ocurrido tal actividad. La
diferencia entre los estados debe ser verdadera para que el sistema determine que la actividad
leída por el acelerómetro ha ocurrido.
4.1. ALGORITMO. 41
Algorithm 5 Función, tipo de actividad1: function ACTIVIDAD(valores maximos, valores minimos)2: if Maximo/minimo = nodo1 then3: Agachado4: end if5: if Maximo/minimo = nodo2 then6: Caminar7: end if8: if Maximo/minimo = nodo3 then9: Acostarse
10: end if11: if Maximo/minimo = nodo4 then12: Sentarse13: end if14: if Maximo/minimo = nodo5 then15: Subir las Escaleras16: end if17: if Maximo/minimo = nodo6 then18: Bajar las escaleras19: end if20: if Maximo/minimo = nodo7 then21: Caerse22: end if23: end function
42 CAPÍTULO 4. DISEÑO DEL ALGORITMO DEL PROTOTIPO
4.2. Resultados y conclusiones
Una vez generado el código y guardado en el microcontrolador, hicimos la prueba con 10
personas tomando 10 muestras para cada actividad. Esto fue porque es importante que el detec-
tor de caídas no detecte la caída cuando esta realizando alguna actividad de alto impacto.Los
resultados los revisamos y capturamos en la siguiente tabla de matriz de confusión.
Actividad. Aga
char
se.
Cam
inar
.
Aco
star
se.
Sent
arse
.
Subi
resc
aler
as.
Baj
ares
cale
ras.
Cae
rse.
Salta
r.
Agacharse. 99Caminar. 1 97 3Acostarse. 3 93 4Sentarse. 4 89 7Subir escaleras. 7 90 3Bajar escaleras. 7 95 2Caerse. 2 97 1Saltar. 1 99
Tabla 4.3: Datos actividades en la matriz de confusión.
Esta tabla nos indica la probabilidad que tiene el sistema de tener una falla en la detección.
Podemos ver como el Sentarse tiene un nivel muy bajo de determinar la actividad, sin embargo
para la actividad principal que es la que estamos buscando, la caída, su nivel esta en un 97%
de detección, creando alguna falla con sus vecinos. Esto es que si la persona baja las escaleras
corriendo o si se pone a realizar saltos constantemente, hay probabilidades de que detecte alguno
de estas dos actividades como si fuera una caída.
Un sistema detector de caídas permite una independencia entre las personas mayores. Per-
mitiendo realizar las actividades que normalmente realiza sin preocuparse por auxilio que pu-
dieran necesitar en caso de presentarse alguna caída. Este detector permite determinar el tipo
de actividad que están realizando, permitiendo detectar la caída sin sacrificar los recursos del
microcontrolador.
La precisión del algoritmo funciona muy bien para personas con actividades de bajo y medio
ritmo de vida, que normalmente son las personas con alguna enfermedad o característica que
4.2. RESULTADOS Y CONCLUSIONES 43
se busca estar monitoreando, lo que permite perfectamente reconocer si se ha caído y estar al
pendiente si en la caída, la persona no ha podido incorporarse.
Además cabe destacar que el algoritmo se simplifico cuando en el análisis se observo el
comportamiento que tenían las variables al elevarlas al cuadrado, el cual era idéntico que cuando
se obtenían los valores absolutos como se puede apreciar en la Figura 4.4
Figura 4.4: Comparativa de los valores crudos recibidos por el microprocesador de cada ejecuando la persona cae.
Estos datos obtenidos se puede ver como el valor en el eje de las y se reduce un 100% al
valor que originalmente nos arroja el valor elevado al cuadrado. Logrando reducir el tamaño del
tipo de la variable y reduciendo el tiempo de proceso del microcontrolador.
La Figura 4.5 nos muestra como se obtiene una gráfica similar aplicando la ecuación 3.33
tanto en los valores absolutos como elevados al cuadrado, pero igual que como se comento
anteriormente, se reduce el tamaño de la variable.
Actualmente solo envía una alarma sonora y visual, sin embargo se tiene planteado ampliarla
con un envío de alerta a través del internet usando un sistema wireless y usando un localizador
de posición Bluetooth para su pronta asistencia dentro del hogar. El programa fue desarrollado
en C lo que permite su portabilidad permitiendo emplearlo con otros softwares como el sistema
operativo para internet de las cosas (IoT), el RIOT OS, que esta desarrollado en C entre otros.
44 CAPÍTULO 4. DISEÑO DEL ALGORITMO DEL PROTOTIPO
Figura 4.5: Comparativa de filtro s y filtro absoluto de los valores crudos recibidos por el mi-croprocesador cuando la persona se cae.
Apéndice A
Gráficas
Figura A.1: Comparativa de filtro s y filtro absoluto de los valores crudos recibidos por elmicroprocesador cuando la de una persona recostándose.
45
46 APÉNDICE A. GRÁFICAS
Figura A.2: Comparativa de filtro s y filtro absoluto de los valores crudos recibidos por elmicroprocesador cuando la de una persona de una persona dejandose caer en la cama.
47
Figura A.3: Comparativa de filtro s y filtro absoluto de los valores crudos recibidos por elmicroprocesador cuando la de una persona de una persona recostándose.
48 APÉNDICE A. GRÁFICAS
Figura A.4: Gráfica 1 de parámetros de una persona agachándose.
49
Figura A.5: Gráfica 2 de parámetros de una persona agachándose.
50 APÉNDICE A. GRÁFICAS
Figura A.6: Gráfica 1 de parámetros de una persona bajando las escaleras.
51
Figura A.7: Gráfica 2 de parámetros de una persona bajando las escaleras.
52 APÉNDICE A. GRÁFICAS
Figura A.8: Gráfica 3 de parámetros de una persona bajando las escaleras.
53
Figura A.9: Gráfica 4 de parámetros de una persona bajando las escaleras.
54 APÉNDICE A. GRÁFICAS
Figura A.10: Gráfica 1 de parámetros de una persona cuando se cae.
55
Figura A.11: Gráfica 2 de parámetros de una persona cuando se cae.
56 APÉNDICE A. GRÁFICAS
Figura A.12: Gráfica 1 de parámetros de una persona realiza una caminata tranquila.
57
Figura A.13: Gráfica 2 de parámetros de una persona realiza una caminata tranquila.
58 APÉNDICE A. GRÁFICAS
Figura A.14: Gráfica 3 de parámetros de una persona realiza una caminata tranquila.
59
Figura A.15: Gráfica 1 de parámetros de una persona sentándose en una silla.
60 APÉNDICE A. GRÁFICAS
Figura A.16: Gráfica 2 de parámetros de una persona sentándose (dejándose caer) en un sofá.
61
Figura A.17: Gráfica 3 de parámetros de una persona sentandose en la cama.
62 APÉNDICE A. GRÁFICAS
Figura A.18: Gráfica 4 de parámetros de una persona sentandose en un una silla.
63
Figura A.19: Gráfica 5 de parámetros de una persona sentandose en un sofá.
64 APÉNDICE A. GRÁFICAS
Figura A.20: Gráfica 6 de parámetros de una persona sentandose en la cama (dejándose caer).
65
Figura A.21: Gráfica 7 de parámetros de una persona sentandose en el suelo.
66 APÉNDICE A. GRÁFICAS
Figura A.22: Gráfica 1 de parámetros de una persona subiendo escaleras.
67
Figura A.23: Gráfica 2 de parámetros de una persona subiendo escaleras.
68 APÉNDICE A. GRÁFICAS
Figura A.24: Gráfica 3 de parámetros de una persona subiendo escaleras.
69
Figura A.25: Gráfica 4 de parámetros de una persona subiendo escaleras.
70 APÉNDICE A. GRÁFICAS
KDSK kinetis expert
El Kinetis Software Development Kit (KDSK) es un software de apoyo para la configuración
inicial de los pines, periféricos, USB, y software intermedio como son el MQX y FreeRTOS.
La forma de trabajarlo es básicamente seleccionar los pines, indicar que tipo de periférico se va
a emplear, actualizar el código y copiar los archivos pin_mux.c y pin_mux.h al IDE con el que
se va a programar el resto del código.
Figura A.26: KDSK kinetis expert.
El KSDK PE 2.0 esta dividido en 4 secciones (Figura A.26), la sección a la izquierda sirve
para buscar los pines y seleccionarlos. La sección derecha es donde se va actualizando el có-
digo, ahí están los archivos pin_mux.c y pin_mux.h. La sección inferior están los pines y los
periféricos ya seleccionados y listos para configurar. En la sección superior se puede ver un
microcontrolador en el que en el interior de el, estántodos los periféricos que trae y pueden ser
usados.
El KDSK fue diseñado para auxiliar en el código de inicialización de casi toda la serie de mi-
crocontroladores kinetis de la compañía NXP. El MKL25Z128xxx4 es el microprocesador que
usaremos, por lo que se debe indicar en el KDSK. Para establecer el micro, se debe seleccionar
en el menu File, New y escribir KL25Z y seleccionando MKL25Z128xxx4.
Figura A.27: Selección del microprocesador.
71
La sección derecha, nos indica los registros y el código generado, es importante observar
que el microcontrolador seleccionado, se encuentre plasmado en el texto del código.
Figura A.28: Sección lateral izquierda.
En sección central podemos seleccionar directamente el periférico a utilizar sin necesaria-
mente conocer el pin que le corresponde, al darle doble click al periférico, nos mostrara una
ventana emergente para palomear el dispositivo. El I2C0 se encuentra en el cuarto renglón de la
primera fila, y cuando lo seleccionamos, nos indica que debemos seleccionar el SCL y el SDA
del comunicación, palomeamos las dos opciones y le damos aceptar.
Figura A.29: Sección central superior.
En la sección central inferior es para la configuración a mayor detalle, podemos ver que
cuando seleccionamos el I2C0 nos dice que esta en los pines 24 y pines 25 del microcontrolador.
En esta sección podemos darle un nombre a cada pin del periférico con el que dentro del código
podemos hacer su llamado y podemos indicar si es un dispositivo de entrada o salida.
Figura A.30: Sección central inferior.
El código final, se obtiene después de haber seleccionado cada uno de los pines y perifé-
ricos a utilizar, se selecciona en el menu, seleccionar Pins, y luego Generate Now, y entonces
72 APÉNDICE A. GRÁFICAS
actualizara el texto de acuerdo a cada campo anteriormente configurado.
Figura A.31: Sección central superior.
La configuración necesitamos para este programa es la siguiente.
Puerto A. Puerto B.Pin. Descripción. Pin. Descripción.14 GPIO 8 GPIO15 GPIO 9 GPIO27 GPIO 10 Rx uart0.28 Tx uart0. 18 Led Rojo de la tarjeta.40 EXtal0. 19 Led Verde de la tarjeta.41 Xtal0.
Tabla A.1: Tabla de pines de los puertos A y B seleccionados.
Puerto D. Puerto E.Pin. Descripción. Pin. Descripción.1 Led azul. 2 GPIO
3 GPIO4 GPIO5 GPIO15 Uart2 Tx.16 Uart2 Rx.25 I2C0 SDA.24 I2C0 SCL.
Tabla A.2: Tabla de pines de los puertos D y E seleccionados.
Una vez generado el código, es importante ver que los pines seleccionados aparezcan en al
estructura del pin_mux. La Lista de variables de pines del microcontrolador definidas a conti-
nuación son las empleadas.
73
1 # d e f i n e PCR_PE_DISABLED 0 x00u
# d e f i n e PIN1_IDX 1u
3 # d e f i n e PIN2_IDX 2u
# d e f i n e SOPT5_UART0RXSRC_UART_RX 0 x00u
5 # d e f i n e SOPT5_UART0TXSRC_UART_TX 0 x00u
# d e f i n e PCR_PE_DISABLED 0 x00u
7 # d e f i n e PIN1_IDX 1u
# d e f i n e PIN18_IDX 18u
9 # d e f i n e PIN19_IDX 19u
# d e f i n e PCR_PE_DISABLED 0 x00u
11 # d e f i n e PIN14_IDX 14u
# d e f i n e PIN15_IDX 15u
13 # d e f i n e PIN24_IDX 24u
# d e f i n e PIN25_IDX 25u
15
# d e f i n e PIN22_IDX 22u
17 # d e f i n e PIN23_IDX 23u
19 # d e f i n e PIN2_IDX 2u
# d e f i n e PIN3_IDX 3u
21 # d e f i n e PIN4_IDX 4u
# d e f i n e PIN5_IDX 5u
23 # d e f i n e PIN8_IDX 8u
# d e f i n e PIN9_IDX 9u
25 # d e f i n e PIN10_IDX 10u
74 APÉNDICE A. GRÁFICAS
Apéndice B
Kinetis design studio
El KDSK solo se utiliza para la configuración inicial, una vez que ya se obtiene el código,
puede cerrarse y solo trabajar con el IDE KDS.
Las librerías que se utilizaron fueron las mostradas en la lista siguiente. En la lista se men-
cionan cuales son las propias del fabricante, de NXP, las cuales se comenta como KDSK y
cuales son las desarrolladas en el trabajo de tesis. Estas no vienen comentadas.
Lista de variables definidas
1 # i n c l u d e " boa rd . h " / / KDSK
# i n c l u d e " f s l _ d e b u g _ c o n s o l e . h " / / KDSK
3 # i n c l u d e " f s l _ i 2 c . h " / / KDSK
5 # i n c l u d e " pin_mux . h " / / KDSK
# i n c l u d e " f s l _ g p i o . h " / / KDSK
7 # i n c l u d e " f s l _ p o r t . h " / / KDSK
# i n c l u d e " I2C . I n i t . h "
9 # i n c l u d e "LCD. 1 6 x2 . h "
# i n c l u d e " . / De lays / Delay . h "
11 # i n c l u d e " . / Acce l . 8451Q/ Acce l . I n i t . h "
# i n c l u d e " Ma tema t i ca s . h "
13 # i n c l u d e " D e c l a r a c i o n . V a r i a b l e s . h "
Lista de variables definidas para el código son las siguientes.
75
76 APÉNDICE B. KINETIS DESIGN STUDIO
1 /∗ ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗
∗ D e c l a r a c i o n de l a s v a r i a b l e s a u s a r
3 ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗
∗ /
5 # i f n d e f SOURCES_DECLARACION_VARIABLES_H_
# d e f i n e SOURCES_DECLARACION_VARIABLES_H_
7
/∗ ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗
9 ∗ D e c l a r a c i o n e s
∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ ∗ /
11 /∗ Mapeo d e l LCD ∗ /
# d e f i n e LOGIC_LED_ON 0U
13 # d e f i n e LOGIC_LED_OFF 1U
# d e f i n e LCD_DATO_GPIO GPIOD
15 # d e f i n e LCD_DATO_GPIO_PORT PORTD
# d e f i n e LCD_DATO_GPIO_PIN_1 0U
17 # d e f i n e LCD_DATO_GPIO_PIN_2 1U
# d e f i n e LCD_DATO_GPIO_PIN_3 2U
19 # d e f i n e LCD_DATO_GPIO_PIN_4 3U
# d e f i n e LCD_DATO_GPIO_PIN_5 4U
21 # d e f i n e LCD_DATO_GPIO_PIN_6 5U
# d e f i n e LCD_DATO_GPIO_PIN_7 6U
23 # d e f i n e LCD_DATO_GPIO_PIN_8 7U
25 # d e f i n e LCD_CTRL_ GPIOA
# d e f i n e LCD_CTRL_PORT PORTA
27 # d e f i n e LCD_RS_GPIO_PIN 2U
# d e f i n e LCD_RW_GPIO_PIN 4U
29 # d e f i n e LCD_EN_GPIO_PIN 5U
31 / / # d e f i n e BOARD_LED_BLUE_GPIO GPIOD
/ / # d e f i n e BOARD_LED_BLUE_GPIO_PORT PORTD
33 / / # d e f i n e BOARD_LED_BLUE_GPIO_PIN 1U
35
/∗ ∗∗ Del r e l o g d e l I2C ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ ∗ /
77
37 # d e f i n e ACCEL_I2C_CLK_SRC I2C0_CLK_SRC
# d e f i n e I2C_BAUDRATE 100000U
39
/∗ ∗∗ De l o s p i n e s y p u e r t o s d e l I2C ∗∗∗∗∗∗∗∗∗ ∗ /
41 # d e f i n e I2C_RELEASE_SDA_PORT PORTE
# d e f i n e I2C_RELEASE_SCL_PORT PORTE
43 # d e f i n e I2C_RELEASE_SDA_GPIO GPIOE
# d e f i n e I2C_RELEASE_SDA_PIN 25U
45 # d e f i n e I2C_RELEASE_SCL_GPIO GPIOE
# d e f i n e I2C_RELEASE_SCL_PIN 24U
47
/∗ ∗∗ De l a v e l o c i d a d de t r a n s m i c i o n ( s t a n d a r ) I2C ∗∗∗∗∗∗ ∗ /
49 # d e f i n e I2C_RELEASE_BUS_COUNT 100U
# d e f i n e I2C_BAUDRATE 100000U
La siguiente tabla de registros son las direcciones del microcontrolador para el uso del I2C
con del acelerómetro.
Dirección. Registro4006 6000 I2C De dirección 1 (I2C0_A1).4006 6001 I2C Divisor de frecuencia (I2C0_F).4006 6002 I2C De control 1 (I2C0_C1).4006 6003 I2C Estatus (I2C0_S).4006 6004 I2C De Datos de entradas y salidas (I2C0_D).4006 6005 I2C De control 2 (I2C0_C2).
Tabla B.1: Tabla de direcciones I2C0 del acelerómetro MMA8451Q
Dirección. Registro4006 7000 I2C De dirección 1 (I2C1_A1).4006 7001 I2C Divisor de frecuencia (I2C1_F).4006 7002 I2C De control 1 (I2C1_C1).4006 7003 I2C Estatus (I2C1_S).4006 7004 I2C De Datos de entradas y salidas (I2C1_D).4006 7005 I2C De control 2 (I2C1_C2).
Tabla B.2: Tabla de direccionesI2C1 del acelerómetro MMA8451Q
78 APÉNDICE B. KINETIS DESIGN STUDIO
Bit. Campo. Descripción de la bandera.7 TFC De transferencia completa.6 IAAS De dirección como esclavo.5 BUSY De bus ocupado.4 ARBL De perdida arbitrada.3 RAM De rango de dirección.2 SRW De lectura/escritura del dispositivo esclavo.1 IICIF De interrupción I2C.0 RXAK Reconocimiento de recepción.
Tabla B.3: Tabla de las banderas del acelerómetro MMA8451Q
Los registros del acelerómetro, de acuerdo a la Tabla B.3 se realizan las siguientes declara-
ciones de las variables.
/∗ ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗
2 ∗ MMA8451Q R e g i s t r o s
∗∗∗ De l o s r e g i s t r o s d e l a c e l ( pag 14) ∗∗∗∗∗∗∗∗ ∗ /
4
# d e f i n e MMA845x_I2C_ADDRESS 0x1D
6
# d e f i n e MMA8451_WHOAMI 0x1AU
8 # d e f i n e ACCEL_XYZ_DATA_CFG 0x0EU
# d e f i n e ACCEL_CTRL_REG1 0x2AU
10 # d e f i n e ACCEL_READ_TIMES 10U
# d e f i n e ACCEL_WHOAMI_REG 0x0DU
12
# d e f i n e ACCEL_STATUS 0x00U
14 # d e f i n e X_MSB_REG 0x01
# d e f i n e X_LSB_REG 0x02
16 # d e f i n e Y_MSB_REG 0x03
# d e f i n e Y_LSB_REG 0x04
18 # d e f i n e Z_MSB_REG 0x05
# d e f i n e Z_LSB_REG 0x06
20 # d e f i n e F_CONF_REG 0x09
79
# d e f i n e TRIG_CFG_REG 0x0A
22
# d e f i n e SYSMOD_REG 0x0B
24 # d e f i n e INT_REG 0x0C
# d e f i n e WHO_AM_I_REG 0x0D
26 # d e f i n e XYZ_DATA_CFG_REG 0x0E
# d e f i n e HP_FILTER_REG 0x0F
28 /∗ ∗∗ P o s i c i o n P o r t r a i t / Landscape ( PL ) ∗∗∗∗∗∗ ∗ /
# d e f i n e PL_STATUS_REG 0x10
30 # d e f i n e PL_CFG_REG 0x11
# d e f i n e PL_COUNT_REG 0x12
32 # d e f i n e PL_BF_ZCOMP_REG 0x13
Z
34 # d e f i n e P_L_THS_REG 0x14
Landscape
36 /∗ ∗∗ Caida ( FF ) Movimiento (MT) ∗∗∗∗∗∗∗∗∗∗∗∗∗∗ ∗ /
# d e f i n e FF_MT_CFG_REG 0x15
38 # d e f i n e FF_MT_SRC_REG 0x16
# d e f i n e FT_MT_THS_REG 0x17
40 # d e f i n e FF_MT_COUNT_REG 0x18
/∗ ∗∗ T r a n s i t o r i o (TRAN) ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ ∗ /
42 # d e f i n e TRAN_CFG_REG 0x1D
# d e f i n e TRAN_SRC_REG 0x1E
44 # d e f i n e TRAN_THS_REG 0x1F
# d e f i n e TRAN_COUNT_REG 0x20
46 /∗ ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ P u l s o ( P ) ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ ∗ /
# d e f i n e P_CFG_REG 0x21
48 # d e f i n e P_SRC_REG 0x22
# d e f i n e P_THSX_REG 0x23
50 # d e f i n e P_THSY_REG 0x24
# d e f i n e P_THSZ_REG 0x25
52 # d e f i n e P_TMLT_REG 0x26
# d e f i n e P_LTCY_REG 0x27
54 # d e f i n e P_WIND_REG 0x28
/∗ ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ AutoSleep (AS) ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ ∗ /
56 # d e f i n e ASLP_COUNT_REG 0x29
a c t i v a r e l Auto S l e e p
80 APÉNDICE B. KINETIS DESIGN STUDIO
58 /∗ ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ C o n t r o l (CTRL) ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ ∗ /
# d e f i n e CTRL_REG1 0x2A
60 # d e f i n e CTRL_REG2 0x2B
# d e f i n e CTRL_REG3 0x2C
62 # d e f i n e CTRL_REG4 0x2D
# d e f i n e CTRL_REG5 0x2E
64 /∗ ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ XYZ C o r r e c c i o n ( O f f s e t ) ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ ∗ /
# d e f i n e OFFSET_X_REG 0x2F
66 # d e f i n e OFFSET_Y_REG 0x30
# d e f i n e OFFSET_Z_REG 0x31
68 / ∗∗∗∗∗∗∗∗∗∗∗∗ A j u s t e de l a S e n s i t i v i t y a +/− 2g , 4g o 8g ∗∗∗∗ /
# d e f i n e SENSIBILIDAD_2G 4096
70 # d e f i n e SENSIBILIDAD_4G 2048
# d e f i n e SENSIBILIDAD_8G 1024
Una vez declaradas cada una de las definiciones, es importante realizar la inicialización del
I2C0[33], El I2C para que pueda aceptar las configuraciones, debe primero detenerse, enviar
los códigos de configuración y después volver a activar su comunicación.
1 vo id I 2 C 1 _ i n i t ( vo id ) {
I2C0−>C1 = 0 ;
3 I2C0−>S = 2 ;
I2C0−>F = 0x1C ;
5 I2C0−>C1 = 0x80 ;
I2C1
7 }
El código principal queda de la siguiente manera.
1
i n t main ( v o i d )
3 {
/∗ ∗∗∗∗∗∗∗∗ C o n f i g u r a c i o n e s ∗∗∗∗∗∗∗∗∗∗∗∗∗∗ ∗ /
81
5 Init_DbgUART0 ( ) ;
In i t_LEDs ( ) ;
7 In i t_P ins_LCD ( ) ;
/∗ ∗∗∗ V e l o c i d a d d e l r e l o j 48 Mhz ∗∗∗∗∗∗∗ ∗ /
9 BOARD_BootClockRUN ( ) ;
/∗ ∗∗∗∗∗∗∗∗ I n i c i a l i z a c i o n ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ ∗ /
11 I n i t _ I 2 C _ B u s ( ) ; / /
Conf ig_I2C ( ) ;
13 Conf ig_Ace l ( ) ; / /
Init_I2C_MCU ( ) ; / /
15 I 2 C 0 _ i n i t ( ) ;
BOARD_InitDebugConsole ( ) ;
17 DataReady = 0 ;
I 2 C _ M a s t e r T r a n s f e r C r e a t e H a n d l e (BOARD_ACCEL_I2C_BASEADDR, &g_m_handle ,
i 2 c _ m a s t e r _ c a l l b a c k , NULL) ;
19 Conf ig_Acel_Reg ( ) ;
/∗ ∗∗∗∗∗∗∗∗∗∗ Leer d a t o s XYZ ∗∗∗∗∗∗∗∗∗∗∗∗ ∗ /
21 w h i l e ( 1 )
{
23 Leer_Ace l ( ) ;
Delay ( I2C_RELEASE_BUS_COUNT ) ;
25 PRINTF ( " I " ) ;
Delay ( I2C_RELEASE_BUS_COUNT ) ;
27
}
29 }
El UART0 se emplea para recibir los datos por el puerto USB del dispositivo a la compu-
tadora, mientras que los LEDS son para activarlos cuando se detecte la caída e inicie el sistema
(caso de uso 1 y 4, sección 2.7). Se inicializa el microcontrolador y los periféricos. Cuando se
hayan configurado e inicializado cada elemento que se va a emplear, se entra en un ciclo infinito
que va a estar revisando constantemente el acelerómetro.
Los datos obtenidos de los ejes sen envían por el puerto USB con el comando PRINTF.
También se envía una “I”, que sirve como referencia para indicar que ha terminado los tres
82 APÉNDICE B. KINETIS DESIGN STUDIO
valores de los ejes y que va a volver a mandar otros datos. Esté es importante para cuando se
utilice el código de python (sección C).
1 vo id Leer_Ace l ( vo id )
{
3 s t a t u s 0 _ v a l u e = 0 ;
w h i l e ( s t a t u s 0 _ v a l u e != 0 x f f )
5 {
I2C_ReadAccelRegs (BOARD_ACCEL_I2C_BASEADDR,
MMA845x_I2C_ADDRESS , ACCEL_STATUS, &s t a t u s 0 _ v a l u e , 1 ) ;
7 }
I2C_ReadAccelRegs (BOARD_ACCEL_I2C_BASEADDR,
MMA845x_I2C_ADDRESS , ACCEL_STATUS, Axies , 7 ) ;
9 s t a t u s 0 _ v a l u e = Axies [ 0 ] ;
/∗ A j u s t e de l o s v a l o r e s ∗ /
11 x1 = Axies [ 1 ] ;
x2 = Axies [ 2 ] ;
13 y1 = Axies [ 3 ] ;
y2 = Axies [ 4 ] ;
15 z1 = Axies [ 5 ] ;
z2 = Axies [ 6 ] ;
17 /∗ cambio b i t s en l o s v a l o r e s ∗ /
x= x1 << 8 ;
19 x= x | x2 ;
y= y1 << 8 ;
21 y= y | y2 ;
z= z1 << 8 ;
23 z= z | z2 ;
25 F a c t o r _ s ( x , y , z ) ;
PRINTF ( " %5d,%5d,%5d " , x , y , z ) ;
27 }
El código anterior es para capturar lo datos del acelerómetro, los cuales quedan almacenados
en la variable Axies, pero estos quedan divididos en de 8 bits. El bit más significativo esta en
83
los renglones nones del vector. Los renglones pares del vector se encuentran los bits menos
significativo. Se realiza un acople primero haciendo un corrimiento a la izquierda de 8 bits y
luego sumándolo a la variable con los bits menos significativos.
El siguiente código es donde hace la determinación de si la persona que porta el dispositivo
esta en actividades cotidianas o si se ha caído.
i n t F a c t o r _ s ( i n t x1 , i n t y1 , i n t z1 )
2 { d ou b l e R ;
f l o a t Dato ;
4
f l o a t r e s ;
6 f l o a t i =0 ;
8 n1 = x1 ^ 2 ;
n2 = y1 ^ 2 ;
10 n3 = z1 ^ 2 ;
Dato = n1 + n2 + n3 ;
12
do
14 {
i = i + 0 . 1 ;
16 r e s = i ∗ i ;
} w h i l e ( Dato >= r e s ) ;
18
i f ( r e s >25) {
20 LED_RED_TOGGLE ( ) ;
}
22 r e t u r n r e s ;
}
84 APÉNDICE B. KINETIS DESIGN STUDIO
Apéndice C
Python
La tarjeta envía los datos por el puerto USB a la computadora. Se emplea una terminal para
visualizar los datos como el minicom. Se debe configurar con una velocidad de comunicación de
115200 bps 8N1. Con esto podemos visualizar los datos, sin embargo, es necesario almacenarlos
para analizarlos.
Se programó en python para que realicé esta función. Cuando almacenamos los datos, es
necesario saber las fechas, es por eso que se usa, la librería time.
i m p o r t s e r i a l
2 i m p o r t t ime
i m p o r t s y s
Otra parte importante es hacer agregar un código iterativo que busque y se conecte con la
tarjeta buscando los posibles puntos de conexión, desde el ttyUSB1 hasta el ttyACM3.
1 c o n n e c t e d = F a l s e
l o c a t i o n s =[ ’ / dev / ttyUSB0 ’ , ’ / dev / ttyUSB1 ’ , ’ / dev / ttyUSB2 ’ , ’ / dev / ttyUSB3 ’ , ’ /
dev / ttyACM0 ’ , ’ / dev / ttyACM1 ’ ]
3 f o r d e v i c e i n l o c a t i o n s :
t r y :
5 p r i n t ( " T ry ing t o c o n e c t . . . " ) , l o c a t i o n s
s e r = s e r i a l . S e r i a l ( dev i ce , 57600) #300 , 1200 , 2400 , 4800 , 9600 , 19200 ,
38400 , 57600 115200
7 b r e a k
e x c e p t :
85
86 APÉNDICE C. PYTHON
9 p r i n t ( " F a i l e d t o c o n n e c t on " ) , d e v i c e
11 w h i l e n o t c o n n e c t e d :
s e r i n = s e r . r e a d ( )
13 c o n n e c t e d = True
Una vez que hemos hecho la conexión con la tarjeta, se especifica que se va a almacenar los
datos en un archivo con extensión cvs, y se le da el nombre, junto con la hora de la captura de
los datos.
1 Cap t_ho ra = t ime . s t r f t i m e ( " .%H.%M" )
Arch ivo = " / home / g a ra bo / Documentos / CIATEQ−M a e s t r i a / Datos . S e n s o r e s / Datos " +
Cap t_ho ra + " . csv "
3 t e x t _ f i l e = open ( Archivo , " wt " ) # a b r e e l a r c h i v o como t e x t o wt , a r c h i v o
como b i t wb
n = 0
5 d a t e = t ime . s t r f t i m e ( " %d , %−m , %Y , " )
ho ra = t ime . s t r f t i m e ( " %H , " )
7 minu tos = t ime . s t r f t i m e ( " %M , " )
p r i n t ( " Esperando e l momento p e r f e c t o " )
9 minu tos = t ime . s t r f t i m e ( " %M , " )
seg = t i me . s t r f t i m e ( " %S , " )
11 s e c = t im e . s t r f t i m e ( " %s , " )
d a t o = d a t e + hora + minu tos + seg + " \ n "
13 t e x t _ f i l e . w r i t e ( d a t o )
d a t o = " x "+" , "+" y "+" , "+" z \ n "
15 t e x t _ f i l e . w r i t e ( d a t o )
Dentro de la estructura del envío de los datos del sistema embebido, se envía una “I” como
instrucción de inicio de captura de los nuevos datos, y se recibirán primero los datos del valor
X, después los datos del valor Y y por ultimo los datos del valor Z.
1 w h i l e 1 :
i f s e r . i n W a i t i n g ( ) :
87
3 x = s e r . r e a d ( )
y = x . i s d i g i t ( )
5 i f y == F a l s e :
i f x == " I " :
7 d a t o = " \ n " ;
n = n + 1
9 # e l i f x == "=" :
# d a t o = " , "
11 # e l i f x == " , " :
# d a t o = " " + x + " "
13 e l s e :
p r i n t ( x )
15 d a t o = x
e l s e :
17 d a t o = x
p r i n t ( x )
19 t e x t _ f i l e . w r i t e ( d a t o )
p r i n t ( " g rabando d a t o " , n )
21 i f n == 5000 :
b r e a k
23 t e x t _ f i l e . f l u s h ( )
Y finalmente cerramos la comunicación con la USB.
t e x t _ f i l e . c l o s e ( )
2 s e r . c l o s e ( )
88 APÉNDICE C. PYTHON
Apéndice D
Octave/Matlab
Los archivos enviados son datos burdos, por lo que debemos realizar el análisis de ellos
empleando un software especializado. Nosotros empleamos el Octave, por ser GNU y venir en
forma nativa en Linux, sin embargo, el código funciona de igual manera con Matlab. En caso
de usar el código en Windows, se debe cambiar la dirección por la correspondiente.
Lo primero que debemos hace es leer los datos a analizar. Guardamos la dirección en va-
riables. Lo hacemos de esta manera porque cuando se trabaja los datos en forma manual, es
mas fácil jalar la dirección de una variable. Así, aunque tengamos el script, para los análisis
en detalle, podemos meter los comandos desde la terminal. A continuación se ponen algunos
de las varables empleadas en el script. Cabe destacar las variables se almacenan en memoria,
entre mas grande sea el archivo o mas variables se empleen, mas recursos de la computadora
requerirá y se hará lenta, se debe tener cuidado con esto.
a r c h i v o _ s e n t a d o = ’ ~ / Datos . S e n s o r e s / Datos . 0 9 . 2 2 . s e n t a d o . csv ’ ;
2 a r c h i v o _ c a e _ s e n t a d o = ’ ~ / Datos . S e n s o r e s / Datos . 0 9 . 3 5 . c a e r s e . c o s t a d o . e s t a n d o .
s e n t a d o . csv ’ ;
a r c h i v o _ c a m i n a = ’ ~ / Datos . S e n s o r e s / Datos . 0 9 . 3 3 . Caminado . c o r t o . c sv ’ ;
4 a r c h i v o _ s e n t a r s e = ’ ~ / Datos . S e n s o r e s / Datos . 0 9 . 3 4 . s e n t a r s e . c sv ’ ;
a r c h i v o _ c a m i n a _ y _ c a e = ’ ~ / Datos . S e n s o r e s / Datos . 1 7 . 0 6 _camina_y_cae . csv ’ ;
6 a r c h i v o _ c a m i n a _ y _ c a e 2 = ’ ~ / Datos . S e n s o r e s / Datos . 1 7 . 1 0 _camina_y_cae_2 . csv ’ ;
. . . . ( agregamos t o d a s l a s d i r e c c i o n e s de l o s a r c h i v o s g e n e r a d o s y l o s
almacenamos en v a r i a b l e s )
89
90 APÉNDICE D. OCTAVE/MATLAB
Después de tener las direcciones en variables, realizamos la lectura de los datos capturados
con el script de python (sección C) y almacenamos estos datos en otra variable.
1 Acos tado = c s v r e a d ( Arch ivo_Acos tado ) ;
Agacharse = c s v r e a d ( Arch ivo_Agacha r se ) ;
3 B a j a r _ E s c a l e r a s = c s v r e a d ( A r c h i v o _ B a j a n d o _ E s c a l e r a s ) ;
C ae r s e = c s v r e a d ( A r c h i v o _ C a e r s e ) ;
5 Caminar= c s v r e a d ( Archivo_Caminar ) ;
S a l t a r = c s v r e a d ( A r c h i v o _ S a l t a r ) ;
7 S e n t a r s e = c s v r e a d ( A r c h i v o _ S e n t a r s e ) ;
S u b i r _ E s c a l e r a s = c s v r e a d ( A r c h i v o _ S u b i r _ E s c a l e r a s ) ;
Como el archivo es un archivo csv, la variable creada es una matriz, en ese caso de 3 (ejes
x, y, y z) x 5000 (que son el total de datos capturados)
Una vez anexados los archivos que se van a analizar, empezamos a trabajar uno por uno con
un ciclo for, donde lenght lee el total de los filas generando un ciclo del tamaño de la matriz.
Leemos cada fila y columna, obtenemos el valor absoluto y lo almacenamos en otra columna
de la misma variable.
f o r x =1: l e n g t h ( Acos tado ( : , 1 ) )
2 % A( x ) = abs ( s q r t (V( x ) ) ;
Acos tado ( x , 4 ) = abs ( Acos tado ( x , 1 ) ) ;
4 end
f o r x =1: l e n g t h ( Acos tado ( : , 1 ) )
6 % A( x ) = abs ( s q r t (V( x ) ) ;
Acos tado ( x , 5 ) = abs ( Acos tado ( x , 2 ) ) ;
8 end
f o r x =1: l e n g t h ( Acos tado ( : , 1 ) )
10 % A( x ) = abs ( s q r t (V( x ) ) ;
Acos tado_1 ( x , 6 ) = abs ( Acos tado ( x , 3 ) ) ;
12 end
Tomamos cada elemento del vector los sumamos y sacamos su raíz cuadrada para obtener
el factor s (ver ecuación 3.33.)
91
1 %%Obtene r e l c u a d r a d o de cada e l e m e n t o d e l v e c t o r y sumar lo y o b t e n e r
%%l a r a i z c u a d r a d a
3 Acos tado ( : , 7 ) = Acos tado ( : , 4 ) + Acos tado ( : , 5 ) + Acos tado ( : , 6 ) ;
f o r x =1: l e n g t h ( Acos tado ( : , 7 ) )
5 % A( x ) = s q r t (V( x ) ) ;
Acos tado ( x , 7 ) =( Acos tado ( x , 7 ) ^ 0 . 5 ) ;
7 end
Y finalmente, graficamos cada uno de los datos.
s u b p l o t ( 4 , 2 , 1 )
2 p l o t ( Acos tado ( : , 1 ) ) ;
t i t l e ( ’ x ’ ) ;
4 s u b p l o t ( 4 , 2 , 3 )
p l o t ( Acos tado ( : , 2 ) )
6 t i t l e ( ’ y ’ )
s u b p l o t ( 4 , 2 , 5 )
8 p l o t ( Acos tado ( : , 3 ) )
t i t l e ( ’ z ’ )
10 s u b p l o t ( 4 , 2 , 2 )
p l o t ( Acos tado ( : , 4 ) ) ;
12 t i t l e ( ’ Abs X’ ) ;
s u b p l o t ( 4 , 2 , 4 )
14 p l o t ( Acos tado ( : , 5 ) )
t i t l e ( ’ Abs Y’ )
16 s u b p l o t ( 4 , 2 , 6 )
p l o t ( Acos tado ( : , 6 ) )
18 t i t l e ( ’ Abs Z ’ )
s u b p l o t ( 4 , 1 , 4 )
20 p l o t ( Acos tado ( : , 7 ) )
t i t l e ( ’ F a c t o r S ’ )
22 s a v e a s ( gcf , ’ Acos tado . j p g ’ )
max ( Acos tado ( : , 7 ) )
24 min ( Acos tado ( : , 7 ) )
mean ( Acos tado ( : , 7 ) )
92 APÉNDICE D. OCTAVE/MATLAB
De esta manera obtenemos la gráfica de cada uno de las lecturas de los ejes (lado izquierdo),
el valor absoluto de cada eje (lado derecho) y en la parte inferior el factor s. Las gráficas de los
datos capturados se localizan en el apéndice A.
Con los datos máximos (max), mínimos (min) y promedio (mean) se realiza una gráfica de
barras con la que podemos ver el rango de su zona de trabajo para cada actividad
Figura D.1: Máximos, mínimos y promedio de los datos.
El grueso de estos datos se pinto de color gris, y el promedio se puso un punto negro. La
barra de color azul corresponde a la actividad de saltar, teniendo un rango en los datos muy
amplia. La siguiente barra corresponde a la caída, la naranja es a bajar la escaleras, la amplitud
de esta barra es porque en algunas muestras el usuario bajo las escaleras con mucha energía.
La barra rosa es por subir las escaleras, la azul clarito corresponden a sentarse y la morada a
acostarse, estas dos tienen los máximos y mínimos muy parecidos porque de la misma manera,
el usuario cuando se acostó en algunas muestras, se dejo tumbar. La barra de color purpura
corresponde a agacharse y la de color verde claro a caminar.
Bibliografía
[1] OMS. WHO Global Report on Falls Prevention in Older Age. World Health Organization,
France, 2007, ISBN 978-92-4-156353-6.
[2] Nyan, M.; Tay, F. E.; Tan, A.; et al. Distinguishing fall activities from normal activities by
angular rate characteristics and high-speed camera characterization. Medical engineering
& physics, volume 28, no. 8, 2006: pp. 842–849.
[3] Blasco Marín, R.; Casas, R.; Álvaro Marco; et al. Fall Detector Based on Neural Networks.
In Proceedings of the First International Conference on Biomedical Electronics and De-
vices, BIOSIGNALS 2008, Funchal, Madeira, Portugal, January 28-31, 2008, Volume 2,
edited by P. Encarnação; A. Veloso, INSTICC - Institute for Systems and Technologies of
Information, Control and Communication, 2008, pp. 540–545.
[4] Charif, H. N.; McKenna, S. J. Activity summarisation and fall detection in a supportive
home environment. In Proceedings of the 17th International Conference on Pattern Re-
cognition, 2004. ICPR 2004., volume 4, Aug 2004, ISSN 1051-4651, pp. 323–326 Vol.4,
doi:10.1109/ICPR.2004.1333768.
[5] Alwan, M.; Rajendran, P. J.; Kell, S.; et al. A Smart and Passive Floor-Vibration Based Fall
Detector for Elderly. In 2006 2nd International Conference on Information Communica-
tion Technologies, volume 1, 2006, pp. 1003–1007, doi:10.1109/ICTTA.2006.1684511.
[6] Tolkiehn, M.; Atallah, L.; Lo, B.; et al. Direction sensitive fall detection using a triaxial
accelerometer and a barometric pressure sensor. In 2011 Annual International Conference
of the IEEE Engineering in Medicine and Biology Society, Aug 2011, ISSN 1094-687X,
pp. 369–372, doi:10.1109/IEMBS.2011.6090120.
93
94 BIBLIOGRAFÍA
[7] Kazi, S. B.; Sikander, S.; Yousafzai, S.; et al. Fall detection using single tri-axial accele-
rometer. In ASEE 2014 Zone I Conference, edited by A. 2014, apr 2014, pp. 5–21.
[8] Wang, C. C.; Chiang, C. Y.; Lin, P. Y.; et al. Development of a Fall Detecting Sys-
tem for the Elderly Residents. In 2008 2nd International Conference on Bioinforma-
tics and Biomedical Engineering, May 2008, ISSN 2151-7614, pp. 1359–1362, doi:
10.1109/ICBBE.2008.669.
[9] Bourke, A.; O’Donovan, K.; ÓLaighin, G. The identification of vertical velocity profiles
using an inertial sensor to investigate pre-impact detection of falls. Medical Engineering
& Physics, volume 30, no. 7, 2008: pp. 937 – 946, ISSN 1350-4533, doi:http://dx.doi.org/
10.1016/j.medengphy.2007.12.003. Available from: http://www.sciencedirect.
com/science/article/pii/S1350453307002081
[10] Chen, J.; Kwong, K.; Chang, D.; et al. Wearable sensors for reliable fall detection. In
Engineering in Medicine and Biology Society, 2005, pp. 3551–3554.
[11] Bourke, A.; Lyons, G. A threshold-based fall-detection algorithm using a bi-
axial gyroscope sensor. Medical Engineering & Physics, volume 30, no. 1, 2008:
pp. 84 – 90, ISSN 1350-4533, doi:http://dx.doi.org/10.1016/j.medengphy.2006.12.
001. Available from: http://www.sciencedirect.com/science/article/
pii/S1350453306002657
[12] Ruelas González, M. G.; Salgado de Snyder, V. N. Lesiones accidentales en adultos ma-
yores: un reto para los sistemas de salud. Salud Pública de México, volume 50, 12 2008:
pp. 463 – 471, ISSN 0036-3634.
[13] Weitzenfeld, A. Ingeniería de software orientada a objetos con UML, java e internet.
Thomson, 2005, ISBN 970-686-190-4.
[14] Rumbaugh, J.; Jacobson, I.; Booch, G. El lenguaje unificado de modelado manual de
referencia. Pearson educacion S. A., 2000, ISBN 84-7829-037-0.
[15] Bentley, W. Análisis de sistemas: diseño y métodos. Mc Graw Hill, 7th edition, 2008,
ISBN 978-970-10-6614-0.
BIBLIOGRAFÍA 95
[16] Mancilla s., R. Manual de prevención de caídas en el adulto mayor. 2007.
[17] González, G.; Marín, P. P.; Pereira, G. Características de las caídas en el adulto mayor que
vive en la comunidad. Revista médica de Chile, volume 129, no. 9, 2001: pp. 1021–1030.
[18] Bouche, F. J. Física para estudiantes de ciencias e ingeniería, volume 1. McGraw Hill,
cuarta edition, 1988, ISBN 968-422-297-1.
[19] Mathie, M. J.; Coster, A. C. F.; Lovell, N. H.; et al. Accelerometry: providing an integra-
ted, practical method for long-term, ambulatory monitoring of human movement. Physio-
logical Measurement, volume 25, no. 2, 2004: p. R1, doi:10.1088/0967-3334/25/2/R01.
Available from: http://stacks.iop.org/0967-3334/25/i=2/a=R01
[20] Sun, M.; Hill, J. A method for measuring mechanical work and work efficiency during
human activities. Journal of biomechanics, volume 26, no. 3, 1993: pp. 229–241.
[21] LeMoyne, R.; Mastroianni, T.; Grundfest, W. Wireless accelerometer configuration for
monitoring Parkinson’s disease hand tremor, Advances in Parkinson’s Disease 2 (2): 62-
67. 2013.
[22] Kangas, M.; Vikman, I.; Wiklander, J.; et al. Sensitivity and specificity of fall de-
tection in people aged 40 years and over. Gait & Posture, volume 29, no. 4,
2009: pp. 571 – 574, ISSN 0966-6362, doi:http://dx.doi.org/10.1016/j.gaitpost.2008.12.
008. Available from: http://www.sciencedirect.com/science/article/
pii/S0966636208003950
[23] Bianchi, F.; Redmond, S. J.; Narayanan, M. R.; et al. Barometric Pressure and Triaxial
Accelerometry-Based Falls Event Detection. IEEE Transactions on Neural Systems and
Rehabilitation Engineering, volume 18, no. 6, Dec 2010: pp. 619–627, ISSN 1534-4320,
doi:10.1109/TNSRE.2010.2070807.
[24] Tamura, T.; Yoshimura, T.; Sekine, M.; et al. A wearable airbag to prevent fall injuries.
IEEE Transactions on Information Technology in Biomedicine, volume 13, no. 6, 2009:
pp. 910–914.
96 BIBLIOGRAFÍA
[25] Narayanan, M. R.; Lord, S. R.; Budge, M. M.; et al. Falls management: detection and
prevention, using a waist-mounted triaxial accelerometer. In Engineering in Medicine and
Biology Society, 2007. EMBS 2007. 29th Annual International Conference of the IEEE,
IEEE, aug 2007, ISSN 1094-687X, pp. 4037 – 4040, doi:10.1109/IEMBS.2007.4353219.
[26] Luo, S.; Hu, Q. A dynamic motion pattern analysis approach to fall detection. In Biome-
dical Circuits and Systems, 2004 IEEE International Workshop on, IEEE, 2004, pp. 1–5.
[27] Ghasemzadeh, H.; Jafari, R.; Prabhakaran, B. A body sensor network with electromyo-
gram and inertial sensors: multimodal interpretation of muscular activities. IEEE transac-
tions on information technology in biomedicine, volume 14, no. 2, 2010: pp. 198–206.
[28] Kangas, M.; Konttila, A.; Lindgren, P.; et al. Comparison of low-complexity fall detec-
tion algorithms for body attached accelerometers. Gait & Posture, volume 28, no. 2,
2008: pp. 285 – 291, ISSN 0966-6362, doi:http://dx.doi.org/10.1016/j.gaitpost.2008.01.
003. Available from: //www.sciencedirect.com/science/article/pii/
S096663620800026X
[29] Vitali, A. 6-point tumble sensor calibration. STMicroelectronics, volume 1,
no. 1, 2015: pp. 1–6. Available from: http://www.st.com/content/
ccc/resource/technical/document/design_tip/group0/28/fa/
7d/ed/6a/41/4f/c1/DM00253745/files/DM00253745.pdf/jcr:
content/translations/en.DM00253745.pdf
[30] Gietzelt, M.; Wolf, K.-H.; Marschollek, M.; et al. Performance comparison of accelerome-
ter calibration algorithms based on 3D-ellipsoid fitting methods. Computer methods and
programs in biomedicine, volume 111, no. 1, 2013: pp. 62–71.
[31] Clifford, M. Detecting Freefall with Low-G Accelerometers. Freescale Semiconductor,
Inc.,, volume 1, no. 1, Nov. 2006: pp. 1 – 8. Available from: www.nxp.com/files/
sensors/doc/app_note/AN3151.pdf
[32] Russell, S.; Norvig, P. Inteligencia artificial. Un enfoque moderno. Prentice Hall, third
edition, 2007, ISBN 968-880-682-x.
BIBLIOGRAFÍA 97
[33] Mazidi, M. A.; Chen, S.; Naimi, S.; et al. Freescale ARM Cortex-M Embedded Program-
ming Using C Language, volume 1. MControllers, 2014.
Top Related