Hello everyone!
As I said in the previous blog, I will continue with the first sensor from the received kit, namely the MAX30100 sensor. So far I have encountered some problems on the software side. I thought to look for "MAX30100" in the library manager of the Arduino IDE, and luckily I found some libraries. I managed to get some results with the "MAX30100lib" library, but I will come back to this.
Now, some general information about the MAX30100.
MAX30101 is a high-sensitivity pulse oximeter and heart-rate sensor. It can run on either 3.3V or 5V power supply, and it communicates with the Arduino board over I2C interface, with additional functionality provided by INT pin.
Pin Type = Pin Function:
- GND = Ground Pin
- VIN = Voltage Input
- SCL = Serial Clock
- SDA = Serial Data
- INT = Active low interrupt
MAX30100 is a module that integrates a pulse oximeter and a heart-rate monitor. Its internal structure includes LEDs, photodetectors, optical elements, and low-noise electronics with ambient light rejection. MAX30100 integrates drivers for green or red LEDs, and IR, to modulate LED pulses for SpO2 and HR measurements. Oxygen-saturated blood absorbs light differently than unsaturated blood. Pulse oximeters measure the oxygen saturation in a person's blood. Or, in more specific, medical terms, the percentage of hemoglobin molecules in blood that is saturated with oxygen. In a healthy adult, these readings go from 94% to 100%, normal values.
The device has two LEDs, one of which emits red light and the other of which emits infrared light. The wavelength of red light is 660nm, whereas the wavelength of infrared light is 940nm. Only infrared light is required to determine the pulse rate. The amounts of oxygen in the blood are measured using both red and infrared light. When the heart pumps blood, the amount of oxygenated blood in the blood increases as a result of having more blood. The amount of oxygenated blood reduces when the heart relaxes. The pulse rate is calculated by measuring the time between the increase and decrease of oxygenated blood. Deoxygenated blood absorbs red light and passes more infrared light, whereas oxygenated blood absorbs red light and passes more infrared light. The light is absorbed by the oxygenated blood, while the rest is reflected through the finger and falls onto the detector, which is then processed.
The max30100 pulse oximeter heart rate sensor module's functional block is shown below.
The module includes two wavelength-specific LEDs (IR and RED), as well as a photodetector to detect the received light.
The photodiode result is transferred to the analog-to-digital converter, from which digital data will be sent to the digital data register through a filter. The data from the register may be gathered and transferred to the microcontroller using the I2C communication protocol.
As the MAX30100 is placed on a shield (as it is known for Arduino platforms), and thanks to the I2C communication protocol, the number of connections between the Arduino and the MAX30100 are quite small. However, I also attach a simple electronic circuit:
Regarding the software part, I installed the MAX3010x libraries that I found in the library manager in the Arduino IDE and analyzed them a little. I kept the library "MAX30100lib" which also has some examples of sketches. The first step was taken, I found a library to work with the hardware. Now, I have to run a sketch.
A simple sketch allows us to find out blood saturation and heart rate, exactly what interests us. I ran the sketch, we can see the results displayed in Serial Monitor:
https://drive.google.com/file/d/1Mf3TXtcTgDCBXdfdylKH4T8pkWYDUGOB/view?usp=sharing
As the Arduino platform is compatible with many shields, I added an LCD display, something quite common. I used an I2C adapter, thus reducing the connections quite a bit. The obtained result: https://drive.google.com/file/d/1MgE_xHuwfI6tfPhqhf4qr6FYKpK6s5AQ/view?usp=sharing
As for the performance of the measurements, I can't say much, measurement errors are present, sometimes an abnormal value is displayed. It is said that a normal resting heart rate for adults ranges from 60 to 100 beats per minute. and the ideal oxygen saturation is 100%, and if it fluctuates, it is not allowed to fall below 95%. Problems already start to appear if the oxygen saturation drops below 90%. Unfortunately, I don't have a medical device that records these parameters, it would have been good for a comparison of the measurements. So far, I seem to be healthy.
Given the fact that this is rather a beginner's project, there are factors that can cause damage, so we assume that the performance of the MAX30100 sensor could be unnecessarily affected by causes such as the calculation and conversion formulas in the software library.
The next blog with the graphic interface created in Node Red will follow, but first I will solve some software problems.
Web references
https://www.farnell.com/datasheets/2369086.pdf
https://www.hnhcart.com/blogs/sensors-modules/a
Greetings!
Top Comments