element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet & Tria Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • About Us
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      • Japan
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Vietnam
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
Summer of Sensors Design Challenge
  • Challenges & Projects
  • Design Challenges
  • Summer of Sensors Design Challenge
  • More
  • Cancel
Summer of Sensors Design Challenge
Blog Summer of Sensors Design Challenge - Blog No. 2
  • Blog
  • Forum
  • Documents
  • Design Challenge
  • Leaderboard
  • Polls
  • Files
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join Summer of Sensors Design Challenge to participate - click to join for free!
  • Share
  • More
  • Cancel
Group Actions
  • Group RSS
  • More
  • Cancel
Engagement
  • Author Author: me_Cris
  • Date Created: 26 Oct 2022 4:03 PM Date Created
  • Views 604 views
  • Likes 8 likes
  • Comments 1 comment
  • max30100
Related
Recommended

Summer of Sensors Design Challenge - Blog No. 2

me_Cris
me_Cris
26 Oct 2022

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.
image
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:
image


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:
image

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!

  • Sign in to reply

Top Comments

  • DAB
    DAB over 3 years ago +1
    Nice intro. I know my own O2 readings run about 98% over multiple readings during doctor visits, so the guidelines need to be adjusted to account for each individual.
  • DAB
    DAB over 3 years ago

    Nice intro.

    I know my own O2 readings run about 98% over multiple readings during doctor visits, so the guidelines need to be adjusted to account for each individual.

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • More
    • Cancel
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2025 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube