Sensor de pulso con música – Grupo 13

1 – Introducción

  1. Descripción del proyecto y su importancia

Se propone un dispositivo que utiliza la medición del pulso como indicador de la actividad física y emocional del usuario. En caso de detectar un pulso en un rango normal (x – y), el dispositivo emitirá una melodía relajante con el objetivo de reducir la frecuencia cardíaca hasta que deje de sonar al alcanzar las pulsaciones características del sueño (x – y). Si, por otro lado, el pulso es muy alto y se considera peligroso para la salud del usuario (x – y), el dispositivo emitirá una alarma sonora y visual para notificar el peligro. Este instrumento tiene como objetivo fomentar la relajación y el bienestar de las personas a través del monitoreo y control de su actividad cardíaca en tiempo real.

  1. Objetivos del proyecto

A continuación, se presentan algunos posibles objetivos para el aparato en sí que se describe en la pregunta inicial:

  1. Proporcionar un medio efectivo para medir la frecuencia cardíaca de un usuario de manera no invasiva y en tiempo real.
  2. Permitir al usuario monitorear su frecuencia cardíaca en cualquier momento y en cualquier lugar, lo que puede ayudar a identificar patrones y tendencias a lo largo del tiempo.
  3. Ayudar al usuario a mejorar su salud cardiovascular al proporcionar retroalimentación sobre su frecuencia cardíaca y alentar prácticas de respiración y relajación.
  4. Detectar arritmias y otros trastornos cardíacos en una etapa temprana, lo que puede ayudar al usuario a buscar atención médica a tiempo.
  5. Notificar al usuario si su frecuencia cardíaca supera ciertos niveles preestablecidos que pueden ser peligrosos para la salud.
  6. Ser portátil, fácil de usar y cómodo para el usuario, lo que permite una medición continua y no intrusiva de la frecuencia cardíaca.
  7. Proporcionar datos precisos y confiables para ayudar al usuario a tomar decisiones informadas sobre su salud cardiovascular.
  8. Ser asequible y accesible para una amplia gama de usuarios.
  9. Ser compatible con otros dispositivos y aplicaciones para que el usuario pueda integrar fácilmente los datos de frecuencia cardíaca en su rutina diaria.
  10. Estar diseñado y fabricado con materiales seguros y duraderos para garantizar la seguridad y la calidad del producto.

2 – Implementación

  1. Descripción detallada del diseño y la implementación del proyecto
    1. Descripción detallada del diseño

El sistema de sensor de frecuencia cardíaca desarrollado es un dispositivo portátil que utiliza un sensor de pulso para medir la frecuencia cardíaca de un usuario. La señal del sensor es procesada por un microcontrolador Arduino, que controla una pantalla LCD y tres LEDs para indicar el nivel de la frecuencia cardíaca. Además, se incluye un buzzer que emite una alarma sonora si la frecuencia cardíaca supera un umbral preestablecido. 

El dispositivo está diseñado para ser fácil de usar y transportar, lo que permite a los usuarios monitorear su frecuencia cardíaca en cualquier lugar y en cualquier momento. La pantalla LCD proporciona información en tiempo real sobre la frecuencia cardíaca actual, el nivel de la frecuencia cardíaca y el umbral de la alarma sonora. Los LEDs de diferentes colores indican el nivel de la frecuencia cardíaca, mientras que el buzzer proporciona una alerta audible en caso de una frecuencia cardíaca peligrosamente alta. 

  1. Implementación paso a paso 

El proyecto comenzó con la idea de crear un simple sensor de pulso con una alarma sonora para indicar una frecuencia cardíaca alta. Después de hacer algunas pruebas con el sensor y el código en Arduino, se encontró que era bastante fácil obtener una lectura del pulso y hacer sonar la alarma cuando el pulso estaba por encima de un cierto umbral.

Sin embargo, para mejorar el sistema y hacerlo más útil y atractivo, se decidió añadir una pantalla LCD y algunos LEDs para proporcionar una retroalimentación visual adicional al usuario. La pantalla LCD se utilizó para mostrar la frecuencia cardíaca actual del usuario, mientras que los LEDs se utilizaron para indicar el nivel de la frecuencia cardíaca.

El siguiente paso fue integrar la pantalla LCD y los LEDs en el sistema existente. Esto requirió algunos ajustes en el código para leer y mostrar la frecuencia cardíaca en la pantalla LCD, y para controlar los LEDs en función de la frecuencia cardíaca medida.

Se realizaron varias pruebas y ajustes para asegurarse de que los LEDs y la pantalla LCD funcionaban correctamente y proporcionaban la información necesaria al usuario. Finalmente, se agregó una funcionalidad adicional al sistema: un botón que permitía al usuario ajustar el umbral de frecuencia cardíaca para la alarma sonora.

En resumen, el proyecto comenzó con una idea simple, pero se mejoró y amplió con la adición de una pantalla LCD y LEDs para proporcionar una retroalimentación visual al usuario. El proceso de integración y ajuste tomó tiempo y requería pruebas repetidas y ajustes del código, pero finalmente se logró crear un sistema más completo y útil.

  1. Descripción de los materiales utilizados y su costo

La sección de materiales empleados, se puede subdividir en dos apartados: los procedentes de la caja que nos facilitó la universidad y los que hemos conseguido por nuestra cuenta. 

Dentro del primer grupo, los incluidos en el material de la universidad, encontramos: 

  • Placas (arduino y protoboard): Las placas de circuito impreso se utilizan para diseñar y construir el circuito que controla el instrumento. Las placas son un material aislante que se utiliza para sujetar los componentes electrónicos en su lugar y proporcionar conexiones eléctricas entre los componentes.
  • Resistencias: Las resistencias se utilizan para limitar la corriente en los componentes del circuito, como los LED. Las resistencias se seleccionan según el valor de resistencia necesario para limitar la corriente y proteger los componentes.
  • Cables: Los cables se utilizan para conectar los componentes del circuito entre sí. Los cables se seleccionan según el diámetro y la longitud necesarios para conectar los componentes de forma segura y confiable.
  • Pantalla LCD: La pantalla LCD se utiliza para mostrar información al usuario, como el valor del pulso y las palabras que se desean mostrar. La pantalla LCD puede mostrar caracteres alfanuméricos y gráficos. En nuestro proyecto muestra los valores de pulso leído y un mensaje de “Durmiendo profundamente” cuando el valor de entrada es inferior al umbral seleccionado. 
  • LEDs: Los LED se utilizan para mostrar información al usuario, como indicadores de encendido y estado. Los LED pueden ser de diferentes colores y se conectan a través de resistencias para limitar la corriente.
  • Buzzer: El buzzer se utilizar para proporcionar retroalimentación audible al usuario sobre su frecuencia cardíaca. Si la frecuencia cardíaca del usuario está dentro del rango normal, el buzzer puede emitir una melodía relajante para indicar que todo está bien. Si la frecuencia cardíaca del usuario es demasiado alta, el buzzer puede emitir una alarma sonora para indicar que el usuario debe tomar medidas.

En el segundo grupo, los materiales que hemos adquirido por cuenta propia, son los siguientes:

  • Sensor de pulso: El sensor de pulso se utiliza para medir la frecuencia cardíaca del usuario. El sensor utiliza una luz infrarroja para detectar el flujo sanguíneo en el dedo del usuario y calcular la frecuencia cardíaca.
    Precio: 9€
  • Caja de cartón: La caja de cartón se utiliza para contener todos los componentes del instrumento y protegerlos de daños. La caja de cartón también puede proporcionar una superficie plana para montar la pantalla LCD y los botones
    Precio: 2€
  • Velcro y pegamento: El velcro y el pegamento se utilizan para fijar los componentes en su lugar dentro de la caja de cartón. El pegamento se utiliza para sujetar la placa de Arduino y otros componentes en su lugar, mientras que el velcro también se utiliza para crear la pulsera que sostiene el sensor de pulso, lo que facilita la demostración de nuestro sistema.
    Precio: 5€
  • Pintura: La pintura se utiliza con fines decorativos de cara al diseño final de nuestro proyecto.
    Precio: 2€
  1. Descripción del reparto de tareas entre los miembros del grupo

En cuanto al reparto de tareas para este proyecto, se ha acordado que Santi sea el encargado del desarrollo del código fuente. Por otro lado, Maria y Elisa trabajaron en conjunto con Santi para encargarse de la parte de las conexiones y el hardware.

Además, se ha establecido que Maria y Elisa serán responsables de la redacción de la memoria del proyecto, así como de la elaboración de la presentación del mismo. También se les ha asignado la tarea de diseñar el proyecto en su totalidad.

En resumen, el equipo de trabajo se ha distribuido de la siguiente manera: Santi en el código fuente y en las conexiones de la parte hardware, y Maria y Elisa en las conexiones de la parte hardware, la redacción de la memoria, la elaboración de la presentación y el diseño general del proyecto. Se ha acordado esta distribución de tareas para una gestión eficiente y efectiva del proyecto, teniendo en cuenta las fortalezas y debilidades de cada miembro del equipo.

3 – Problemas y soluciones

PROBLEMASSOLUCIONES
Librerías: a la hora de incorporar elementos como el sensor de pulso o la pantalla LCD nos dimos cuenta de que no teníamos incluidas en arduino las librerías que necesitábamos para su configuración Buscamos en internet como solucionarlo e importamos las librerías correspondientes:LiquidCrystal.h PulseSensorPlayground.h
Sensor que funcione: al pensar la idea del proyecto pensamos en descartarlo ya que no encontrábamos sensores de pulso fiablesTras una larga investigación en internet, gracias a las reseñas de otros usuarios encontramos un sensor de pulso que parecía funcionar
Cuando el sensor llegó las patas metálicas venían separadas y no podíamos incorporarlo al circuitoDecidimos soldar las dos piezas para el correcto funcionamiento de nuestro sensor
Tras creer que teníamos el proyecto terminado, en el periodo de pruebas nos dimos cuenta de que el cable que conecta la placa al ordenador estaba defectuoso y en algunas ocasiones no funcionaba.Decidimos hablar con los compañeros de  otros grupos que nos prestaron uno
En la primera versión del proyecto, resultaba muy sencillo, ya que solo contemplamos la opción de que emitiera un sonido dependiendo del pulso leído Decidimos incorporar más funcionalidades para complementar el objetivo fundamental:leds de distintos colores pantalla que muestre los valores de pulso leídos por si es necesario comunicarlo en el centro de salud
Tras mucho buscar melodías en arduino en internet, no encontramos ninguna que nos terminara de convencer de cara a los objetivos del proyectoInvestigamos y finalmente buscamos las notas y tiempos de las canciones que queríamos y las codificamos manualmente
A la hora de reproducir las melodías, nos dimos cuenta de que el sonido podría ser de mejor calidad Por falta de tiempo y de presupuesto, no pudimos obtener un altavoz mejor, que era la idea principal 
El sensor de pulso no captaba bien los valores normativosModificamos el umbral en nuestro código tras varias pruebas con nuestro proyecto para intentar conseguir cierta coherencia con los valores estándar 

4 – Código

  1. Descripción del código utilizado en el proyecto

* Acudir al anexo para contemplar todo el código fuente comentado, ya que en este apartado se explicarán resumidas las principales funcionalidades 

En nuestro código encontramos varios apartados: 

  • Apartado de declaraciones, caracterizado por comenzar con #define, se encuentra subdividido en 3 apartados:
    • Declaración de las librerías necesarias para incorporar elementos específicos y para el control de las interrupciones
    • Declaración de las notas musicales con sus frecuencias
    • Declaración de las figuras musicales y sus duraciones
  • Apartado de variables, se definen las variables y se declara a que pin de la placa de arduino irán conectados 
  • Declaración de melodías y duraciones de cada nota empleando las notas y figuras declaradas al inicio del programa 
  • Por último encontramos 2 funciones:
    • setup: función de inicialización en Arduino que se ejecuta solo una vez al inicio del programa y se utiliza para configurar los dispositivos y establecer los parámetros iniciales del sistema. En el código proporcionado, se configura la comunicación serie, se establece un pulsómetro, se configuran los pines de entrada y salida, se establece la pantalla LCD y se verifica si todo ha sido configurado correctamente. 
    • loop: comprueba si ha detectado un pulso, calcula las pulsaciones por minuto y realiza una acción en función del rango en el que se encuentra el usuario. Si está en un rango normal, se reproduce una melodía y se enciende un LED verde. Si está por debajo de la media, se muestra un mensaje y se detiene la melodía. Si está por encima de la media, se muestra una alerta, se activa una alarma y se enciende un LED rojo. Después de cada acción, hay un pequeño delay y la función termina con noTone(buzzerPin) y un delay de 20 ms antes de comenzar de nuevo.
  1. Ejemplos de código para ilustrar su uso

* Los ejemplos de uso se incluyen en formato video adjuntados a esta memoria

5 – Resultados, conclusiones y trabajos futuros

  1. Resultados y conclusiones del proyecto

Los resultados del proyecto muestran que el sistema de sensor de frecuencia cardíaca desarrollado es una herramienta efectiva para medir y monitorear la frecuencia cardíaca de un usuario de manera sencilla y portátil. La precisión de la medición podría ser mejor si se tratara de algún otro tipo de sensor de los existentes en el mercado. 

El sistema cumple con los objetivos propuestos en cuanto a la medición y visualización de la frecuencia cardíaca, además de incorporar una alarma sonora y visual para indicar situaciones de peligro. Además, la adición de los LEDs y la pantalla LCD mejoran la experiencia del usuario y facilitan la interpretación de los datos.

En cuanto a las conclusiones, se puede afirmar que el sistema de sensor de frecuencia cardíaca es una herramienta útil y práctica para el monitoreo de la salud cardiovascular de las personas. Aunque el dispositivo no debe sustituir a un profesional médico, puede ser utilizado por los usuarios como una herramienta complementaria para monitorear su salud. El proyecto también demuestra la utilidad y versatilidad de las plataformas de prototipado rápido, como Arduino, para el desarrollo de dispositivos de monitoreo y medición de bajo costo.

  1. Propuestas para trabajos futuros

Si bien es cierto que mencionamos la obtención de un altavoz de mayor calidad como una posible mejora en el apartado de problemas encontrados, no consideramos que sea la principal. Tras una reflexión profunda, hemos concluido que nuestro proyecto tiene potencial para desarrollarse aún más mediante la incorporación de tecnologías precisas y de menor tamaño. Nuestra visión para el futuro es que todo el circuito pueda integrarse en una pulsera inteligente que permita a cualquier persona controlar sus ciclos de sueño y, además, cuente con una nueva funcionalidad que registre problemas cardiovasculares, como la arritmia, en una base de datos específica en colaboración con el sistema sanitario nacional. Con esto, creemos que nuestro proyecto puede tener un impacto positivo en la salud de las personas y contribuir a la mejora de la atención médica en nuestro país.

6 – Anexos

  1. Imágenes, diagramas y tablas relevantes
  1. Código fuente completo

// Configura interrupciones para el cálculo de las BPM

#define USE_ARDUINO_INTERRUPTS true    

// Incluimos la librería del pulsómetro

#include <PulseSensorPlayground.h>     

// Incluimos la librería de la LCD

#include <LiquidCrystal.h>             

// Definimos las notas

#define NOTE_F4 349

#define NOTE_G4 392

#define NOTE_A4 440

#define NOTE_C5 523

#define NOTE_E5 659

#define NOTE_F5 698

#define NOTE_C6 1047

#define NOTE_E6 1319

// Definir las duraciones para las notas

#define H  500   // Negra

#define Q  250   // Corchea

#define E  125   // Semicorchea

#define S  400   // Semifusa

#define SF 300   // Semifusa con puntillo

#define F  200   // Fusa

#define HF 150   // Fusa con puntillo

//  Variables

PulseSensorPlayground pulseSensor;  // Variable pulsómetro

int Threshold = 550;        // Determina que señal sirve y cual no 

const int buzzerPin = 8;    // Puerto digital del buzzer 8 

