|
arduino IDEArduino
|
|
|
ESP-PROGEspressif
|
Esp8266 Pulse-oximeter
Pulse oximetry is a noninvasive method for monitoring a person's oxygen saturation. Peripheral oxygen saturation (SpO2) readings are typically within 2% accuracy (within 4% accuracy in 95% of cases) of the more accurate (and invasive) reading of arterial oxygen saturation (SaO2) from arterial blood gas analysis.[1] But the two are correlated well enough that the safe, convenient, noninvasive, inexpensive pulse oximetry method is valuable for measuring oxygen saturation in clinical use.
The most common approach is transmissive pulse oximetry. In this approach, a sensor device is placed on a thin part of the patient's body, usually a fingertip or earlobe, or an infant's foot. Fingertips and earlobes have higher blood flow rates than other tissues, which facilitates heat transfer.[1] The device passes two wavelengths of light through the body part to a photodetector. It measures the changing absorbance at each of the wavelengths, allowing it to determine the absorbances due to the pulsing arterial blood alone, excluding venous blood, skin, bone, muscle, fat, and (in most cases) nail polish.
Reflectance pulse oximetry is a less common alternative to transmissive pulse oximetry. This method does not require a thin section of the person's body and is therefore well suited to a universal application such as the feet, forehead, and chest, but it also has some limitations. Vasodilation and pooling of venous blood in the head due to compromised venous return to the heart can cause a combination of arterial and venous pulsations in the forehead region and lead to spurious SpO2 results. Such conditions occur while
undergoing anaesthesia with endotracheal intubation and mechanical ventilation or in patients in the Trendelenburg position.
Oxygen saturation is the fraction of oxygen-saturated hemoglobin relative to total hemoglobin (unsaturated + saturated) in the blood. The human body requires and regulates a very precise and specific balance of oxygen in the blood. Normal arterial blood oxygen saturation levels in humans are 95–100 percent. If the level is below 90 percent, it is considered low and called hypoxemia.[1] Arterial blood oxygen levels below 80 percent may compromise organ function, such as the brain and heart, and should be promptly addressed. Continued low oxygen levels may lead to respiratory or cardiac arrest. Oxygen therapy may be used to assist in raising blood oxygen levels. Oxygenation occurs when oxygen molecules (O
2) enter the tissues of the body. For example, blood is oxygenated in the lungs, where oxygen molecules travel from the air and into the blood. Oxygenation is commonly used to refer to medical oxygen saturation.
Medical uses
A pulse oximeter probe applied to a person's finger
A pulse oximeter is a medical device that indirectly monitors the oxygen saturation of a patient's blood (as opposed to measuring oxygen saturation directly through a blood sample) and changes in blood volume in the skin, producing a photoplethysmogram that may be further processed into other measurements.The pulse oximeter may be incorporated into a multiparameter patient monitor. Most monitors also display the pulse rate. Portable, battery-operated pulse oximeters are also available for transport or home blood-oxygen monitoring.
Advantages
Pulse oximetry is particularly convenient for noninvasive continuous measurement of blood oxygen saturation. In contrast, blood gas levels must otherwise be determined in a laboratory on a drawn blood sample. Pulse oximetry is useful in any setting where a patient's oxygenation is unstable, including intensive care, operating, recovery, emergency and hospital ward settings, pilots in unpressurized aircraft, for assessment of any patient's oxygenation, and determining the effectiveness of or need for supplemental oxygen. Although a pulse oximeter is used to monitor oxygenation, it cannot determine the metabolism of oxygen, or the amount of oxygen being used by a patient. For this purpose, it is necessary to also measure carbon dioxide (CO2) levels. It is possible that it can also be used to detect abnormalities in ventilation. However, the use of a pulse oximeter to detect hypoventilation is impaired with the use of supplemental oxygen, as it is only when patients breathe room air that abnormalities in respiratory function can be detected reliably with its use. Therefore, the routine administration of supplemental oxygen may be unwarranted if the patient is able to maintain adequate oxygenation in room air, since it can result in hypoventilation going undetected.
Because of their simplicity of use and the ability to provide continuous and immediate oxygen saturation values, pulse oximeters are of critical importance in emergency medicine and are also very useful for patients with respiratory or cardiac problems, especially COPD, or for diagnosis of some sleep disorders such as apnea and hypopnea.[8] For patients with obstructive sleep apnea, pulse oximetry readings will be in the 70–90% range for much of the time spent attempting to sleep.
Portable battery-operated pulse oximeters are useful for pilots operating in non-pressurized aircraft above 10,000 feet (3,000 m) or 12,500 feet (3,800 m) in the U.S.where supplemental oxygen is required. Portable pulse oximeters are also useful for mountain climbers and athletes whose oxygen levels may decrease at high altitudes or with exercise. Some portable pulse oximeters employ software that charts a patient's blood oxygen and pulse, serving as a reminder to check blood oxygen levels.[citation needed]
Connectivity advancements have made it possible for patients to have their blood oxygen saturation continuously monitored without a cabled connection to a hospital monitor, without sacrificing the flow of patient data back to bedside monitors and centralized patient surveillance
systems.
For patients with COVID-19, pulse oximetry helps with early detection of silent hypoxia, in which the patients still look and feel comfortable, but their SpO2 is perilously low. This happens to patients either in the hospital or at home. Low SpO2 may indicate severe COVID-19-related pneumonia, requiring a ventilator.
Limitations
Pulse oximetry solely measures hemoglobin saturation, not ventilation and is not a complete measure of respiratory sufficiency. It is not a substitute for blood gases checked in a laboratory, because it gives no indication of base deficit, carbon dioxide levels, blood pH, or bicarbonate (HCO3?) concentration. The metabolism of oxygen can be readily measured by monitoring expired CO2, but saturation figures give no information about blood oxygen content. Most of the oxygen in the blood is carried by hemoglobin; in severe anemia, the blood contains less hemoglobin, which despite being saturated cannot carry as much oxygen.[citation needed]
Because pulse oximeter devices are calibrated in healthy subjects, the accuracy is poor for critically ill patients and preterm newborns
Erroneously low readings may be caused by hypoperfusion of the extremity being used for monitoring (often due to a limb being cold, or from vasoconstriction secondary to the use of vasopressor agents); incorrect sensor application; highly calloused skin; or movement (such as shivering), especially during hypoperfusion. To ensure accuracy, the sensor should return a steady pulse and/or pulse waveform. Pulse oximetry technologies differ in their abilities to provide accurate data during conditions of motion and low perfusion.
Obesity, hypotension (low blood pressure), and some hemoglobin variants can reduce the accuracy of the results.[8] Some home pulse oximeters have low sampling rates which can significantly underestimate dips in blood oxygen levels.
The accuracy of pulse oximetry deteriorates considerably for readings below 80%.
Pulse oximetry also is not a complete measure of circulatory oxygen sufficiency. If there is insufficient bloodflow or insufficient hemoglobin in the blood (anemia), tissues can suffer hypoxia despite high arterial oxygen saturation.
Since pulse oximetry measures only the percentage of bound hemoglobin, a falsely high or falsely low reading will occur when hemoglobin binds to something other than oxygen:
Hemoglobin has a higher affinity to carbon monoxide than it does to oxygen, and a high reading may occur despite the patient's actually being hypoxemic. In cases of carbon monoxide poisoning, this inaccuracy may delay the recognition of hypoxia (low cellular oxygen level).
Cyanide poisoning gives a high reading because it reduces oxygen extraction from arterial blood. In this case, the reading is not false, as arterial blood oxygen is indeed high in early cyanide poisoning.[clarification needed]
Methemoglobinemia characteristically causes pulse oximetry readings in the mid-80s.
COPD [especially chronic bronchitis] may cause false readings.
A noninvasive method that allows continuous measurement of the dyshemoglobins is the pulse CO-oximeter, which was built in 2005 by Masimo.[16] By using additional wavelengths,it provides clinicians a way to measure the dyshemoglobins, carboxyhemoglobin, and methemoglobin along with total hemoglobin.
Research has suggested that error rates in common pulse oximeter devices may be higher for adults with dark skin color, leading to claims of encoding systemic racism in countries with multi-racial populations such as the United States.[19][20] Pulse oximetry is used for the screening of sleep apnea and other types of sleep-disordered breathing[8] which in the United States are conditions more prevalent among minorities
Equipment
In addition to pulse oximeters for professional use, many inexpensive "consumer" models are available. Opinions vary about the reliability of consumer oximeters; a typical comment is "The research data on home monitors has been mixed, but they tend to be accurate within a few percentage points".[24] Some smart watches with activity tracking incorporate an oximeter function. An article on such devices, in the context of diagnosing COVID-19 infection, quoted Jo?o Paulo Cunha of the University of Porto, Portugal: "these sensors are not precise, that's the main limitation ... the ones that you wear are only for the consumer level, not for the clinical level". Pulse oximeters used for diagnosis of conditions such as COVID-19 should be Class IIB medical grade oximeters. Class IIB oximeters can be used on patients of all skin colors, low pigmentation and in the presence of motion.[citation needed] When a pulse oximeter is shared between two patients, it should be either cleaned with alcohol wipes after each use or a disposable probe or finger cover to be used to prevent cross-infection.
According to a report by iData Research the US pulse oximetry monitoring market for equipment and sensors was over $700 million in 2011.
Mobile apps
Mobile app pulse oximeters use the flashlight and the camera of the phone, instead of infrared light used in conventional pulse oximeters. However, apps don't generate as accurate readings because the camera can't measure the light reflection at two wavelengths, so the oxygen saturation readings that are obtained through an app on a smartphone are inconsistent for clinical use. At least one study has suggested these are not reliable relative to clinical pulse oximeters
Mechanism
Absorption spectra of oxygenated hemoglobin (HbO2) and deoxygenated hemoglobin (Hb) for red and infrared wavelengths
The inner side of a pulse oximeter
A blood-oxygen monitor displays the percentage of blood that is loaded with oxygen. More specifically, it measures what percentage of hemoglobin, the protein in blood that carries oxygen, is loaded. Acceptable normal SaO2 ranges for patients without pulmonary pathology are from 95 to 99 percent.[citation needed] For a person breathing room air at or near sea level, an estimate of arterial pO2 can be made from the blood-oxygen monitor "saturation of peripheral oxygen" (SpO2) reading.[citation needed]
Mode of operation
A typical pulse oximeter uses an electronic processor and a pair of small light-emitting diodes (LEDs) facing a photodiode through a translucent part of the patient's body, usually a fingertip or an earlobe. One LED is red, with wavelength of 660 nm, and the other is infrared with a wavelength of 940 nm. Absorption of light at these wavelengths differs significantly between blood loaded with oxygen and blood lacking oxygen. Oxygenated hemoglobin absorbs more infrared light and allows more red light to pass through. Deoxygenated hemoglobin allows more infrared light to pass through and absorbs more red light. The LEDs sequence through their cycle of one on, then the other, then both off about thirty times per second which allows the photodiode to respond to the red and infrared light separately and also adjust for the ambient light baseline.
The amount of light that is transmitted (in other words, that is not absorbed) is measured, and separate normalized signals are produced for each wavelength. These signals fluctuate in time because the amount of arterial blood that is present increases (literally pulses) with each heartbeat. By subtracting the minimum transmitted light from the transmitted light in each wavelength, the effects of other tissues are corrected for, generating a continuous signal for pulsatile arterial blood.
The ratio of the red light measurement to the infrared light measurement is then calculated by the processor (which represents the ratio of oxygenated hemoglobin to deoxygenated hemoglobin), and this ratio is then converted to SpO2 by the processor via a lookup table based on the Beer–Lambert law.
The signal separation also serves other purposes: a plethysmograph waveform ("pleth wave") representing the pulsatile signal is usually displayed for a visual indication of the pulses as well as signal quality, and a numeric ratio between the pulsatile and baseline absorbance ("perfusion index") can be used to evaluate perfusion.
{\displaystyle {\ce {SpO_2}}={\frac {{\ce {HbO2}}}{{\ce {{HbO2}+Hb}}}}}
where HbO2 is oxygenated hemoglobin (oxyhemoglobin) and Hb is deoxygenated hemoglobin.
Derived measurements
Due to changes in blood volumes in the skin, a plethysmographic variation can be seen in the light signal received (transmittance) by the sensor on an oximeter. The variation can be described as a periodic function, which in turn can be split into a DC component (the peak value)[a] and an AC component (peak minus trough). The ratio of the AC component to the DC component, expressed as a percentage, is known as the (peripheral) perfusion index (Pi) for a pulse, and typically has a range of 0.02% to 20%.[33] An earlier measurement called the pulse oximetry plethysmographic (POP) only measures the "AC" component, and is derived manually from monitor pixels
test code
#include <Wire.h>
#include "MAX30105.h"
#include "spo2_algorithm.h"
#include "SSD1306Ascii.h"
#include "SSD1306AsciiWire.h"
MAX30105 particleSensor;
SSD1306AsciiWire oled;
#define MAX_BRIGHTNESS 255
#if defined(__AVR_ATmega328P__) || defined(__AVR_ATmega168__)
//Arduino Uno doesn't have enough SRAM to store 50 samples of IR led data and red led data in 32-bit format
//To solve this problem, 16-bit MSB of the sampled data will be truncated. Samples become 16-bit data.
uint16_t irBuffer[50]; //infrared LED sensor data
uint16_t redBuffer[50]; //red LED sensor data
#else
uint32_t irBuffer[50]; //infrared LED sensor data
uint32_t redBuffer[50]; //red LED sensor data
#endif
int32_t spo2; //SPO2 value
int8_t validSPO2; //indicator to show if the SPO2 calculation is valid
int32_t heartRate; //heart rate value
int8_t validHeartRate; //indicator to show if the heart rate calculation is valid
void setup()
{
Serial.begin(115200); // initialize serial communication at 115200 bits per second:
oled.begin(&Adafruit128x64, 0x3C);
oled.setFont(Arial14);
// Initialize sensor
if (!particleSensor.begin(Wire, I2C_SPEED_FAST)) //Use default I2C port, 400kHz speed
{
Serial.println(F("MAX30105 was not found. Please check wiring/power."));
while (1);
}
particleSensor.setup(55, 4, 2, 200, 411, 4096); //Configure sensor with these settings
}
void loop()
{
//read the first 50 samples, and determine the signal range
for (byte i = 0 ; i < 50 ; i++)
{
while (particleSensor.available() == false) //do we have new data?
particleSensor.check(); //Check the sensor for new data
redBuffer[i] = particleSensor.getRed();
irBuffer[i] = particleSensor.getIR();
particleSensor.nextSample(); //We're finished with this sample so move to next sample
Serial.print(F("red="));
Serial.print(redBuffer[i], DEC);
Serial.print(F(", ir="));
Serial.println(irBuffer[i], DEC);
}
//calculate heart rate and SpO2 after first 50 samples (first 4 seconds of samples)
maxim_heart_rate_and_oxygen_saturation(irBuffer, 50, redBuffer, &spo2, &validSPO2, &heartRate, &validHeartRate);
//Continuously taking samples from MAX30102. Heart rate and SpO2 are calculated every 1 second
while (1)
{
//dumping the first 25 sets of samples in the memory and shift the last 25 sets of samples to the top
for (byte i = 25; i < 50; i++)
{
redBuffer[i - 25] = redBuffer[i];
irBuffer[i - 25] = irBuffer[i];
}
//take 25 sets of samples before calculating the heart rate.
for (byte i = 25; i < 50; i++)
{
while (particleSensor.available() == false) //do we have new data?
particleSensor.check(); //Check the sensor for new data
redBuffer[i] = particleSensor.getRed();
irBuffer[i] = particleSensor.getIR();
particleSensor.nextSample(); //We're finished with this sample so move to next sample
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);
}
//After gathering 25 new samples recalculate HR and 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("Not valid"));
}
}
Esp8266 Pulse-oximeter
*PCBWay community is a sharing platform. We are not responsible for any design issues and parameter issues (board thickness, surface finish, etc.) you choose.
- Comments(0)
- Likes(0)
- 0 USER VOTES
- YOUR VOTE 0.00 0.00
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
More by Sreeram.zeno
- Esp12-F Cluster V1.0 The ESP8266 is a low-cost Wi-Fi microchip, with built-in TCP/IP networking software, and microcontro...
- TB6612FNG Motor Driver The TB6612FNG Motor Driver can control up to two DC motors at a constant current of 1.2A (3.2A peak)...
- Sunny Buddy Solar Charger v1.0 This is the Sunny Buddy, a maximum power point tracking (MPPT) solar charger for single-cell LiPo ba...
- Diy 74HC4051 8 Channel Mux Breakout Pcb The 74HC4051; 74HCT4051 is a single-pole octal-throw analog switch (SP8T) suitable for use in analog...
- Diy RFM97CW Breakout Pcb IntroductionLoRa? (standing for Long Range) is a LPWAN technology, characterized by a long range ass...
- ProMicro-RP2040 Pcb The RP2040 is a 32-bit dual ARM Cortex-M0+ microcontroller integrated circuit by Raspberry Pi Founda...
- Serial Basic CH340G Pcb A USB adapter is a type of protocol converter that is used for converting USB data signals to and fr...
- Mp3 Shield For Arduino Hardware OverviewThe centerpiece of the MP3 Player Shield is a VS1053B Audio Codec IC. The VS1053B i...
- MRK CAN Shield Arduino The CAN-BUS Shield provides your Arduino or Redboard with CAN-BUS capabilities and allows you to hac...
- AVR ISP Programmer AVR is a family of microcontrollers developed since 1996 by Atmel, acquired by Microchip Technology ...
- Diy Arduino mega Pcb The Arduino Mega 2560 is a microcontroller board based on the ATmega2560. It has 54 digital input/ou...
- Max3232 Breakout Board MAX3232 IC is extensively used for serial communication in between Microcontroller and a computer fo...
- Line Follower Pcb The Line Follower Array is a long board consisting of eight IR sensors that have been configured to ...
- HMC6343 Accelerometer Module The HMC6343 is a solid-state compass module with tilt compensation from Honeywell. The HMC6343 has t...
- RTK2 GPS Module For Arduino USBThe USB C connector makes it easy to connect the ZED-F9P to u-center for configuration and quick ...
- Arduino Explora Pcb The Arduino Esplora is a microcontroller board derived from the Arduino Leonardo. The Esplora differ...
- Diy Stepper Motor Easy Driver A motor controller is a device or group of devices that can coordinate in a predetermined manner the...
- Diy Arduino Pro Mini The Arduino Pro Mini is a microcontroller board based on the ATmega168 . It has 14 digital input/out...
-
-
-
3D printed Enclosure Backplate for Riden RD60xx power supplies
55 0 0 -
-
-
-
Sega Master System RGB Encoder Switcher Z80 QSB v1.2
57 0 0 -
18650 2S2P Battery Charger, Protection and 5V Output Board
78 0 0 -
High Precision Thermal Imager + Infrared Thermometer | OpenTemp
420 0 6 -
Sony PlayStation Multi Output Frequency Oscillator (MOFO) v1
129 0 2