Industrial manufacturing
Industrial Internet of Things | Industrial materials | Equipment Maintenance and Repair | Industrial programming |
home  MfgRobots >> Industrial manufacturing >  >> Manufacturing Technology >> Manufacturing process

Portable Pulse Oximeter for Emergency Use During COVID-19

Components and supplies

Portable Pulse Oximeter for Emergency Use During COVID-19
Arduino Nano R3
×1
Maxim Integrated MAX30100
×1
SSD1306 128x32 i2c Oled display
or similar, check dimension
×1
prototype breadboard
×1
finger clip by Peter Smith
×1

Necessary tools and machines

Portable Pulse Oximeter for Emergency Use During COVID-19
3D Printer (generic)
Portable Pulse Oximeter for Emergency Use During COVID-19
Soldering iron (generic)
Portable Pulse Oximeter for Emergency Use During COVID-19
Solder Wire, Lead Free
4x0.25 wire

About this project

Portable Pulse Oximeter for Emergency Use During COVID-19

This simple project want help people and institution in this Emergency. The difficult reperibility of fundamental device that in standard situation are the base in all the Hospitals is a huge problem, as also the shortage of personal protection devices..

Open source as the base for fast replication and diffusion

The "base pack" of this first release are intended to produce a functional device with all the parts:

1 - The hardware

A short list with all necessary parts, common and cheap hardware with a huge potential: Arduino Nano (next micro and others), MAX30100 pulse-oximeter sensor, OLED screen 128x32, "emergency board".

Portable Pulse Oximeter for Emergency Use During COVID-19

2 - 3d printable enclosures

A simple 3d printed case to protect hardware and connections.

Portable Pulse Oximeter for Emergency Use During COVID-19

3 - 3d printable finger-clip

An open-source and already available "finger sensor enclosure" are the fast way to share the project. FInd it in thingiverse repository. Is a "Pulse Oximeter Clip" to use with MAX30100 Board designed by Peter_Smith.

Portable Pulse Oximeter for Emergency Use During COVID-19

4 -Simple emergency board

To electrically connect and to support all the parts a simple "baseboard" is build with a prototype circuit board (next level will be a printable circuit). In this way connect Arduino board, the sensor and the Oled screen is fast.

Portable Pulse Oximeter for Emergency Use During COVID-19

5 - The code

In this preliminary release a base configuration is build to have clear view of the heart rate and of the oximetry, with real time monitoring.The base configuration and the paramers was set for a general use, some simple change could be necessary for specific situation.

6 - The instructions

Simple Draws, a step by step instructions and base information for assembly and debug. The links for libraries download and the thingiverse repository. Nothing else is needed in this phase.

Portable Pulse Oximeter for Emergency Use During COVID-19

DISCLAIMERPlease consider that this application, sensors and functional device are NOT tested for medical purpose and the single parts aren't calibrated and aren't certified. Please use this simple device for preventive scope and to monitorate patients only under emergency situation when no other medical deviced and Pulse-oximeters are available.Every use outside this scope will be at under own responsibility, every modification or changing will be under own responsibility.

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/licenses.en.htmlCopyright © 2020, CEREBRUM™ srl

Downloading at least a single file or use any content or instruction referrable to this work mean to accept the disclaimer and accept the intent of this project, released under an Emergnecy situation of "Covid-19 diseases".

CE_Pulse-Oxi_nano_2.4_V1_Instruction.pdfCE_Pulse-Oxi_nano_2xscheme_V1.pdfCE_Pulse-Oxi_dev2.4.ino

Code

  • CE_Pulse-Oxi_dev2.4.ino
CE_Pulse-Oxi_dev2.4.inoArduino
Base code for Arduino Nano vR3
i2c for MAX30100 and Oled display
/* This program is free software: you can redistribute it and/or modify it under 
 *  the terms of the GNU General Public License as published by the Free Software 
 *  Foundation, either version 3 of the License, or (at your option) any later version.
 *  
 *  This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; 
 *  without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
 *  See the GNU General Public License for more details.
 *  
 *  You should have received a copy of the GNU General Public License along with this program.  
 *  If not, see <http://www.gnu.org/licenses/>.
 *  Copyright 2020,CEREBRUM srl
 *  
 *  More details by CEREBRUM Srl
 *  www.cerebrum.it
 *  ITALY
 *  
 *  Please consider that this application, sensors and functional device are NOT tested for 
 *  medical purpose and the single parts aren't calibrated and aren't certified. 
 *  Please use this simple device for preventive scope and to monitorate patients only under 
 *  emergency situation when no other medical deviced and Pulse-oximeters are available.
 *  
 *  CEREBRUM-oximeter dev. 2.4 - version 1.1   // April, 6 2020
 *  
 *  Arduino NANO - 3,3v | i2c A4 (SDA) , A5 (SCL)
 *  Arduino NANO Every - 3,3v | i2c A4 (SDA) , A5 (SCL)
 *  Arduino MICRO - 3,3v | i2c 2 (SDA), 3 (SCL)
 *  
 *  MAX30100 - PulseOximeter board (+3.3v | GND | SCA/SCL)
 *  OLED SSD1306 128x32 (+3.3v | GND | SCA/SCL)
*/

#include <Wire.h>
#include "MAX30100_PulseOximeter.h"
#include "MAX30100.h"
#include <U8g2lib.h>
 
#define REPORTING_PERIOD_MS      1000
#define PULSE_WIDTH              MAX30100_SPC_PW_1600US_16BITS
#define IR_LED_CURRENT           MAX30100_LED_CURR_40MA  
#define LED_CURRENT              MAX30100_LED_CURR_20_8MA 
#define SAMPLING_RATE            MAX30100_SAMPRATE_100HZ

U8G2_SSD1306_128X32_UNIVISION_F_HW_I2C u8g2(U8G2_R0);
PulseOximeter pox;
MAX30100 sensor;

uint32_t tsLastReport = 0;
uint32_t last_beat=0;
bool initialized=false;
int HRclean;
int SpO2;
 
void onBeatDetected()
{
  show_beat();
  last_beat=millis();
}

void show_beat() 
{
  u8g2.setFont(u8g2_font_cursor_tr);
  u8g2.setCursor(118,10);
  u8g2.print("_");
  u8g2.sendBuffer();
}

void initial_display() 
{
  if (not initialized) 
  {
    u8g2.clearBuffer();
    u8g2.setCursor(15,12);
    u8g2.setFont(u8g2_font_crox2hb_tr); 
    u8g2.print("CEREBRUM.it"); 
    u8g2.setFont(u8g2_font_crox2h_tr);
    u8g2.setCursor(30,29);
    u8g2.print("Initializing...");
    u8g2.sendBuffer(); 
    delay(4000);
   
    initialized=true;

      u8g2.clearBuffer();
      u8g2.setFont(u8g2_font_crox2hb_tr); 
        if (!pox.begin()) {
          u8g2.setCursor(40,12);
          u8g2.print("FAILED");
          u8g2.setCursor(15,29);
          u8g2.print("Check Sensor !");
          u8g2.sendBuffer(); 
          for(;;);
        } else {
          u8g2.setCursor(20,12);
          u8g2.print("INITIALIZED");
          u8g2.setCursor(0,29);
          u8g2.print("Wear the Sensor...");
          u8g2.sendBuffer(); 
        }
     delay(2000);
  }
}

void setup()
{
    u8g2.begin();
    initial_display();
    pox.begin();

    pox.setOnBeatDetectedCallback(onBeatDetected); 
    pox.setIRLedCurrent(LED_CURRENT);  
    sensor.setMode(MAX30100_MODE_SPO2_HR);
    sensor.setLedsPulseWidth(PULSE_WIDTH);
    sensor.setSamplingRate(SAMPLING_RATE);
}
 
void loop()
{
    pox.update();
    HRclean = pox.getHeartRate();
    SpO2 = pox.getSpO2();
    if ((millis() - tsLastReport > REPORTING_PERIOD_MS) and (HRclean>30 and HRclean<220 and SpO2>30 and SpO2<100)) {
      u8g2.clearBuffer();
      u8g2.setFont(u8g2_font_crox2h_tr);
      u8g2.setCursor(0,12);  
      u8g2.print("HR");
      u8g2.setCursor(75,12);  
      u8g2.print("Bpm");
      u8g2.setCursor(0,30);
      u8g2.print("SpO2 ");
      u8g2.setCursor(75,30);
      u8g2.print("%"); 
      u8g2.setFont(u8g2_font_fub11_tf); 
      u8g2.setCursor(45,12);  
      u8g2.print(HRclean);
      u8g2.setCursor(45,30);  
      u8g2.print(SpO2);
      u8g2.setFont(u8g2_font_cursor_tr);
      u8g2.setCursor(118,10);
      u8g2.print("^");
      u8g2.sendBuffer();

     tsLastReport = millis();      
    }
}

Custom parts and enclosures

This is the main enclosure for electronic parts and oled displayThis is the top cover of the enclosure for electronic parts and oled displayThis is the 2 part's finger clip developed by peter smith, see the team contributors

Schematics

main connectionsce_pulse-oxi_nano_v1_rlt456wOHw.fzzA simple board to connect display, sensor and arduino corece_pulse-oxi_nano_eboard_v1_Hr01HUzdkf.fzz

Manufacturing process

  1. COVID‑19: Key Strategies for an Effective Emergency Supply‑Chain Response Plan
  2. Build an Ultrasonic Levitation Device with Arduino – Step‑by‑Step Guide
  3. Automatic Keyer for Radio Direction Finding – Precision, Ease, and Reliability
  4. Master Modbus on Arduino: Step‑by‑Step Guide
  5. E‑Health: Affordable Sensors for Early Disease Detection
  6. Ultrasonic Smart Glasses: Enhancing Mobility for the Visually Impaired
  7. DIY Open-Source Pulse Oximeter for COVID-19: Arduino Build
  8. Expert Guide to Selecting Wire Decks for Reliable Pallet Racking
  9. Premium Sand Casting Solutions for Industrial Applications
  10. Top CNC EDM Machines for Precision Machining