Sistema remoto de monitoreo de salud (IoT) COVID-19 con Google sheets

Salud e IoT

Un sistema rentable y de código abierto para registrar datos de las mediciones de salud en las hojas de Google que permite al médico monitorearlas desde cualquier lugar.

Historia

La enfermedad por coronavirus, también conocida como COVID-19, es una enfermedad infecciosa que se propaga entre los humanos. El período de incubación del coronavirus es en promedio de 5 a 6 días, pero también podría ser de hasta 14 días. Durante este período de incubación, antes de que la persona comience a experimentar síntomas, la persona podría ser contagiosa. El virus se propagaría a las personas con las que interactúa la persona infectada, y esto es peligroso. La presencia de coronavirus en el cuerpo de un ser humano podría probarse mediante la realización de pruebas de PCR. La demanda de pruebas de PCR está aumentando, pero las pruebas no se pueden llevar a todas partes.

La fiebre es un síntoma común de la enfermedad por coronavirus. Los estudios han demostrado que esta enfermedad también podría acelerar la frecuencia cardíaca. En mi proyecto, la temperatura corporal y la frecuencia cardíaca se medirán y los datos se registrarán en las hojas de Google con la ayuda del servicio en línea Pushbox. Luego, la hoja de cálculo se puede compartir con el médico.

En realidad, planeé hacer este proyecto con ESP8266 con el módulo de sensor de temperatura infrarroja (sin contacto) GY-906 MLX90614ESF y el oxímetro de pulso de alta sensibilidad MAX30100 / 02 para obtener resultados más precisos y confiables, pero no pude salir debido al bloqueo en mi país. Intenté pedirlos online, pero el envío está pendiente en este momento, así que decidí usar los componentes que tenía en casa. Le recomendaría que utilice esos dos sensores en lugar del módulo de sensor de temperatura DS18B20 y el módulo de sensor de latido.

Salud y IoT

Objetivo de este proyecto

El objetivo de este proyecto es tomar medidas de salud a distancia y compartirlas con el médico para que pueda monitorearlas desde cualquier lugar y en cualquier momento. Este sistema también podría usarse en áreas particulares o aldeas remotas donde las personas podrían registrar sus mediciones de salud. Si la medición de la salud de alguien es anormal, fuera de rango o superior a un valor crítico, el médico podría notificar a los trabajadores de la salud en el área particular para que realicen pruebas de PCR para el grupo en particular o las personas que viven allí.

Este sistema es económico y es fácil de construir. También es un sistema de monitoreo remoto de código abierto y ayudaría a muchos personal médico y personas en todo el mundo.

¿Cómo funciona?

Este sistema podría convertirse en un dispositivo médico y usarse para registrar las mediciones de salud de las personas que viven en áreas o aldeas remotas. Las personas en un área en particular registrarán sus medidas de salud. También se registrarán la fecha y la hora. Sin embargo, antes de tomar sus medidas de salud, la persona debe practicar la higiene de las manos: lavarse las manos durante al menos 20 segundos. Se podría usar un grifo sin contacto para este propósito. Un personal médico podría estar presente en el lugar de la prueba para orientar a las personas.

Después de que la persona se lave las manos, el trabajador de la salud presionará el botón asignado para las mediciones de temperatura corporal. El módulo sensor de temperatura sin contacto se utilizará para tomar medidas de temperatura corporal de la persona. Después de tomar la medida, deberá presionar el botón pulsador nuevamente para registrarla. Si la temperatura es superior a 37 ° C, se enviará inmediatamente a la persona para la prueba de PCR.

Si la temperatura no está por encima del valor crítico (37 ° C), puede proceder a medir la frecuencia cardíaca. Antes de medir la frecuencia cardíaca, se debe presionar el segundo botón. La medición de la frecuencia cardíaca requeriría que la persona coloque su dedo en el sensor, ya que las mediciones se toman mediante el método reflectante. La mano de la persona debe estar limpia ya que el módulo del sensor también se compartirá entre otros. Esta es la razón por la que la persona debe practicar la higiene de las manos: el virus podría propagarse a la siguiente persona que use el sensor si las manos de esta persona están contaminadas. Si se detecta el latido del corazón, se encenderá el LED normal. Mientras se toman las mediciones de frecuencia cardíaca, el módulo LED de dos colores se pondrá de color verde. El LED se volverá rojo mientras se registra la temperatura corporal.

Una vez tomadas las medidas de salud, el trabajador de la salud puede pasar el dedo sobre el sensor de seguimiento de infrarrojos. Esto hará una solicitud a la API Pushingbox que convierte los datos transmitidos por HTTP en datos encriptados HTTPS compatibles con Google. Las medidas se registrarán en las hojas de Google. Si la temperatura supera los 37 ° C, la celda se volverá roja, debido al formato condicional. Esto también sucederá si la frecuencia cardíaca está por encima de la frecuencia cardíaca promedio. Si la persona tiene problemas cardíacos, su frecuencia cardíaca se comparará con mediciones anteriores. Esta práctica facilitará al médico la detección de pacientes con COVID-19 en áreas o aldeas remotas.

Este sistema de monitoreo remoto también podría usarse en hogares donde las personas mayores pueden tomar sus medidas de salud por sí mismas y compartir la hoja de cálculo con su médico. Siguiendo esta práctica, las personas no tienen que desplazarse a los hospitales ni salir a tomar sus medidas de salud.

Cómo hacer este sistema de monitoreo remoto

Paso 01: Crea tu hoja de Google

  • Inicie sesión en su cuenta de Gmail o regístrese si no tiene una; crear una cuenta de Gmail es totalmente gratis.
  • Vaya a las hojas de Google y cree una nueva hoja de cálculo.
  • Copie y guarde la clave de URL de su hoja de cálculo, que se encuentra en la URL entre google.com/spreadsheets/d/ y /edit#gid=0.
  • Cree cuatro columnas y nómbrelas como Fecha y hora, Frecuencia cardíaca (en BPM), Temperatura corporal (en ° C) y Temperatura corporal (en ° F).
  • Establezca el formato de celda como Fecha y Hora para todas las celdas en la columna A.
  • Debe utilizar el formato condicional para las columnas C y D para que la celda se resalte en rojo cuando la medición de la temperatura corporal supere los 37 y 98,6, respectivamente.
  • Para la columna B, la celda debe resaltarse en rojo cuando la medición de la frecuencia cardíaca está fuera de rango o por encima de la frecuencia cardíaca promedio (en BPM).
  • Comparta esta hoja de cálculo con su médico o enviándole el enlace para compartir de la hoja de cálculo.

Salud e IoT

Paso 02: Implementar su hoja de Google como una aplicación web

  • Para implementar su hoja de Google, debe crear una secuencia de comandos de la aplicación de Google.
  • Para crear una secuencia de comandos de la aplicación de Google, vaya a Herramientas y seleccione ‘Editor de secuencias de comandos’.
  • La secuencia de comandos estará en blanco inicialmente y puede copiar el código que he incluido en la sección Código a continuación.
  • No olvide incluir la clave URL de la hoja de cálculo en los códigos.
  • Guarde el script yendo al menú Archivo y seleccionando Guardar todo .
  • Implemente su secuencia de comandos de Google como una aplicación web yendo al menú Publicar y seleccionando Implementar como aplicación web …

Salud e IoT

Paso 02: Implementar su hoja de Google como una aplicación web

Deberá copiar y guardar la URL actual de la aplicación web para fines posteriores.

Paso 03: Configuración de Pushingbox

Pushingbox es una API (interfaz de programación de aplicaciones) gratuita y fácil de usar que le ayudará a comunicarse entre su microcontrolador y las hojas de Google. Su microcontrolador hará una solicitud de API a este servicio para que se produzca la comunicación. Para hacer posible este proyecto, debe configurar la API Pushingbox. Tienes que crear un servicio y luego un escenario para que este proyecto funcione. Se le otorgan hasta 100 solicitudes gratuitas por día, lo que significa que puede tomar medidas de salud para aproximadamente 100 personas todos los días.

Siga los procedimientos a continuación para configurar la API Pushingbox y hacer que este proyecto funcione como esperaba.

  • Deberá iniciar sesión en Pushingbox con su cuenta de Gmail.
  • Después de iniciar sesión, verá su panel de control.

Crea un servicio

  • Haga clic en Mis servicios y seleccione Agregar un servicio.
  • Verá una serie de opciones a continuación y debe elegir
  • Seleccione este servicio y complete el formulario.
  • Tienes que pegar la URL de tu aplicación web en la opción URL raíz.
  • Seleccione el método como GET porque su API obtendrá las medidas de su microcontrolador.
  • Después de completar el formulario, haga clic en enviar y ahora ha creado un servicio.

El siguiente paso es crear un escenario.

Salud e IoT

Crea un escenario

  • Vaya a Mis escenarios y cree un escenario agregando un nombre adecuado dentro de crear un escenario o agregue un cuadro de dispositivo.
  • A continuación, verá su escenario en la sección Sus escenarios virtuales a continuación.
  • Seleccione la opción Agregar una acción para su escenario y luego haga clic en Agregar una acción a este servicio.
  • Asigne su nuevo servicio a su escenario.
  • Verá su ID de dispositivo. Copie y guárdelo para fines posteriores.
  • A continuación, se le pedirá el método Obtener Publicar . Elija el método Get .

Copie y pegue esta cadena en el cuadro:

?hData=$hData$&celData=$celData$&fehrData=$fehrData$

Paso 04: Probar la API

Simplemente puede hacer clic en Escenario de prueba después de completar la configuración de su escenario. Recibirá un mensaje que indica que el escenario se ejecutó correctamente. Abra su hoja de Google y verá $ hData $, $ cData $ $ fData $ en las columnas Frecuencia cardíaca (en BPM), Temperatura corporal (en ° C) y Temperatura corporal (en ° F), respectivamente.

También puede sustituir valores en lugar de otras variables. Para eso, puedes usar esto:

http://api.pushingbox.com/pushingbox?devid=(YOUR-DEVID)&hData=77&cData=36&fData=96.8

Si obtiene los valores registrados correctamente, puede pasar al siguiente paso, pero si hay algunos problemas, intente verificar los pasos anteriores.

Paso 05: configuración de su hardware

Salud e IoT

Siga mi esquema publicado en la sección Esquemas para conectar sus componentes.

No pude obtener todos los componentes en mi aplicación Fritzing, así que decidí dibujar el esquema por mí mismo.

Paso 06: Bibliotecas necesarias para este proyecto

Necesitará las siguientes bibliotecas para este proyecto (no las necesitará si usa el módulo de sensor de temperatura sin contacto y el oxímetro de pulso de alta sensibilidad MAX30100 / 02):

Paso 07: Cómo funcionan los sensores (omita esto si está utilizando el módulo de sensor de temperatura sin contacto y el oxímetro de pulso de alta sensibilidad MAX30100 / 02)

Es bastante complicado trabajar con el sensor de latidos que he usado en este proyecto. No debe colocar el dedo sobre él con demasiada fuerza o ligereza porque se interrumpiría el flujo sanguíneo y las mediciones serán menos precisas y la precisión de los resultados se verá afectada.

El módulo del sensor de latidos utilizado en este proyecto utiliza el método reflectante. El LED de infrarrojos del módulo del sensor de latidos emite una onda de infrarrojos y el fotodiodo mide la cantidad de luz reflejada. La intensidad de la luz reflejada depende del flujo sanguíneo en su dedo. Así es como funciona un sensor de latidos.

Lea este tutorial para aprender a usar el módulo de sensor de temperatura DS18B20 (no tiene que leer esto si está usando el módulo de sensor sin contacto):

https://randomnerdtutorials.com/guide-for-ds18b20-temperature-sensor-with-arduino/

Paso 08: preparación de su boceto de Arduino

Debe preparar un boceto de Arduino para realizar una solicitud a la API y registrar sus mediciones de salud.

Antes de utilizar su módulo de sensor de latidos, deberá establecer los valores de umbral. Para establecer los valores de umbral, cargue el boceto del ‘Proyecto de introducción’ a su microcontrolador NodeMCU. Este boceto se puede encontrar en la carpeta de ejemplos.

Vaya a Archivo —-> Ejemplos —-> PulseSensor Playground y seleccione el boceto.

Después de determinar el valor de umbral, ingrese ese valor en los códigos. Puede encontrar los códigos de Arduino necesarios para este proyecto a continuación.

 

/* PulseSensor Starter Project and Signal Tester
* The Best Way to Get Started With, or See the Raw Signal of, your PulseSensor.com™ & Arduino.
*
* Here is a link to the tutorial
* https://pulsesensor.com/pages/code-and-guide
*
* WATCH ME (Tutorial Video):
* https://www.youtube.com/watch?v=RbB8NSRa5X4
*
*
————————————————————-
1) This shows a live human Heartbeat Pulse.
2) Live visualization in Arduino’s Cool «Serial Plotter».
3) Blink an LED on each Heartbeat.
4) This is the direct Pulse Sensor’s Signal.
5) A great first-step in troubleshooting your circuit and connections.
6) «Human-readable» code that is newbie friendly.»

*/
// Variables
int PulseSensorPurplePin = 0; // Pulse Sensor PURPLE WIRE connected to ANALOG PIN 0
int LED13 = 13; // The on-board Arduion LED

int Signal; // holds the incoming raw data. Signal value can range from 0-1024
int Threshold = 550; // Determine which Signal to «count as a beat», and which to ingore.

// The SetUp Function:
void setup() {
pinMode(LED13,OUTPUT); // pin that will blink to your heartbeat!
Serial.begin(9600); // Set’s up Serial Communication at certain speed.

}

// The Main Loop Function
void loop() {

Signal = analogRead(PulseSensorPurplePin); // Read the PulseSensor’s value.
// Assign this value to the «Signal» variable.

Serial.println(Signal); // Send the Signal value to Serial Plotter.

if(Signal > Threshold){ // If the signal is above «550», then «turn-on» Arduino’s on-Board LED.
digitalWrite(LED13,HIGH);
} else {
digitalWrite(LED13,LOW); // Else, the sigal must be below «550», so «turn-off» this LED.
}

delay(10);

}

 

Scrpits de google:

//-----------------------------------------------
//Originally published by Mogsdad@Stackoverflow
//Modified for jarkomdityaz.appspot.com
//Modified for Hackster.io by Stephen Borsay
//Modified for Hackster.io COVID19DetectProtect challenge by Rucksikaa Raajkumar
//-----------------------------------------------
/*
GScript, PushingBox and Arduino/ESP8266 Variables in order:

hData
cData
fData
----------------------------------------------------
*/
/* Using spreadsheet API */

function doGet(e) { 
  Logger.log( JSON.stringify(e) );  // view parameters

  var result = 'Ok'; // assume success

  if (e.parameter == undefined) {
    result = 'No Parameters';
  }
  else {
    var id = 'Your spreadsheet URL key';//docs.google.com/spreadsheetURL/d
    var sheet = SpreadsheetApp.openById(id).getActiveSheet();
    var newRow = sheet.getLastRow() + 1;
    var rowData = [];
    //var waktu = new Date();
    rowData[0] = new Date(); // Timestamp in column A
    
    for (var param in e.parameter) {
      Logger.log('In for loop, param='+param);
      var value = stripQuotes(e.parameter[param]);
      //Logger.log(param + ':' + e.parameter[param]);
      switch (param) {
        case 'hData': //Parameter
          rowData[1] = value; //Value in column B
          break;
        case 'cData':
          rowData[2] = value;
          break;
        case 'fData':
          rowData[3] = value;
          break;
        default:
          result = "unsupported parameter";
      }
    }
    Logger.log(JSON.stringify(rowData));

    // Write new row below
    var newRange = sheet.getRange(newRow, 1, 1, rowData.length);
    newRange.setValues([rowData]);
  }

  // Return result of operation
  return ContentService.createTextOutput(result);
}

/**
* Remove leading and trailing single or double quotes
*/
function stripQuotes( value ) {
  return value.replace(/^["']|['"]$/g, "");
}

 

Acerca de Rucksikaa Raajkumar 1 Articles
Soy de Sri Lanka y actualmente estoy en un año sabático esperando ofertas universitarias y de becas. Después de aprender por mi cuenta y completar con éxito mi estudio de Niveles Avanzados Internacionales en Matemáticas con buenos resultados (A * A * AA), tomé un año sabático porque no pude inscribirme en una universidad extranjera debido a las restricciones de viaje pandémicas de COVID-19. Durante este año, estoy ampliando mis conocimientos y desarrollando mis habilidades realizando investigaciones y trabajando en nuevos proyectos innovadores.

Sé el primero en comentar

Dejá un Comentario

Tu dirección de correo no será publicada.


*