I connected the purple oximeter (GY-MAX30100) to the Arduino Uno with the following connections.

VIN              5V
GND              GND
SCL              SCL
SDA              SDA
INT              D2

It shows me inaccurate measurements.

13:16:02.851 -> Pulse oxymeter test!
13:16:02.851 -> BEAT
13:16:02.851 -> BPM: 8616.35 | SaO2: 92.01%
13:16:03.055 -> BEAT
13:16:03.055 -> BPM: 4313.73 | SaO2: 92.66%
13:16:03.089 -> BEAT
13:16:03.089 -> BPM: 1209.15 | SaO2: 92.74%

I used this sketch from github https://github.com/xcoder123/MAX30100/blob/master/max30100.ino

This is the sensorenter image description here


I have run an I2C scanner and this is the result: I2C device found on address 0x57. The library has the same address hard coded in it.

  • You might want to include a link to the library that sketch uses. Given how specific your question is, you might not get much help here. (Your potential pool of help is going to be people who have used the same sensor, with the same library, using the same sketch.) I'd suggest contacting the author of the sketch. – Duncan C Aug 26 '19 at 17:48
  • BTW, how does that sensor work? Every pulse-ox sensor I've ever seen shines a red light through a finger or other body part, and puts a sensor on the other side. That sensor doesn't appear to have separate emitter and sensor parts. – Duncan C Aug 26 '19 at 17:49
  • @DuncanC - This sensor has a visible light LED, IR LED and a Photodiode all built in :) – VE7JRO Aug 26 '19 at 18:17
  • Ok, but it doesn't have a gap into which you would put your finger. Does it shine light into your body and then measure the light reflected back? – Duncan C Aug 26 '19 at 18:18
  • @DuncanC - All you have to do is put your finger on the sensor. datasheets.maximintegrated.com/en/ds/MAX30100.pdf – VE7JRO Aug 26 '19 at 18:23

There are 2 newer libraries you can try. I have used both with a MAX30102 and they work.

The first one is here: SparkFun_MAX3010x_Sensor_Library. There are several sketches included, and this one worked for me: Example5_HeartRate.

The other library I had success with is this one: Protocentral. It has a test sketch that writes the data to the serial port, but you can add Serial.println() statements to it to see if the data "makes sense".

  • Still nothing, I checked the connections... – Janko Pjer Aug 27 '19 at 8:09
  • What is the output from the Example5_HeartRate sketch? – VE7JRO Aug 27 '19 at 13:27
  • Sorry for late response, it just says Initializing... – Janko Pjer Aug 30 '19 at 8:20
  • Cool, let's try a slower I2C speed. On line 47, change the speed from I2C_SPEED_FAST to I2C_SPEED_STANDARD. If this doesn't work, we need to look at the library because we are not executing line 52. The error handling on line 164 of the .cpp file is the next step. It's looking for a "partID" readPartID(). You could try commenting out return false;, but that decision I leave up to you. – VE7JRO Aug 30 '19 at 15:50

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.