const int ledPinR = 13;     // Puerto digital del led rojo 13

const int ledPinV = 12;     // Puerto digital del led verde 12

const int ledPinA = 11;     // Puerto digital del led azul 11

const int pulsePin = 0;     // Puerto digital del pulsómetro A0

LiquidCrystal lcd(2,3,4,5,6,7); // Variable LCD 

int melody[] = {  // Melodía «relajante»

  NOTE_A4, NOTE_A4, NOTE_A4, NOTE_F4, NOTE_C5, NOTE_A4, NOTE_F4, NOTE_C5, NOTE_A4, NOTE_E5, NOTE_E5, NOTE_E5, NOTE_F5, NOTE_C5, NOTE_G4, NOTE_F4, NOTE_C5, NOTE_A4

};

float duration[] = {  //Duración de las notas de la melodía

  H, Q, E, H, Q, E, H, Q, E, H, Q, E, H, Q, E, H, Q, E

};

void setup() {   

// For Serial Monitor

  Serial.begin(9600);         

// Configuramos el pulsómetro 

  pulseSensor.analogInput(pulsePin);   

// Cada vez que el pulsómetro se active se activa el pin 9

  pulseSensor.blinkOnPulse(9);       

  pulseSensor.setThreshold(Threshold);   

  // Comprobar si ha salido todo bien con el pulsómetro

  if (pulseSensor.begin()) {

    Serial.println(«We created a pulseSensor Object !»);  

  }

  // Activamos los pines de entrada y de salida

  pinMode(buzzerPin, OUTPUT);

  pinMode(ledPinR, OUTPUT);

  pinMode(ledPinV, OUTPUT);

  pinMode(ledPinA, OUTPUT);

// Ponemos que la LCD sea de 16 x 2

  lcd.begin(16,2);  

}

void loop() {

  lcd.setCursor(0,0);

  lcd.print(«Buscando pulso…»);

// Bucle que comprueba cuando coge el pulso

if (pulseSensor.sawStartOfBeat()) {           

//Saca las pulsaciones por minuto 

    int myBPM = pulseSensor.getBeatsPerMinute();  

    Serial.println(myBPM);

// Imprime las pulsaciones por minuto por la LCD

    lcd.clear();                    

    lcd.setCursor(1,0);

    lcd.print(«BPM= «);

    lcd.print(myBPM);

    lcd.print(»   «);

// Delay de 2 s para que de tiempo a leerlo

    delay(2000);  

// Si está en pulsaciones normales

    if(myBPM > 100 && myBPM < 150){ 

      for (int i = 0; i < sizeof(melody) / sizeof(melody[0]); i++) {

        digitalWrite(ledPinV,HIGH);

        tone(buzzerPin, melody[i], duration[i]);

        digitalWrite(ledPinV,LOW);

// Agregar un pequeño descanso entre notas

        delay(duration[i] * 1.30); 

      }

// Si está en pulsaciones por debajo de la media

    } else if(myBPM <= 100)  {   

      lcd.clear();

      lcd.setCursor(0,0);

      lcd.print(«Durmiendo»);

      lcd.setCursor(0,1);

      lcd.print(«profundo»);

      Serial.println(«Acabo de entrar en sueño profundo»);

      noTone(8);

// Si está en pulsaciones por encima de la media

    } else {      

      lcd.clear();

      lcd.setCursor(0, 0);

      lcd.print(«Llamar a prime»);

      lcd.setCursor(0,1);

      lcd.print(«ros auxilios»);

// Alarma

      for (int i= 0; i <4; i++) {  

        digitalWrite(ledPinR,HIGH);

        tone(buzzerPin, NOTE_C6, Q);

        delay(Q);

        digitalWrite(ledPinR,LOW);

        digitalWrite(ledPinA, HIGH);

        tone(buzzerPin, NOTE_E6, Q);

        delay(Q);

        digitalWrite(ledPinA,LOW);

      }

    }  

    delay(2000);

    lcd.clear();      

  }

  noTone(buzzerPin);

  delay(20);                    

}

También te podría gustar...

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *