Tabla de contenido:

Cómo mostrar la frecuencia cardíaca en la pantalla LCD STONE con Ar: 31 pasos
Cómo mostrar la frecuencia cardíaca en la pantalla LCD STONE con Ar: 31 pasos

Video: Cómo mostrar la frecuencia cardíaca en la pantalla LCD STONE con Ar: 31 pasos

Video: Cómo mostrar la frecuencia cardíaca en la pantalla LCD STONE con Ar: 31 pasos
Video: LW31 AGPTEK Smart Watch IP68: Things To Know Before Buy // For Android and iPhone 2024, Noviembre
Anonim
Cómo mostrar la frecuencia cardíaca en la pantalla LCD STONE con Ar
Cómo mostrar la frecuencia cardíaca en la pantalla LCD STONE con Ar

breve introducción

Hace algún tiempo, encontré un módulo de sensor de frecuencia cardíaca MAX30100 en compras en línea. Este módulo puede recopilar datos de oxígeno en sangre y frecuencia cardíaca de los usuarios, lo que también es simple y conveniente de usar. Según los datos, encontré que hay bibliotecas de MAX30100 en los archivos de la biblioteca de Arduino. Es decir, si utilizo la comunicación entre Arduino y MAX30100, puedo llamar directamente a los archivos de la biblioteca Arduino sin tener que volver a escribir los archivos del controlador. Esto es bueno, así que compré el módulo MAX30100.

Paso 1: Decidí usar Arduino para verificar la función de recolección de oxígeno en sangre y frecuencia cardíaca del MAX30100

Decidí usar Arduino para verificar la función de recolección de oxígeno en sangre y frecuencia cardíaca del MAX30100
Decidí usar Arduino para verificar la función de recolección de oxígeno en sangre y frecuencia cardíaca del MAX30100

Nota: este módulo por defecto solo con comunicaciones MCU de nivel 3.3 V, porque por defecto usa la resistencia de extracción del pin IIC de 4.7 K a 1.8 V, por lo que no hay comunicación con el Arduino por defecto, si desea comunicarse con el Arduino y necesita dos 4.7 K de la resistencia de pull-up del pin IIC conectado al pin VIN, estos contenidos se introducirán en la parte posterior del capítulo.

Paso 2: asignaciones funcionales

Antes de comenzar este proyecto, pensé en algunas características simples:

  • Se recopilaron datos de frecuencia cardíaca y datos de oxígeno en sangre.
  • Los datos de frecuencia cardíaca y oxígeno en sangre se muestran a través de una pantalla LCD

Estas son las únicas dos características, pero si queremos implementarlas, debemos pensar más:

  • ¿Qué MCU maestra se utiliza?
  • ¿Qué tipo de pantalla lcd?

Como mencionamos anteriormente, usamos Arduino para la MCU, pero este es un proyecto de pantalla LCD Arduino, por lo que debemos elegir el módulo de pantalla LCD apropiado. Planeo usar la pantalla LCD con puerto serie. Tengo un visualizador STONE STVI070WT-01 aquí, pero si Arduino necesita comunicarse con él, se necesita MAX3232 para realizar la conversión de nivel. Luego, los materiales electrónicos básicos se determinan de la siguiente manera:

1. Placa de desarrollo Arduino Mini Pro

2. Módulo sensor de frecuencia cardíaca y oxígeno en sangre MAX30100

3. Módulo de pantalla de puerto serie LCD STONE STVI070WT-01

4. Módulo MAX3232

Paso 3: Introducción al hardware

MAX30100

El MAX30100 es una solución integrada de sensor de pulsioximetría y monitor de frecuencia cardíaca. Combina dos LED, un fotodetector, óptica optimizada y procesamiento de señales analógicas de bajo ruido para detectar señales de pulsioximetría y frecuencia cardíaca.

El MAX30100 funciona con fuentes de alimentación de 1,8 V y 3,3 V y se puede apagar mediante software con una corriente de espera insignificante, lo que permite que la fuente de alimentación permanezca conectada en todo momento.

Paso 4: Aplicaciones

● Dispositivos portátiles

● Dispositivos auxiliares de fitness

● Dispositivos de control médico

Paso 5: Beneficios y características

