Portable Pulse Oximeter for Emergency Use During COVID-19
Components and supplies
![]() |
| × | 1 | |||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Necessary tools and machines
![]() |
| |||
![]() |
| |||
![]() |
| |||
|
About this project

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 diffusionThe "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".

2 - 3d printable enclosures
A simple 3d printed case to protect hardware and connections.

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.

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.

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.

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.inoCode
- CE_Pulse-Oxi_dev2.4.ino
CE_Pulse-Oxi_dev2.4.inoArduino
Base code for Arduino Nano vR3i2c 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 contributorsSchematics
main connectionsce_pulse-oxi_nano_v1_rlt456wOHw.fzzA simple board to connect display, sensor and arduino corece_pulse-oxi_nano_eboard_v1_Hr01HUzdkf.fzzManufacturing process
- COVID‑19: Key Strategies for an Effective Emergency Supply‑Chain Response Plan
- Build an Ultrasonic Levitation Device with Arduino – Step‑by‑Step Guide
- Automatic Keyer for Radio Direction Finding – Precision, Ease, and Reliability
- Master Modbus on Arduino: Step‑by‑Step Guide
- E‑Health: Affordable Sensors for Early Disease Detection
- Ultrasonic Smart Glasses: Enhancing Mobility for the Visually Impaired
- DIY Open-Source Pulse Oximeter for COVID-19: Arduino Build
- Expert Guide to Selecting Wire Decks for Reliable Pallet Racking
- Premium Sand Casting Solutions for Industrial Applications
- Top CNC EDM Machines for Precision Machining



