Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Health Band:un asistente inteligente para los ancianos

Componentes y suministros

Infineon DPS310
× 1
Arduino Nano R3
× 1
Espressif ESP8266 ESP-01
× 1
Cables de puente (genéricos)
× 1
Batería LiPo de 3,7 V
× 1

Herramientas y máquinas necesarias

Soldador (genérico)

Aplicaciones y servicios en línea

Arduino IDE
Blynk

Acerca de este proyecto

¿Su ser querido es mayor y vive solo? No hay necesidad de preocuparse. Usando el sensor de presión DPS310 de Infineon, desarrollamos un asistente virtual que se ajusta perfectamente alrededor de su brazo en forma de banda, que se encarga de este trabajo que consume mucho tiempo, ¡dejando a sus seres queridos en buenas manos!

"Las personas mayores representan actualmente alrededor de 14,5 por ciento de la población de EE. UU. , y para 2030 habrá alrededor de 74 millones de personas mayores. A medida que aumentan los costos de atención médica y se ejerce presión sobre las instituciones de atención médica para que brinden la atención adecuada, son imperativas nuevas soluciones para administrar la salud de las personas mayores ".

Después de una búsqueda rápida y de haber visto los impactantes números, ¡este es nuestro intento de ayudar a las personas mayores!

LA HISTORIA

Han pasado algunos años desde que mi abuela ha estado sufriendo los primeros signos de la enfermedad de Alzheimer y, lamentablemente, su condición parece estar deteriorándose. Esto resultó en una serie de problemas inesperados como

1) vagar al trabajo (aunque le aconsejaron que no lo hiciera)

2) saltearse las comidas o, a veces, hacer comidas dobles

3) no hacer sus ejercicios

Todo esto por la falta de memoria y también por el desconocimiento de su condición.

Esto hizo que mi madre tuviera que estar con ella casi todo el día, los siete días de la semana. Esta tarea resultó ser muy agotadora y consumía mucho tiempo. Fue entonces cuando se nos ocurrió la idea de hacer un asistente virtual que pudiera monitorear el comportamiento y las actividades de mi abuela y, si fuera necesario, también podría alertar a un miembro de la familia en caso de una emergencia. ¡Darle un respiro a mi madre y al mismo tiempo mantener al paciente en buenas manos!

COMPONENTES DEL SISTEMA / CONCEPTO

Aunque este sistema se enfoca principalmente en los problemas que enfrenta un paciente de Alzheimer, hemos inculcado muchos otros sistemas en nuestro proyecto que impactan la vida de todos los ancianos ayudándolos a cruzar los obstáculos de su vida diaria de forma independiente.

¡Una de las principales características del sensor de presión de Infineon es su tamaño! Esto hace que el componente clave sea portátil y súper versátil. En el corazón de nuestro sistema tenemos el Arduino Nano que luego se conecta al sensor de presión DPS310 a través del bus I2C. Las acciones y los comportamientos se codificarán para simular el movimiento en vivo del paciente. Usando estos gráficos o valores, determinamos el estado del paciente y alertamos a un miembro en caso de una emergencia. Los datos generados luego se representarán en una pequeña aplicación usando Blynk.

Todo este sistema se integrará en una banda portátil compacta pero de buen aspecto, que integra esta tecnología a la perfección en la vida del paciente.

FUNCIONES Y CAPACIDADES

Estas son las principales funciones y movimientos que nuestra banda podrá analizar / detectar:​​

Otoño - Los estudios muestran que el mayor problema con los ancianos es que pierden el equilibrio y se caen. A menudo, los pacientes están indefensos y solo después de algún tiempo llega la ayuda. Esto podría evitarse fácilmente con la Health Band mediante la detección de una caída repentina de presión. Una vez detectado, se envía automáticamente un mensaje a los familiares para ayudar a evitar que la lesión empeore.

Ejercicio - para las personas mayores puede ser bastante difícil hacer que hagan ejercicio o que salgan a caminar, aunque esto los mantendrá en forma y saludables. Pensamos que una forma de motivarlos podría ser mostrándoles la cantidad de pasos que dieron o el tiempo que han caminado, para que tengan algo que los empuje a hacer ejercicio.

Y en el caso de mi abuela, los médicos le han dicho que camine alrededor de 1000 pasos, ella está dispuesta, pero pierde la cuenta. ¡Un contador también la ayuda!

Una vez que Health Band detecta un movimiento de "onda", deduce que el paciente ha comenzado su ejercicio. Cresta a cresta o de valle a valle marca un ciclo. A medida que se toman los pasos, se genera el número de ciclos y luego se muestra, creando su propio contador de pasos.

Fiebre - este es bastante sencillo, el sensor también da la temperatura. La banda que está en contacto con el brazo da la temperatura en vivo del paciente. Cualquier pico o caída se alertará de nuevo automáticamente a través de un mensaje a los familiares.

Estado - les dice a los familiares el estado de vida del paciente. Por ejemplo, si la Health Band no detecta muchos cambios de presión, el paciente podría estar durmiendo.

Tenemos tres estados:dormir, despertar y hacer ejercicio. (Dicho esto, aún no hemos perfeccionado esta función, ya que a veces recibimos "estados" incorrectos. También planeamos agregar más estados)

CIRCUITO

El potente sensor DPS310 de Infineon se puede sincronizar mediante Bluetooth con una aplicación. La aplicación genera representaciones visuales en vivo del sensor. Aunque fue útil, tuvo sus limitaciones para nuestro concepto.

Entonces, para aprovechar el flujo de datos del sensor, conectamos un Arduino Nano, a través del bus I2C. Esto nos permitió calcular los datos haciendo posible deducir varios escenarios en los que se encontraba el paciente.

Una vez que resolvimos ese bit, conectamos el Arduino a un módulo WiFi ESP8266 dándole los medios para comunicarse con una aplicación móvil.

CONFIGURACIÓN

Antes de configurar todo, deberá agregar pines al sensor. Corta dos longitudes de siete pines y suéldalos. Podría usar una placa de pruebas para facilitar las cosas.

  • Sensor de presión DPS310 para Arduino Nano (I2C)

NOTA :la orientación del sensor es como se muestra en la imagen

Pin 1 (SDA) en el sensor => Pin analógico 4 en Arduino

Pin 2 (SCL) en el sensor => Pin analógico 5 en Arduino

Patilla 8 (GND) en sensor => GND en Arduino

  • Arduino Nano a ESP8266 (módulo WiFi)

NOTA :la orientación del módulo es como se muestra en la imagen

Pin 1 en el módulo WiFi => Pin digital 11 en Arduino

Pin 2 en el módulo WiFi => Pin digital 10 en Arduino

Pin 7 (GND) en el módulo WiFi => GND en Arduino

Pin 8 (alimentación) en el módulo WiFi => 3v3 en Arduino

HACIENDO LA BANDA

Todos los componentes son pequeños y encajan perfectamente en su muñeca. Para hacer la banda real usamos Canvas y espuma para incrustar los componentes. Y luego Velcro para formar las correas.

Para hacer su banda DIY Health, comience cortando espuma del ancho de su mano. Luego coloque los distintos sensores y corte el tamaño final. Redondea los bordes para darle un aspecto más ordenado. Presione los pasadores en la espuma (dándole protección y agarre) e incruste la batería en una pequeña ranura.

Ahora voltee la Banda y suelde las conexiones, los pines deberían sobresalir ... Haga una prueba para ver si todo está funcionando.

Agrega tiras de velcro para hacer correas. Envuelva la banda en lona y péguela con pegamento caliente, ¡esto le da un acabado y una sensación prolijos!

Como no tenemos una impresora 3D, planeamos actualizar este prototipo en el futuro con un 3D impreso que tendrá ranuras perfectas para todos los componentes, lo que le dará un diseño ergonómico a nuestra Health Band.

*** Actualizaremos este proyecto, cuando imprimamos nuestro modelo final impreso en 3D, con imágenes y archivos de impresión ***

CODIFICAR LOS DISTINTOS ALGORITMOS

Antes de comenzar a programar nuestro sistema, hay ciertas bibliotecas que necesitará instalar para que el programa funcione. Las bibliotecas que necesitará descargar son:

  • Biblioteca de cables (Por lo general, viene preinstalado, este es responsable de la comunicación entre el sensor de presión Arduino Nano y DPS310) https://github.com/PaulStoffregen/Wire
  • Biblioteca de sensores de presión DPS310 https://github.com/Infineon/DPS310-Pressure-Sensor
  • Biblioteca Blynk (para que Arduino Nano pueda comunicarse con la nube Blynk) https://github.com/blynkkk/blynk-library

Una vez que haya descargado cada una de las bibliotecas, la instalación de cada una de ellas sigue el mismo proceso:abra el IDE de Arduino y dirígete al boceto (parte superior de la ventana). Luego, en la lista desplegable, haga clic en incluir biblioteca . A continuación, haga clic en agregar biblioteca .ZIP . Ahora navegue hasta donde haya almacenado los archivos que descargó y haga clic en abrir. Repita el proceso para las tres bibliotecas.