1 、 Oxímetro de pulso completo y sensor de frecuencia cardíaca La solución simplifica el diseño

  • LED integrados, fotosensor y front-end analógico de alto rendimiento
  • Diminuto sistema en paquete de 14 pines mejorado ópticamente de 5,6 mm x 2,8 mm x 1,2 mm

2 、 El funcionamiento con energía ultrabaja aumenta la vida útil de la batería para dispositivos portátiles

  • Frecuencia de muestreo programable y corriente LED para ahorrar energía
  • Corriente de apagado ultrabaja (0,7 µA, típico)

3, la funcionalidad avanzada mejora el rendimiento de la medición

  • La alta SNR proporciona una resistencia robusta a los artefactos de movimiento
  • Cancelación de luz ambiental integrada
  • Capacidad de alta frecuencia de muestreo
  • Capacidad de salida de datos rápida

Paso 6: Principio de detección

Principio de detección
Principio de detección

Simplemente presione su dedo contra el sensor para estimar la saturación de oxígeno del pulso (SpO2) y el pulso (equivalente a los latidos del corazón).

El oxímetro de pulso (oxímetro) es un mini-espectrómetro que UTILIZA los principios de diferentes espectros de absorción de glóbulos rojos para analizar la saturación de oxígeno de la sangre. Este método de medición rápido y en tiempo real también se utiliza ampliamente en muchas referencias clínicas. No presentaré demasiado el MAX30100, porque estos materiales están disponibles en Internet. Los amigos interesados pueden buscar la información de este módulo de prueba de frecuencia cardíaca en Internet y comprender mejor su principio de detección.

Paso 7: STONE STVI070WT-01

PIEDRA STVI070WT-01
PIEDRA STVI070WT-01

Introducción al displayer

En este proyecto, utilizaré STONE STVI070WT-01 para mostrar los datos de frecuencia cardíaca y oxígeno en sangre. El chip del controlador se ha integrado dentro de la pantalla de visualización y hay software para que lo utilicen los usuarios. Los usuarios solo necesitan agregar botones, cuadros de texto y otra lógica a través de las imágenes de la interfaz de usuario diseñadas, y luego generar archivos de configuración y descargarlos en la pantalla para ejecutarlos. La pantalla de STVI070WT-01 se comunica con MCU a través de la señal uart-rs232, lo que significa que necesitamos agregar un chip MAX3232 para convertir la señal RS232 en señal TTL, de modo que podamos comunicarnos con Arduino MCU.

Paso 8: Si no está seguro de cómo usar el MAX3232, consulte las siguientes imágenes:

Si no está seguro de cómo utilizar el MAX3232, consulte las siguientes imágenes
Si no está seguro de cómo utilizar el MAX3232, consulte las siguientes imágenes

Si cree que la conversión de nivel es demasiado problemática, puede elegir otros tipos de visualizadores de STONE, algunos de los cuales pueden emitir directamente la señal uart-ttl.

El sitio web oficial tiene información detallada e introducción:

Paso 9: Si necesita usar tutoriales en video y tutoriales, también puede encontrarlos en el sitio web oficial

Si necesita usar tutoriales en video y tutoriales, también puede encontrarlos en el sitio web oficial
Si necesita usar tutoriales en video y tutoriales, también puede encontrarlos en el sitio web oficial

Paso 10: Pasos de desarrollo

Tres pasos del desarrollo de la pantalla de visualización STONE:

  • Diseñe la lógica de la pantalla y la lógica de los botones con el software STONE TOOL y descargue el archivo de diseño en el módulo de la pantalla.
  • MCU se comunica con el módulo de pantalla LCD STONE a través del puerto serie.
  • Con los datos obtenidos en el paso 2, la MCU realiza otras acciones.

Paso 11: Instalación del software STONE TOOL

Instalación del software STONE TOOL
Instalación del software STONE TOOL

Descargue la última versión del software STONE TOOL (actualmente TOOL2019) del sitio web e instálelo.

Una vez instalado el software, se abrirá la siguiente interfaz:

Haga clic en el botón "Archivo" en la esquina superior izquierda para crear un nuevo proyecto, que discutiremos más adelante.

Paso 12: Arduino

Arduino es una plataforma de prototipo electrónico de código abierto que es fácil de usar y fácil de usar. Incluye la parte de hardware (varias placas de desarrollo que se ajustan a la especificación de Arduino) y la parte de software (Arduino IDE y kits de desarrollo relacionados).

La parte de hardware (o placa de desarrollo) consta de un microcontrolador (MCU), una memoria Flash (Flash) y un conjunto de interfaces de entrada / salida universales (GPIO), que puede considerar como una placa base de microordenador. La parte del software se compone principalmente de Arduino IDE en PC, paquete de soporte de nivel de placa (BSP) relacionado y una rica biblioteca de funciones de terceros. Con Arduino IDE, puede descargar fácilmente el BSP asociado con su placa de desarrollo y las bibliotecas que necesita para escribir sus programas. Arduino es una plataforma de código abierto. Hasta ahora, ha habido muchos modelos y muchos controladores derivados, incluidos Arduino Uno, Arduino Nano, ArduinoYun, etc. Además, el IDE de Arduino ahora no solo es compatible con las placas de desarrollo de la serie Arduino, sino que también agrega soporte para placas de desarrollo populares como como Intel Galileo y NodeMCU al presentar BSP.

Arduino detecta el entorno a través de una variedad de sensores, que controlan luces, motores y otros dispositivos para retroalimentar e influir en el entorno. El microcontrolador de la placa se puede programar con un lenguaje de programación Arduino, compilarse en binarios y grabarse en el microcontrolador. para Arduino se implementa con el lenguaje de programación Arduino (basado en Wiring) y el entorno de desarrollo Arduino (basado en Processing). Los proyectos basados en Arduino pueden contener solo Arduino, así como Arduino y otro software que se ejecuta en PC, y se comunican con cada uno otros (como Flash, Processing, MaxMSP).

Paso 13: entorno de desarrollo

Entorno de desarrollo
Entorno de desarrollo

El entorno de desarrollo de Arduino es el IDE de Arduino, que se puede descargar de Internet.

Inicie sesión en el sitio web oficial de Arduino y descargue el software https://www.arduino.cc/en/Main/Software?setlang=c … Después de instalar el IDE de Arduino, aparecerá la siguiente interfaz cuando abra el software:

El IDE de Arduino crea dos funciones por defecto: la función de configuración y la función de bucle. Hay muchas introducciones de Arduino en Internet. Si no entiende algo, puede ir a Internet para encontrarlo.

Paso 14: Proceso de implementación del proyecto Arduino LCD

Proceso de implementación del proyecto Arduino LCD
Proceso de implementación del proyecto Arduino LCD

conexión de hardware

Para asegurarnos de que el siguiente paso en la escritura de código se desarrolle sin problemas, primero debemos determinar la confiabilidad de la conexión de hardware.

En este proyecto solo se utilizaron cuatro piezas de hardware:

1. Placa de desarrollo Arduino Mini pro

2. Pantalla STONE STVI070WT-01 tft-lcd

3. Sensor de oxígeno en sangre y frecuencia cardíaca MAX30100

4. MAX3232 (rs232-> TTL) La placa de desarrollo Arduino Mini Pro y la pantalla de visualización TFT-LCD STVI070WT-01 están conectadas a través de UART, que requiere conversión de nivel a través de MAX3232, y luego la placa de desarrollo Arduino Mini Pro y el módulo MAX30100 están conectados a través Interfaz IIC. Después de pensar con claridad, podemos dibujar la siguiente imagen de cableado:

Paso 15:

Imagen
Imagen

Asegúrese de que no haya errores en la conexión del hardware y continúe con el siguiente paso.

Paso 16: Diseño de la interfaz de usuario de TFT LCD

Diseño de interfaz de usuario TFT LCD
Diseño de interfaz de usuario TFT LCD

En primer lugar, necesitamos diseñar una imagen de visualización de la interfaz de usuario, que puede ser diseñada por PhotoShop u otras herramientas de diseño de imágenes. Después de diseñar la imagen de visualización de la interfaz de usuario, guarde la imagen en formato JPG.

Abra el software STONE TOOL2019 y cree un nuevo proyecto:

Paso 17: elimine la imagen que se cargó de forma predeterminada en el nuevo proyecto y agregue la imagen de la interfaz de usuario que diseñamos

Elimine la imagen que se cargó de forma predeterminada en el nuevo proyecto y agregue la imagen de la interfaz de usuario que diseñamos
Elimine la imagen que se cargó de forma predeterminada en el nuevo proyecto y agregue la imagen de la interfaz de usuario que diseñamos

Paso 18: agregue el componente de visualización de texto

Agregar el componente de visualización de texto
Agregar el componente de visualización de texto

Agregue el componente de visualización de texto, diseñe el dígito de visualización y el punto decimal, obtenga la ubicación de almacenamiento del componente de visualización de texto en el visualizador.

El efecto es el siguiente:

Paso 19:

Dirección del componente de visualización de texto:

  • Sta de conexión: 0x0008
  • Frecuencia cardíaca: 0x0001

Oxígeno en sangre: 0x0005 El contenido principal de la interfaz de usuario es el siguiente:

  • Estado de conexión
  • Pantalla de frecuencia cardíaca
  • Mostró oxígeno en sangre

Paso 20: Genere el archivo de configuración

Generar archivo de configuración
Generar archivo de configuración

Una vez que se completa el diseño de la interfaz de usuario, el archivo de configuración se puede generar y descargar en la pantalla STVI070WT-01.

Primero, realice el paso 1, luego inserte la unidad flash USB en la computadora y se mostrará el símbolo del disco. Luego haga clic en "Descargar en u-disk" para descargar el archivo de configuración en la unidad flash USB, y luego inserte la unidad flash USB en STVI070WT-01 para completar la actualización.

Paso 21: MAX30100

MAX30100
MAX30100

El MAX30100 se comunica a través de IIC. Su principio de funcionamiento es que el valor ADC de la frecuencia cardíaca se puede obtener a través de la irradiación LED infrarroja. El registro MAX30100 se puede dividir en cinco categorías: registro de estado, FIFO, registro de control, registro de temperatura y registro de ID. Lee el valor de temperatura del chip para corregir la desviación causada por la temperatura. El registro de ID puede leer el número de ID del chip.

MAX30100 está conectado con la placa de desarrollo Arduino Mini Pro a través de la interfaz de comunicación IIC. Debido a que hay archivos de biblioteca MAX30100 listos para usar en el IDE de Arduino, podemos leer los datos de frecuencia cardíaca y oxígeno en sangre sin estudiar los registros de MAX30100. Para aquellos que estén interesados en explorar el registro MAX30100, consulte la hoja de datos MAX30100.

Paso 22: Modifique la resistencia de pull-up MAX30100 IIC

Modificar la resistencia de pull-up MAX30100 IIC
Modificar la resistencia de pull-up MAX30100 IIC

Cabe señalar que la resistencia de pull-up de 4.7k del pin IIC del módulo MAX30100 está conectada a 1.8v, lo cual no es un problema en teoría. Sin embargo, el nivel lógico de comunicación del pin IIC de Arduino es 5V, por lo que no puede comunicarse con Arduino sin cambiar el hardware del módulo MAX30100. La comunicación directa es posible si la MCU es STM32 u otra MCU de nivel lógico 3.3v.

Por lo tanto, es necesario realizar los siguientes cambios:

Retire las tres resistencias de 4.7k marcadas en la imagen con un soldador eléctrico, luego suelde dos resistencias de 4.7k en los pines de SDA y SCL al VIN, para que podamos comunicarnos con Arduino.

Paso 23: Arduino

Arduino
Arduino

Abra el IDE de Arduino y busque los siguientes botones:

Paso 24: Busque "MAX30100" para encontrar dos bibliotecas para MAX30100, luego haga clic en Descargar e instalar

Buscar
Buscar

Paso 25: Después de la instalación, puede encontrar la demostración de MAX30100 en la carpeta de la biblioteca LIB de Arduino:

Después de la instalación, puede encontrar la demostración de MAX30100 en la carpeta LIB Library de Arduino
Después de la instalación, puede encontrar la demostración de MAX30100 en la carpeta LIB Library de Arduino

Paso 26: haga doble clic en el archivo para abrirlo

Haga doble clic en el archivo para abrirlo
Haga doble clic en el archivo para abrirlo

Paso 27: El código completo es el siguiente:

Esta demostración se puede probar directamente. Si la conexión de hardware está bien, puede descargar la compilación del código en la placa de desarrollo Arduibo y ver los datos de MAX30100 en la herramienta de depuración en serie.

El código completo es el siguiente:

/ * Biblioteca de sensores integrados de oximetría / frecuencia cardíaca Arduino-MAX30100 Copyright (C) 2016 OXullo Intersecans Este programa es un software gratuito: puede redistribuirlo y / o modificarlo según los términos de la Licencia Pública General GNU publicada por la Free Software Foundation, ya sea la versión 3 de la Licencia o (a su elección) cualquier versión posterior. Este programa se distribuye con la esperanza de que sea útil, pero SIN NINGUNA GARANTÍA; incluso sin la garantía implícita de COMERCIABILIDAD o APTITUD PARA UN PROPÓSITO PARTICULAR. Consulte la Licencia pública general de GNU para obtener más detalles. Debería haber recibido una copia de la Licencia Pública General GNU junto con este programa. Si no, mira. * / #include #include "MAX30100_PulseOximeter.h" #define REPORTING_PERIOD_MS 1000 // PulseOximeter es la interfaz de nivel superior para el sensor // ofrece: // * informes de detección de latidos // * cálculo de frecuencia cardíaca // * SpO2 (nivel de oxidación) cálculo PulseOxímetro de viruela; uint32_t tsLastReport = 0; // Devolución de llamada (registrada a continuación) disparada cuando se detecta un pulso void onBeatDetected () {Serial.println ("Beat!"); } configuración vacía () {Serial.begin (115200); Serial.print ("Inicializando pulsioxímetro …"); // Inicializar la instancia de PulseOximeter // Las fallas generalmente se deben a un cableado I2C incorrecto, falta de suministro de energía // o chip de destino incorrecto if (! Pox.begin ()) {Serial.println ("FAILED"); por(;;); } else {Serial.println ("ÉXITO"); } // La corriente predeterminada para el LED IR es 50mA y se puede cambiar // descomentando la siguiente línea. Consulte MAX30100_Registers.h para ver todas las // opciones disponibles. // pox.setIRLedCurrent (MAX30100_LED_CURR_7_6MA); // Registrar una devolución de llamada para la detección de latidos pox.setOnBeatDetectedCallback (onBeatDetected); } void loop () {// Asegúrate de llamar a update lo más rápido posible pox.update (); // Descarga asincrónicamente los niveles de oxidación y frecuencia cardíaca al serial // Para ambos, un valor de 0 significa "inválido" if (millis () - tsLastReport> REPORTING_PERIOD_MS) {Serial.print ("Frecuencia cardíaca:"); Serial.print (pox.getHeartRate ()); Serial.print ("bpm / SpO2:"); Serial.print (pox.getSpO2 ()); Serial.println ("%"); tsLastReport = millis (); }}

Paso 28:

Imagen
Imagen

Este código es muy simple, creo que lo puedes entender de un vistazo. Debo decir que la programación modular de Arduino es muy conveniente y ni siquiera necesito entender cómo se implementa el código del controlador de Uart e IIC.

Por supuesto, el código anterior es una demostración oficial, y todavía necesito hacer algunos cambios para mostrar los datos en el visualizador de STONE.

Paso 29: muestra datos en el visualizador STONE a través de Arduino

Primero, necesitamos obtener la dirección del componente que muestra la frecuencia cardíaca y los datos de oxígeno en sangre en el visualizador de STONE:

En mi proyecto, la dirección es la siguiente: Dirección del componente de visualización de frecuencia cardíaca: 0x0001 Dirección del módulo de visualización de oxígeno en sangre: 0x0005 Dirección de estado de conexión del sensor: 0x0008 Si necesita cambiar el contenido de la pantalla en el espacio correspondiente, puede cambiar el contenido de la pantalla enviando datos a la dirección correspondiente de la pantalla de visualización a través del puerto serie de Arduino.

Paso 30: El código modificado es el siguiente:

