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

Pulsioxímetro de código abierto para COVID-19

Componentes y suministros

Arduino Nano R3
× 1
Sensor de frecuencia cardíaca y pulso MAX30102 integrado Maxim
× 1
Pantalla DFRobot Gravity I2C OLED-2864
× 1

Herramientas y máquinas necesarias

Impresora 3D (genérica)
Soldador (genérico)

Aplicaciones y servicios en línea

Arduino IDE
Autodesk Fusion 360

Acerca de este proyecto

Los desafíos de COVID-19

COVID-19 es una enfermedad causada por el virus SARS-CoV-2 que ataca principalmente el sistema respiratorio de una persona. Algunos síntomas más leves pueden incluir fiebre, dolores y escalofríos, pero también pueden provocar afecciones más graves, como neumonía. Es posible que una persona que tiene neumonía o incluso una leve falta de aire no sepa cuándo ir al hospital, especialmente cuando comienza a sentirse aún más abrumada. Es por eso que creé este oxímetro de pulso de código abierto, que puede ayudar a las personas a obtener la ayuda que necesitan y obtener información precisa sobre su condición actual.

Un poco de descargo de responsabilidad

¡Este dispositivo / proyecto no debe usarse como una herramienta de diagnóstico médico precisa!

La electrónica

MAX30102

OLED de 128 x 64 píxeles

Arduino Nano

Construyendo el dispositivo paso a paso

Aquí hay un tutorial paso a paso de cómo construir este proyecto.

1. Imprima y limpie las piezas

Comience descargando cada pieza de la sección de archivos adjuntos de este proyecto y cargándola en la cortadora que elija. Usé un relleno de alrededor del 70-80% y soportes medios, todos con PLA. Una vez que terminaron de imprimir, quité los soportes y lijé un poco para asegurarme de que todos encajaran bien.

2. Suelde los componentes electrónicos

Todo el dispositivo está diseñado alrededor de un Arduino Nano que está montado en una pieza de 44 mm por 30 mm de perfboard. Primero, los cables se sueldan a los pines VIN, GND, SDA y SCL del sensor y luego pasan por debajo de la pieza de la cama hasta el Arduino Nano.

A continuación, el conector para el OLED se conecta al Nano y luego se ejecuta hasta la pantalla.

Y finalmente, todo el conjunto de la electrónica se desliza en la carcasa y se fija con un par de tornillos de 3 mm.

3. Ensamble el dispositivo

Una vez que se hayan insertado los componentes electrónicos, simplemente conecte la pantalla OLED a la pieza superior y fíjela al resto del chasis con un par de tornillos de 3 mm. Puede probar su movimiento articulando suavemente la tapa hacia arriba y hacia abajo.

4. Subiendo el boceto

El boceto incluido realiza un par de acciones para mostrar la frecuencia cardíaca actual del usuario y la saturación de oxígeno. Para cargarlo, simplemente instale las bibliotecas requeridas y seleccione Arduino Nano de la lista de la placa en el menú Herramientas y haga clic en Cargar.

En cuanto al boceto en sí, primero inicializa OLED y MAX30102, mientras informa cualquier error que pueda surgir. A continuación, lee 100 valores para calibrar el sensor y comienza a mostrarlos. Luego, el dispositivo ingresa en un bucle donde lee 25 valores nuevos y calcula un promedio móvil con ellos. Finalmente, verifica si los valores son válidos y los imprime en la pantalla si lo son.

5. Usándolo

Para usar el oxímetro de pulso, coloque la yema del dedo sobre el sensor y cierre suavemente la tapa superior. Luego, conecte una fuente de alimentación y simplemente espere hasta que vea los datos que se muestran.

Código

  • Código del pulsioxímetro
Código del pulsioxímetro C / C ++
 / * Conexiones de hardware (Breakoutboard a Arduino):-5V =5V (se permiten 3.3V) -GND =GND -SDA =A4 (o SDA) -SCL =A5 (o SCL) -INT =No conectado El MAX30105 Breakout puede manejar lógica I2C de 5V o 3.3V. Recomendamos alimentar la placa con 5V, pero también funcionará a 3.3V. * / # Include  #include "MAX30105.h" #include "spo2_algorithm.h" #include "SSD1306Ascii.h" #include "SSD1306AsciiWire .h "MAX30105 sensor de partículas; SSD1306AsciiWire oled; #define MAX_BRIGHTNESS 255 # si está definido (__ AVR_ATmega328P__) || definido (__ AVR_ATmega168 __) // Arduino Uno no tiene suficiente SRAM para almacenar 50 muestras de datos de LED IR y datos de LED rojo en formato de 32 bits // Para resolver este problema, se truncará el MSB de 16 bits de los datos muestreados. Las muestras se convierten en datos de 16 bits.uint16_t irBuffer [50]; // sensor de infrarrojos LED datauint16_t redBuffer [50]; // datos del sensor LED rojo # elseuint32_t irBuffer [50]; // sensor de LED de infrarrojos datauint32_t redBuffer [50]; // datos del sensor LED rojo # endifint32_t spo2; // SPO2 valueint8_t validSPO2; // indicador para mostrar si el cálculo de SPO2 es válidoint32_t heartRate; // valor de frecuencia cardíacaint8_t validHeartRate; // indicador para mostrar si el cálculo de la frecuencia cardíaca es válidovoid setup () {Serial.begin (115200); // inicializar la comunicación en serie a 115200 bits por segundo:oled.begin (&Adafruit128x64, 0x3C); oled.setFont (Arial14); // Inicializar el sensor si (! ParticleSensor.begin (Wire, I2C_SPEED_FAST)) // Usar el puerto I2C predeterminado, velocidad de 400kHz {Serial.println (F ("No se encontró el MAX30105. Verifique el cableado / alimentación")); mientras (1); } partículaSensor.setup (55, 4, 2, 200, 411, 4096); // Configure el sensor con estos ajustes} void loop () {// lea las primeras 50 muestras y determine el rango de señal para (byte i =0; i <50; i ++) {while (partitionSensor.available () ==false ) // ¿tenemos nuevos datos? ParticleSensor.check (); // Verifique el sensor en busca de nuevos datos redBuffer [i] =ParticleSensor.getRed (); irBuffer [i] =sensor de partículas.getIR (); ParticleSensor.nextSample (); // Hemos terminado con esta muestra, así que pase a la siguiente muestra Serial.print (F ("red =")); Serial.print (redBuffer [i], DEC); Serial.print (F (", ir =")); Serial.println (irBuffer [i], DEC); } // calcula la frecuencia cardíaca y la SpO2 después de las primeras 50 muestras (primeros 4 segundos de muestras) maxim_heart_rate_and_oxygen_saturation (irBuffer, 50, redBuffer, &spo2, &validSPO2, &heartRate, &validHeartRate); // Toma de muestras continuamente del MAX30102. La frecuencia cardíaca y la SpO2 se calculan cada segundo mientras (1) {// volcando los primeros 25 conjuntos de muestras en la memoria y desplazando los últimos 25 conjuntos de muestras a la parte superior para (byte i =25; i <50; i ++) {redBuffer [i - 25] =redBuffer [i]; irBuffer [i - 25] =irBuffer [i]; } // tomar 25 conjuntos de muestras antes de calcular la frecuencia cardíaca. for (byte i =25; i <50; i ++) {while (ParticleSensor.available () ==false) // ¿tenemos nuevos datos? ParticleSensor.check (); // Verifique el sensor en busca de nuevos datos redBuffer [i] =ParticleSensor.getRed (); irBuffer [i] =sensor de partículas.getIR (); ParticleSensor.nextSample (); // Hemos terminado con esta muestra, así que pase a la siguiente muestra Serial.print (F ("red =")); Serial.print (redBuffer [i], DEC); Serial.print (F (", ir =")); Serial.print (irBuffer [i], DEC); Serial.print (F (", HR =")); Serial.print (heartRate, DEC); Serial.print (F (", HRvalid =")); Serial.print (validHeartRate, DEC); Serial.print (F (", SPO2 =")); Serial.print (spo2, DEC); Serial.print (F (", SPO2Valid =")); Serial.println (validSPO2, DEC); } // Después de recopilar 25 muestras nuevas, vuelva a calcular HR y SP02 maxim_heart_rate_and_oxygen_saturation (irBuffer, 50, redBuffer, &spo2, &validSPO2, &heartRate, &validHeartRate); printToScreen (); }} void printToScreen () {oled.clear (); oled.setCursor (0,0); if (validSPO2 &&validHeartRate) {oled.print (F ("HR:")); oled.println (heartRate, DEC); oled.print (F ("SPO2:")); oled.println (spo2, DEC); } else {oled.print (F ("No válido")); }} 

Piezas y carcasas personalizadas

Esquemas


Proceso de manufactura

  1. Un registro de proyecto para FirePick Delta, la MicroFactory de código abierto
  2. Dados digitales Arduino
  3. Iron Man
  4. Encuéntrame
  5. Brazo robótico Arduino impreso en 3D
  6. PULSE OXIMETER para uso de EMERGENCIA durante la ENFERMEDAD CORONAVIRUS
  7. Control del humidificador Arduino
  8. NeoMatrix Arduino Pong
  9. Joystick de Arduino
  10. Health Band:un asistente inteligente para los ancianos
  11. La necesidad del código abierto en el perímetro (eBook)