Ahora puede intentar descargar el código de prueba y compruebe si se compila. Súbelo a tu Arduino Nano y asegúrate de obtener datos en vivo abriendo el monitor en serie (representado por el icono del monitor en la esquina superior derecha del IDE).

Si eso funciona bien, continúe y cargue el código principal, luego puede comenzar a construir su aplicación.

CONSTRUYENDO LA APLICACIÓN

Para conectarnos a Internet utilizamos una plataforma prediseñada llamada Blynk, que se puede descargar desde la tienda de juegos de Android, enlace a continuación. Hay innumerables ejemplos sobre cómo usar la aplicación con Arduino que están disponibles dirigiéndose a archivos en el IDE de Arduino, luego ejemplos y en la lista Blynk.

Enlace a la aplicación blynk :https://play.google.com/store/apps/details?id=cc.

Usamos la aplicación para hacer representaciones de los datos de una manera fácil de usar.

Seleccione Arduino Nano como su microcontrolador y como "tipo de conexión" WiFi . Luego recibirá un correo con el "token de autenticación" que debe ingresar en el código (mencionado en el código).

Agregamos varios widgets, como un Gauge para representar la temperatura en vivo, una visualización de valor para el contador de pasos y una pantalla LCD mostrando el estado actual. Estos son los bloques de construcción básicos a los que puede agregar muchas más funciones para otros casos específicos.

¡CONCLUSIONES, EXITOSAS EN GENERAL!

El proyecto tuvo algunos errores y malas interpretaciones. Uno era la temperatura corporal. leído por HealthBand fue de 36 ° Celsius (temperatura de la muñeca), mientras que el termómetro de grado médico lo leyó como 36,8 ° Celsius (temperatura de la axila).

Nuestros algoritmos para los pasos demostraron estar dando recuentos incorrectos al principio, pero después de varios intentos de modificación funcionó con bastante precisión. Otro problema estaba en la función estatal. Agregamos más variables y declaraciones para que comprenda mejor otros estados.

Al final, pudimos solucionar los problemas mediante la recalibración y HealthBand recopila con éxito los datos necesarios. ¡Mi abuela ha estado sin asistente durante las últimas dos semanas y la banda ha funcionado muy bien!

Por ahora, los mensajes de otoño o fiebre no se han probado ya que no ha habido tales situaciones, pero teóricamente ¡funcionan!

Este ha sido un gran proyecto y se puede implementar con bastante facilidad, ¡esperamos que esta banda pueda salvar vidas y mantener a las personas mayores en buenas manos!

Código

  • Generación de prueba de datos
  • HealthBand con la aplicación Blynk
Prueba de generación de datos Arduino
Una vez instaladas las distintas bibliotecas, ejecute este programa para ver si todo funciona. Debería obtener una transmisión en vivo de datos o valores en el monitor serial.
 #include  void setup () {Serial.begin (9600); mientras (! Serial); // Inicio de llamada para inicializar ifxDps310 // El parámetro 0x76 es la dirección del bus. La dirección predeterminada es 0x77 y no es necesario proporcionarla. //ifxDps310.begin(Wire, 0x76); // Use la línea comentada a continuación en su lugar para usar la dirección I2C predeterminada. ifxDps310.begin (Wire); // NOTA IMPORTANTE // Si se enfrenta al problema de que el DPS310 indica una temperatura de alrededor de 60 C, aunque debería ser de alrededor de 20 C (temperatura ambiente), es posible que tenga un IC con un problema de fusible // Llame directamente a la siguiente función after begin () para resolver este problema (solo necesita ser llamado una vez después del inicio) //ifxDps310.correctTemp (); // tasa de medición de temperatura (valor de 0 a 7) // 2 ^ temp_mr resultados de medición de temperatura por segundo int temp_mr =2; // tasa de sobremuestreo de temperatura (valor de 0 a 7) // 2 ^ temp_osr mediciones de temperatura interna por resultado // Un valor más alto aumenta la precisión int temp_osr =2; // tasa de medición de presión (valor de 0 a 7) // 2 ^ prs_mr resultados de medición de presión por segundo int prs_mr =2; // tasa de sobremuestreo de presión (valor de 0 a 7) // 2 ^ prs_osr mediciones de presión interna por resultado // Un valor más alto aumenta la precisión int prs_osr =2; // startMeasureBothCont habilita el modo de fondo // la temperatura y la presión se miden automáticamente // Las velocidades de medición de alta precisión y alta al mismo tiempo no están disponibles. // Consulte la hoja de datos (o prueba y error) para obtener más información int ret =ifxDps310.startMeasureBothCont (temp_mr, temp_osr, prs_mr, prs_osr); // Utilice una de las líneas comentadas a continuación para medir solo la temperatura o la presión // int ret =ifxDps310.startMeasureTempCont (temp_mr, temp_osr); // int ret =ifxDps310.startMeasurePressureCont (prs_mr, prs_osr); if (ret! =0) {Serial.print ("Init FAILED! ret ="); Serial.println (ret); } else {Serial.println ("¡Iniciación completa!"); }} bucle vacío () {char sin firmar PressureCount =20; presión int larga [PressureCount]; Charge sin firmar TemperatureCount =20; long int temperature [temperatureCount]; // Esta función escribe los resultados de las mediciones continuas en las matrices dadas como parámetros // Los parámetros temperatureCount y pressureCount deben contener los tamaños de las matrices temperatura y presión cuando se llama a la función // Después del final de la función, temperatureCount y pressureCount mantener el número de valores escritos en las matrices // Nota:El Dps310 no puede guardar más de 32 resultados. Cuando su búfer de resultados esté lleno, no guardará ningún resultado de medición nuevo int ret =ifxDps310.getContResults (temperature, temperatureCount, pressure, pressureCount); if (ret! =0) {Serial.println (); Serial.println (); Serial.print ("FAIL! Ret ="); Serial.println (ret); } else {Serial.println (); Serial.println (); Serial.print (temperatureCount); Serial.println ("valores de temperatura encontrados:"); for (int i =0; i  
HealthBand con la aplicación Blynk Arduino
Este es el programa final, pocas variables y umbrales deben ingresarse manualmente para que la banda de salud funcione bien, siga los comentarios y realice los ajustes. ¡Configure los widgets en la aplicación Blynk según sus necesidades y su asistente debería cobrar vida!
 #include  #include  #include  #define BLYNK_PRINT Serialchar auth [ ] ="YourAuthToken"; // Tus credenciales de WiFi.// Establece la contraseña en "" para redes abiertas.char ssid [] ="YourNetworkName"; char pass [] ="YourPassword"; const unsigned char pressureLength =50; unsigned char pressureCount =0; long int presión [pressureLength]; unsigned char temperatureCount =0; const unsigned char temperatureLength =50; long int temperatura [temperatureLength]; / * estos umbrales cambiarán según el lugar donde u se encuentre actualmente, estos valores funcionaron perfectamente en nuestro región costera donde las temperaturas medias fueron 34 grados centígrados * / int pressureFallingThresh =1; int pressureSleepingThresh =4; int tempFeverThresh =39; int pressureJogThresh =5; void setup () {Serial.begin (9600); Blynk.begin (auth, ssid, pass); mientras (! Serial); ifxDps310.begin (Wire); int ret =ifxDps310.setInterruptPolarity (1); ret =ifxDps310.setInterruptSources (1, 0, 0); // limpia la bandera de interrupción leyendo ifxDps310.getIntStatusFifoFull (); int interruptPin =3; pinMode (interruptPin, INPUT); attachInterrupt (digitalPinToInterrupt (interruptPin), onFifoFull, RISING); // inicio de una medición continua como antes int temp_mr =3; int temp_osr =2; int prs_mr =1; int prs_osr =3; ret =ifxDps310.startMeasureBothCont (temp_mr, temp_osr, prs_mr, prs_osr); if (ret! =0) {Serial.print ("Init FAILED! ret ="); Serial.println (ret); } else {Serial.println ("¡Iniciación completa!"); }} bucle vacío () {Blynk.run (); Serial.println ("bucle en ejecución"); retraso (500); if (pressureCount ==pressureLength &&temperatureCount ==temperatureLength) {// imprimir resultados Serial.println (); Serial.println (); Serial.print (temperatureCount); Serial.println ("valores de temperatura encontrados:"); for (int i =0; i  tempFeverThresh) {feverEmail (); } Serial.println ("grados Celsius"); } Serial.println (); Serial.print (PressureCount); Serial.println ("valores de presión encontrados:"); for (int i =0; i   

Esquemas


Proceso de manufactura

  1. Comprensión de los estándares de seguridad para electrodomésticos inteligentes
  2. Persianas inteligentes
  3. IOT - Smart Jar usando ESP8266, Arduino y sensor ultrasónico
  4. Iron Man
  5. Encuéntrame
  6. Cómo medir la masa de la Tierra usando Arduino
  7. Control del humidificador Arduino
  8. Joystick de Arduino
  9. Encontrar el retorno de la inversión para la fabricación inteligente
  10. Software para la fábrica inteligente:Las ventajas del software independiente del hardware
  11. La sierra de cinta manual para cualquier ocasión