/ * Biblioteca de sensores integrados de oximetría / frecuencia cardíaca Arduino-MAX30100 Copyright (C) 2016 OXullo Intersecans Este programa es un software gratuito: puede redistribuirlo y / o modificarlo según los términos de la Licencia Pública General GNU publicada por la Free Software Foundation, ya sea la versión 3 de la Licencia o (a su elección) cualquier versión posterior. Este programa se distribuye con la esperanza de que sea útil, pero SIN NINGUNA GARANTÍA; incluso sin la garantía implícita de COMERCIABILIDAD o APTITUD PARA UN PROPÓSITO PARTICULAR. Consulte la Licencia pública general GNU para obtener más detalles. Debería haber recibido una copia de la Licencia Pública General GNU junto con este programa. Si no, mira. * / #include #include "MAX30100_PulseOximeter.h" #define REPORTING_PERIOD_MS 1000 #define Heart_dis_addr 0x01 #define Sop2_dis_addr 0x05 #define connect_sta_addr 0x08 unsigned char heart_rate_rate_send, 05x_dis_addr 0x05 0x00}; carácter sin firmar Sop2_send [8] = {0xA5, 0x5A, 0x05, 0x82, 0x00, / Sop2_dis_addr, 0x00, 0x00}; carácter sin firmar connect_sta_send [8] = {0xA5, 0x5A, 0x05, 0x82, 0x00, / connect_sta_addr, 0x00, 0x00}; // PulseOximeter es la interfaz de nivel superior para el sensor // ofrece: // * informes de detección de latidos // * cálculo de frecuencia cardíaca // * cálculo de SpO2 (nivel de oxidación) PulseOximeter pox; uint32_t tsLastReport = 0; // Devolución de llamada (registrada a continuación) disparada cuando se detecta un pulso void onBeatDetected () {// Serial.println ("Beat!"); } configuración vacía () {Serial.begin (115200); // Serial.print ("Inicializando pulsioxímetro.."); // Inicialice la instancia de PulseOximeter // Las fallas generalmente se deben a un cableado I2C incorrecto, falta de suministro de energía // o chip de destino incorrecto if (! Pox.begin ()) {// Serial.println ("FAILED"); // connect_sta_send [7] = 0x00; // Serial.write (connect_sta_send, 8); por(;;); } más {connect_sta_send [7] = 0x01; Serial.write (connect_sta_send, 8); // Serial.println ("ÉXITO"); } // La corriente predeterminada para el LED IR es 50mA y se puede cambiar // descomentando la siguiente línea. Consulte MAX30100_Registers.h para ver todas las // opciones disponibles.pox.setIRLedCurrent (MAX30100_LED_CURR_7_6MA); // Registrar una devolución de llamada para la detección de latidos pox.setOnBeatDetectedCallback (onBeatDetected); } void loop () {// Asegúrate de llamar a update lo más rápido posible pox.update (); // Descarga asincrónicamente los niveles de oxidación y frecuencia cardíaca al serial // Para ambos, un valor de 0 significa "inválido" if (millis () - tsLastReport> REPORTING_PERIOD_MS) {// Serial.print ("Frecuencia cardíaca:"); // Serial.print (pox.getHeartRate ()); // Serial.print ("bpm / SpO2:"); // Serial.print (pox.getSpO2 ()); // Serial.println ("%"); heart_rate_send [7] = (uint32_t) pox.getHeartRate (); Serial.write (heart_rate_send, 8); Sop2_send [7] = pox.getSpO2 (); Serial.write (Sop2_send, 8); tsLastReport = millis (); }}

Paso 31: muestra la frecuencia cardíaca en la pantalla LCD con Arduino

Muestra la frecuencia cardíaca en la pantalla LCD con Arduino
Muestra la frecuencia cardíaca en la pantalla LCD con Arduino

Compile el código, descárguelo en la placa de desarrollo Arduino y estará listo para comenzar a probar.

Podemos ver que cuando los dedos abandonan el MAX30100, la frecuencia cardíaca y el oxígeno en sangre muestran 0. Coloque el dedo en el colector MAX30100 para ver su frecuencia cardíaca y los niveles de oxígeno en sangre en tiempo real.

El efecto se puede ver en la siguiente imagen:

Recomendado: