Giter Club home page Giter Club logo

arduino-max30100's Introduction

Arduino-MAX30100

Build Status

Arduino library for the Maxim Integrated MAX30100 oximetry / heart rate sensor.

MAX30100

Disclaimer

The library is offered only for educational purposes and it is not meant for medical uses. Use it at your sole risk.

Notes

Maxim integrated stopped the production of the MAX30100 in favor of MAX30101 and MAX30102. Therefore this library won't be seeing any further improvement, besides fixes.

IMPORTANT: when submitting issues, make sure to fill ALL the fields indicated in the template text of the issue. The issue will be marked as invalid and closed immediately otherwise.

Hardware

This library has been tested with the MikroElektronika Heart rate click daughterboard:

http://www.mikroe.com/click/heart-rate/

along with an Arduino UNO r3. Any Arduino supporting the Wire library should work.

The only required connection to the sensor is the I2C bus (SDA, SCL lines, pulled up).

An example which shows a possible way to wire up the sensor is shown in extras/arduino-wiring.pdf

Note: The schematics above shows also how to wire up the interrupt line, which is currently not used by the library.

Pull-ups

Since the I2C interface is clocked at 400kHz, make sure that the SDA/SCL lines are pulled up by 4,7kOhm or less resistors.

Architecture

The library offers a low-level driver class, MAX30100. This component allows for low level communication with the device.

A rather simple but working implementation of the heart rate and SpO2 calculation can be found in the PulseOximeter class.

This high level class sets up the sensor and data processing pipelines in order to offer a very simple interface to the data:

  • Sampling frequency set to 100Hz
  • 1600uS pulse width, full sampling 16bit dynamic
  • IR LED current set to 50mA
  • Heart-rate + SpO2 mode

The PulseOximeter class is not optimised for battery-based projects.

Examples

The included examples show how to use the PulseOximeter class:

  • MAX30100_Minimal: a minimal example that dumps human-readable results via serial
  • MAX30100_Debug: used in conjunction with the Processing pde "rolling_graph" (extras folder), to show the sampled data at various processing stages
  • MAX30100_RawData: demonstrates how to access raw data from the sensor
  • MAX30100_Tester: this sketch helps to find out potential issues with the sensor

Troubleshooting

Run the MAX30100_Tester example to inspect the state of your rig. When run with a properly connected sensor, it should print:

Initializing MAX30100..Success
Enabling HR/SPO2 mode..done.
Configuring LEDs biases to 50mA..done.
Lowering the current to 7.6mA..done.
Shutting down..done.
Resuming normal operation..done.
Sampling die temperature..done, temp=24.94C
All test pass. Press any key to go into sampling loop mode

Pressing any key, a data stream with the raw values from the photodiode sampling red and infrared is presented. With no finger on the sensor, both values should be close to zero and jump up when a finger is positioned on top of the sensor.

Typical issues when attempting to run the examples:

I2C error or garbage data

In particular when the tester fails with:

Initializing MAX30100..FAILED: I2C error

This is likely to be caused by an improper pullup setup for the I2C lines. Make sure to use 4,7kOhm resistors, checking if the breakout board in use is equipped with pullups.

Logic level compatibility

If you're using a 5V-based microcontroller but the sensor breakout board pulls SDA and SCL up to 3.3V, you should ensure that its inputs are compatible with the 3.3V logic levels. An original Atmel ATMega328p considers anything above 3V as HIGH, so it might work well without level shifting hardware.

Since the MAX30100 I2C pins maximum ratings aren't bound to Vdd, a cheap option to avoid level shifting is to simply pull SDA and SCL up to 5V instead of 3.3V.

Sketchy beat frequency readouts

The beat detector uses the IR LED to track the heartbeat. The IR LED is biased by default at 50mA on all examples, excluding the Tester (which sets it to 7.6mA). This value is somehow critical and it must be experimented with.

The current can be adjusted using PulseOximeter::setIRLedCurrent(). Check the MAX30100_Minimal example.

Advanced debugging

Two tools are available for further inspection and error reporting:

  • extras/recorder: a python script that records a session that can be then analysed with the provided collection of jupyter notebooks
  • extras/rolling_graph: to be used in conjunction with MAX30100_Debug example, it provides a visual feedback of the LED tracking and heartbeat detector

Both tools have additional information on the README.md in their respective directories.

Tested devices

This combination works without level shifting devices at 400kHz I2C clock rate.

  • Arduino UNO r3, MAX30100 custom board with 4.7kOhm pullups to 5V to SDA, SCL, INT

As above, working at 400kHz

  • Sparkfun Arduino Pro 328p 8MHz 3.3V, Mikroelektronika Heart rate click

Even if this combination works (MAX30100 communication), the slower clock speed fails to deliver the required performance deadlines for a 100Hz sampling.

Troubled breakouts

This breakout board: http://www.sunrom.com/m/5337

Has pullups on the Vdd (1.8V) line. To make it work, the three 4k7 pullups must be desoldered and external 4.7k pullups to Vcc of the MCU must be added.

arduino-max30100's People

Contributors

nicolaskirchho avatar njh avatar oxullo avatar per1234 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

arduino-max30100's Issues

i will ask if this result is right

Troubleshooting checklist

  • I read the README (on master) thoroughly
  • I ran the MAX30100_Tester and I'm going to paste the output down below
  • I filled in all the details of my setup down below

Description of the issue

Output from MAX30100_Tester example

Details of my setup

  • Arduino hardware:mega 2560
  • MAX30100 breakout:connection VIN=>5V,SCL and SDA(with4.7k resistor)=>SCLandSDA, GND=>GND
  • Arduino framework version:
  • MAX30100 library version:

image

any workaround for raspberry pi 3

hi, I could get the desired results in arduino. Further, any leads/idea on raspberry pi 3 to hook on getting the pulse-oxy and HB values with python code? thanks.

Extracting Temperature from the MAX30100

I didn't see any provisions in your library for extraction of the temperature measured by the sensor. Is that correct, or am I missing it? How might I go about adding that functionality?

Thanks,
Steven

Getting a rolling graph

First off awesome work best code I have seen out there. My issue is trying to get a rolling graph so how could I go about that?

IoT Confusion

I am trying to use the MAX30100_Minimal code and add to it to connect to ThingSpeak, an IoT platform. I added the same lines of code that I have used for previous i2c sensors to send data to Thingspeak, but for some reason when I add them to the MAX30100 code the serial monitor begins displaying values of 0 for beats for minute and SpO2 percentage. The temperature continues to read correctly, so I do not know what the problem is?

Stuck at "MAX30100 Initializing.."

Troubleshooting checklist

  • [OK] I read the README (on master) thoroughly
  • [OK] I ran the MAX30100_Tester and I'm going to paste the output down below
  • [OK] I filled in all the details of my setup down below

Description of the issue

Hello,
I just run MAX30100_Tester and get stuck in serial monitor at "Initializing MAX30100.."
Why was that happened?
My MAX30100 - Arduino Wiring:
VIN -> 3.3V
GND -> GND
SDA -> SDA
SCL -> SCL
INT -> D2

Regards,
Nazmi
max30100 stuck

Output from MAX30100_Tester example

Initializing MAX30100..

Details of my setup

Arduino+MAX30100(RCWL-0530) Unable to begin MAX30100

Hi, thank you for developing such code for MAX30100!

But as my title says, after connecting the sensor to arduino uno, the serial console shows nothing. However, after I unplugged the sensor from my breadboard, the serial console starts to print "Heart rate:0.00bpm / SpO2:0%." After I inserted some "Serial.println();" in the MAX30100.cpp, I found out that the code stopped at this line: "Wire.write(data);" in "MAX30100::writeRegister" during the "MAX30100::begin" process.

I really cannot solve, could you help me through this?

only until the initialization can not be a failed or successful message

Troubleshooting checklist

  • [yes] I read the README (on master) thoroughly
  • [yes] I ran the MAX30100_Tester and I'm going to paste the output down below
  • [yes] I filled in all the details of my setup down below

Description of the issue

i have a problem with my rcwl max30100, i have compiled according to wiring document. I use arduino uno, when I compile code test, minimal, and debug I only got intializing max30100 only. did not get a success or failed message. thanks maybe someone can help

Output from MAX30100_Tester example

image

Details of my setup

  • Arduino hardware: arduino uno
  • MAX30100 breakout:
    gnd - gnd
    3.3v - vin
    int - d2 and 4.7k 3.3v
    rd and ird - 3.3v and gnd 0.1uF
    scl - a5 and 4.7k 3.3v
    sda - a4 and 4.7k 3.3v
  • Arduino framework version: 1.8.5
  • MAX30100 library version: new version

Wrong values

Hi
I'm using a GY-MAX30100 and I've noticed wrong values

��BInitializing pulse oximeter..SUCCESS Heart rate:0.00bpm / SpO2:0% / temp:33.13C Heart rate:0.00bpm / SpO2:0% / temp:34.00C Heart rate:0.00bpm / SpO2:0% / temp:34.00C Beat! Heart rate:29.52bpm / SpO2:0% / temp:32.63C Beat! Heart rate:48.40bpm / SpO2:0% / temp:32.63C Heart rate:48.40bpm / SpO2:0% / temp:32.63C Beat! Heart rate:35.33bpm / SpO2:94% / temp:32.63C Heart rate:35.33bpm / SpO2:94% / temp:32.69C Beat! Heart rate:31.88bpm / SpO2:94% / temp:32.69C Heart rate:31.88bpm / SpO2:94% / temp:32.69C Beat! Heart rate:30.79bpm / SpO2:94% / temp:32.69C Heart rate:30.79bpm / SpO2:94% / temp:33.69C Beat! Beat! Heart rate:51.09bpm / SpO2:94% / temp:33.69C Beat! Heart rate:62.31bpm / SpO2:94% / temp:33.31C Beat! Heart rate:84.61bpm / SpO2:94% / temp:33.31C Heart rate:84.61bpm / SpO2:94% / temp:33.19C Beat! Heart rate:40.21bpm / SpO2:94% / temp:33.19C Heart rate:40.21bpm / SpO2:94% / temp:32.88C Beat! Heart rate:33.35bpm / SpO2:94% / temp:32.88C Heart rate:33.35bpm / SpO2:94% / temp:32.50C Beat! Heart rate:31.22bpm / SpO2:94% / temp:32.50C Beat! Heart rate:31.49bpm / SpO2:94% / temp:33.31C Heart rate:31.49bpm / SpO2:94% / temp:33.31C Beat! Heart rate:35.66bpm / SpO2:94% / temp:32.81C Beat! Heart rate:58.77bpm / SpO2:95% / temp:32.81C Beat! Heart rate:43.20bpm / SpO2:95% / temp:33.50C Beat! Heart rate:76.64bpm / SpO2:95% / temp:33.50C Heart rate:76.64bpm / SpO2:95% / temp:33.31C Beat! Heart rate:39.73bpm / SpO2:94% / temp:33.31C Heart rate:39.73bpm / SpO2:94% / temp:33.81C Beat! Heart rate:33.21bpm / SpO2:94% / temp:33.81C Heart rate:33.21bpm / SpO2:94% / temp:33.31C Beat! Heart rate:31.85bpm / SpO2:94% / temp:33.31C Beat! Heart rate:37.49bpm / SpO2:95% / temp:34.38C Beat! Heart rate:57.87bpm / SpO2:95% / temp:34.38C Heart rate:57.87bpm / SpO2:95% / temp:33.38C Beat! Heart rate:37.09bpm / SpO2:95% / temp:33.38C Beat! Heart rate:34.44bpm / SpO2:94% / temp:33.81C Heart rate:34.44bpm / SpO2:94% / temp:33.81C

Run the test

Initializing MAX30100..Success Enabling HR/SPO2 mode..done. Configuring LEDs biases to 50mA..done. Lowering the current to 7.6mA..done. Shutting down..done. Resuming normal operation..done. Sampling die temperature..done, temp=31.62C All test pass. Press any key to go into sampling loop mode

Then run the minimal again

��c ��Initializing pulse oximeter..SUCCESS Heart rate:0.00bpm / SpO2:0% / temp:31.87C Heart rate:0.00bpm / SpO2:0% / temp:33.38C Beat! Heart rate:34.65bpm / SpO2:0% / temp:33.38C Heart rate:34.65bpm / SpO2:0% / temp:32.13C Beat! Beat! Heart rate:54.65bpm / SpO2:94% / temp:32.13C Beat! Heart rate:68.31bpm / SpO2:94% / temp:32.81C Beat! Heart rate:103.46bpm / SpO2:94% / temp:32.81C Heart rate:103.46bpm / SpO2:94% / temp:33.00C Beat! Heart rate:41.83bpm / SpO2:94% / temp:33.00C Heart rate:41.83bpm / SpO2:94% / temp:33.63C Beat! Heart rate:33.78bpm / SpO2:94% / temp:33.63C Beat! Heart rate:33.48bpm / SpO2:94% / temp:33.63C Heart rate:33.48bpm / SpO2:94% / temp:33.63C Beat! Heart rate:37.77bpm / SpO2:95% / temp:32.38C Beat! Beat! Heart rate:63.69bpm / SpO2:95% / temp:32.38C Heart rate:63.69bpm / SpO2:95% / temp:32.38C Beat! Heart rate:56.15bpm / SpO2:94% / temp:32.38C Beat! Heart rate:39.60bpm / SpO2:94% / temp:32.81C Heart rate:39.60bpm / SpO2:94% / temp:32.81C Beat! Heart rate:37.54bpm / SpO2:94% / temp:32.88C Beat! Heart rate:62.24bpm / SpO2:95% / temp:32.88C Beat! Heart rate:44.12bpm / SpO2:95% / temp:33.50C Beat! Heart rate:77.72bpm / SpO2:95% / temp:33.50C Heart rate:77.72bpm / SpO2:95% / temp:32.69C Beat! Heart rate:39.69bpm / SpO2:95% / temp:32.69C Heart rate:39.69bpm / SpO2:95% / temp:33.00C Beat! Heart rate:33.20bpm / SpO2:95% / temp:33.00C Heart rate:33.20bpm / SpO2:95% / temp:32.50C Beat! Heart rate:31.16bpm / SpO2:95% / temp:32.50C Heart rate:31.16bpm / SpO2:95% / temp:32.69C Beat! Heart rate:30.41bpm / SpO2:95% / temp:32.69C Heart rate:30.41bpm / SpO2:95% / temp:32.69C Beat! Heart rate:30.13bpm / SpO2:95% / temp:32.69C Heart rate:30.13bpm / SpO2:95% / temp:33.31C Beat! Heart rate:30.01bpm / SpO2:95% / temp:33.31C Heart rate:30.01bpm / SpO2:95% / temp:32.38C Beat! Heart rate:29.88bpm / SpO2:95% / temp:32.38C Heart rate:29.88bpm / SpO2:95% / temp:32.19C Beat! Heart rate:29.91bpm / SpO2:95% / temp:32.19C Heart rate:29.91bpm / SpO2:95% / temp:32.69C Beat! Heart rate:29.93bpm / SpO2:95% / temp:32.69C Beat! Heart rate:35.71bpm / SpO2:94% / temp:32.69C Heart rate:35.71bpm / SpO2:94% / temp:32.69C

s-l16001
s-l1600

Tried to change
// pox.setIRLedCurrent(MAX30100_LED_CURR_7_6MA);
but I had no realiable data

Using Arduino Mega 2650

Wiring:
4.7K pull-up on SDA and SCL
4.7K pull -up on INT -> Pin 2
VIN 3.3V Pin
All pull ups going to 3.3V

Can you please help me?

In case I'll have to change the sensor, can you please suggest me where to buy a good one?

rcwl 0530

Troubleshooting checklist

  • I read the README (on master) thoroughly
  • I ran the MAX30100_Tester and I'm going to paste the output down below
  • I filled in all the details of my setup down below

Description of the issue

Output from MAX30100_Tester example

Details of my setup

  • Arduino hardware:
  • MAX30100 breakout:
  • Arduino framework version:
  • MAX30100 library version:

max 30100(rcwl0530) not work

I'm having problems. max30100 (rcwl0530) can not work. I'm using your library max30100. and run the max30100 tester and just show it
3
4
wp_20180325_22_09_28_pro
wp_20180325_22_10_31_pro

pin max30100 vin = pin arduino v3,3
pin max30100 scl = pin arduino scl ( 4,7 R )
pin max30100 sda = pin arduino sda ( 4,7 R )
pin max30100 int = pin arduino d2 ( 4,7 R )
pin max30100 GND = pin arduino GND

can you help me ??? :(

Thanks!

Hello, Oxullo!
Thanks for Your great Job!
Can You help me to translate a filter functions (from MAX30100_Filters.h) from CPP to C? I try to use Your project for another platform.
Best regards, Oleg

Thanks for the amazing code!

Hi, Thanks for the kickass work with MAX30100.
Can you tell me what all pins must be connected apart from SDA,SCL and power?

Will this code work with newer arduino like the Arduino Zero, MKR1000?

P.S: It looks like Ladyada from Adafruit is working on the MAX30100 module too (The code was incomplete though)

Error on compile

Troubleshooting checklist

  • [yes ] I read the README (on master) thoroughly
  • [ yes] I ran the MAX30100_Tester and I'm going to paste the output down below
  • [ yes] I filled in all the details of my setup down below

Description of the issue

CirculaBuffer.tpp is a file that exists in the directory but there is some issue and it cant link with the Tester.
maybe .tpp extension is wrong?

Output from MAX30100_Tester example

image

Details of my setup

i dont think this part matters because the code doesnt pass the compile phase

  • Arduino hardware: Uno
    Vdd ->5V
    Gnd->Gnd
    SDA->SDA
    SCL->SCL
    INT->Pin 2

  • MAX30100 breakout: rcwl-0530

  • Arduino framework version: -

  • MAX30100 library version: -

About the data reading

Hi! I've looked in your library and I see that you have the interrupt register progrmmed but never used in the library.

The way I understand your program, the arduino asks regurlarly for the data of the MAX30100 instead of asking when receiving an interrupt.

Am I misunderstanding the way it works? If not, do you have a solution to enable the use of those interrupts?

Thanks in Advance!

Issue with Wemos D1 mini and MAX30100

I've tested your library with a Wemos D1 and a MAX30100 breakout board and I'm getting the following error any ideas why ? I'm using the 3.3v from the D1 and all others connections as you would expect except I'm not using the INT pin.

Jonathan

Failed to initialize the HRM sensor
ERROR: Failed to initialize pulse oximeter

Soft WDT reset

ctx: cont
sp: 3ffef3a0 end: 3ffef580 offset: 01b0

stack>>>
3ffef550: 3fffdad0 3ffee530 3ffee38c 4020210c
3ffef560: feefeffe 00000000 3ffee54c 40203810
3ffef570: feefeffe feefeffe 3ffee560 40100114
<<<stack<<<

ets Jan 8 2013,rst cause:2, boot mode:(3,6)

load 0x4010f000, len 1384, room 16
tail 8
chksum 0x2d
csum 0x2d
v60000318
~ld

Sensor integration, the MAX sensor value is not updated.

Hello, a final problem.

I have several sensors connected to my Node MCU, including the MAX30100 and a DS18B20. The problem is that they work at different speeds, this generates a conflict with the MAX30100 sensor since it does not detect the changes. I put here a short version of the code, but it still does not update the value of the pulse / oximeter sensor.

#include <Wire.h>
#include "MAX30100_PulseOximeter.h"
#include <OneWire.h>
#include <DallasTemperature.h>
#define REPORTING_PERIOD_MS 1000
#define REPORTING_PERIOD_MS2 2000

const int sensorPinT = D6;

PulseOximeter pox;

OneWire wireT(sensorPinT);
DallasTemperature dallasT(&wireT);

uint32_t tsLastReport = 0;
uint32_t tsLastReport2 = 0;

void setup() {
dallasT.begin();
Serial.begin(115200);
Serial.print("Initializing pulse oximeter..");
if (!pox.begin()) {
Serial.println("FAILED");
for (;;);
} else {
Serial.println("SUCCESS");
}
}

void loop() {
pox.update();
dallasT.requestTemperatures();

if (millis() - tsLastReport > REPORTING_PERIOD_MS) {
Serial.print("Heart rate:");
Serial.print(pox.getHeartRate());
Serial.print("bpm / SpO2:");
Serial.print(pox.getSpO2());
Serial.println("%");
tsLastReport = millis();
}

if (millis() - tsLastReport2 > REPORTING_PERIOD_MS2) {
Serial.print("Temperatura actual: ");
Serial.print(dallasT.getTempCByIndex(0));
Serial.print(" GC");
Serial.print(" || ");
Serial.print(dallasT.getTempFByIndex(0));
Serial.println(" GF");
tsLastReport2 = millis();
}
}

Rolling graph compile error

Troubleshooting checklist

  • [y] I read the README (on master) thoroughly
  • [y] I ran the MAX30100_Tester and it works flawlessly
  • [y] I filled in all the details of my setup down below

Description of the issue

Compile error with rolling graph example
image

Description of my setup

Arduino Mega
IDE 1.8.5 on Ubuntu 16.04

Sensor doesn't work properly :/

First of all, Unfortunately it didn't work with 3.3v. I connected it to 5v and used 10k pull ups for scl and sda. And Int connected to 3.3v directly (without a pull up)(it doesn't matter whether it is connected to 3.3v or not. I tried both of them) it doesn't detect beats when I put my findger on sensor. It shows "Heart rate:0.00bpm / Spo2 :0%" but when I pull my finger back for 1 or 2 cms above, it detect the beats. But values are not right. Random things.like 63, 100,151,...
İ have to RCWL and tried both them too. But it is still the same :/

Wrong data

Hi,

I'm using the MAX30100_Minimal code and the data I'm receiving is all wrong. As soon as I connect the circuit, even without touching the sensor, it starts to print SpO2 and heart rate values and it also gives an extremely high temperature value.

Is there anything you know I could modify to rectify this?

Wiring for NodeMCU-esp8266

Troubleshooting checklist

  • I read the README (on master) thoroughly
  • I ran the MAX30100_Tester and I'm going to paste the output down below
  • I filled in all the details of my setup down below

Description of the issue

Output from MAX30100_Tester example

Details of my setup

  • Arduino hardware: nodemcu-esp8266
  • MAX30100 breakout: MAX30102/MAX30100 Heart Rate Breakout Sensor Blood Oxygen Transducer for Arduino
  • Arduino framework version: 1.8.3
  • MAX30100 library version: 1.1.0
    I have attached 3.3V and GND. I have connected SDA - GPI04(D2) nd SCL - GPI05(D1). I have added the line Wire.begin(4, 5); //sda, scl. I ran the MAX30100_Tester code. I am getting FAILED: I2C error. Do you think I need pull-up resistors on SDA/SCL or am I using wrong pins or is something else wrong?

Would be graet if I could get your code working with my nodemcu-esp8266.

get raw/filtered sensor value

Hi,
is there a way to get the pulse and spO2 raw/filtered values? In Debug mode it prints the values to Serial but I want to process it in my main loop.

Arduino-MAX30100

hi~
nice to meet you.
i want to ask you some question about Arduino-MAX30100.
when I used your file ,I found there was no file Wire.h.
do you have this question?

Missing beats!

Dear Sirs,

Thanks so much for your great job! It is really helpfull!

But I have problem, my sensor GY-MAX30100 with your library missing my beats. (may be every 2nd beat, or even 2-3 everyting).

I use coverglass (policorb. about 1mm or lab coverglass 0.1mm - same result).

output looks like:
Beat!
Heart rate:39.55bpm / SpO2:94% / temp:34.31C
Heart rate:39.55bpm / SpO2:94% / temp:34.31C
Beat!
Heart rate:33.36bpm / SpO2:94% / temp:33.00C
Heart rate:33.36bpm / SpO2:94% / temp:33.00C
Beat!
Heart rate:31.18bpm / SpO2:94% / temp:34.00C
Heart rate:31.18bpm / SpO2:94% / temp:34.00C
Beat!
Heart rate:30.39bpm / SpO2:94% / temp:33.56C
Heart rate:30.39bpm / SpO2:94% / temp:33.56C
Beat!
Heart rate:30.17bpm / SpO2:94% / temp:34.56C
Heart rate:30.17bpm / SpO2:94% / temp:34.56C
Beat!
Heart rate:30.10bpm / SpO2:94% / temp:34.31C
Heart rate:30.10bpm / SpO2:94% / temp:34.31C
Beat!
Heart rate:30.07bpm / SpO2:94% / temp:34.81C
Heart rate:30.07bpm / SpO2:94% / temp:34.81C
Beat!
Heart rate:29.95bpm / SpO2:94% / temp:34.56C
Heart rate:29.95bpm / SpO2:94% / temp:34.56C
Beat!
Heart rate:30.01bpm / SpO2:94% / temp:35.13C
Heart rate:30.01bpm / SpO2:94% / temp:35.13C
Beat!
Heart rate:30.03bpm / SpO2:94% / temp:34.50C
Heart rate:30.03bpm / SpO2:94% / temp:34.50C

But real pulse in this time about 80-90bps.

I connect pin 'INT' of board to my arduino INT0(2).

what can be reason of this problem?

Really hope on your help!

Thanks so much!

Failed Initialization Test: Wrong Part ID

Troubleshooting checklist

  • I read the README (on master) thoroughly
  • I ran the MAX30100_Tester and I'm going to paste the output down below
  • I filled in all the details of my setup down below

Description of the issue

Ran MAX30100_Tester and received the following.

Output from MAX30100_Tester example

max30100error

Details of my setup

Setup follows schematic. SDA in A4 and SCL in A5. INT was not used.

  • Arduino hardware: Arduino Nano
  • MAX30100 breakout: ---
  • Arduino framework version: Arduino 1.8.2
  • MAX30100 library version: v1.1.0

SPO2 Detection in other areas of the body

Hi,
First, thanks for your work here - this is the most complete example of use of this device with an arduino. I can see lots of work went into this!

My question centers around tissue oxygen saturation in other areas of the body (besides the finger)

Do you think this combination of sensor, and code can be adjusted to work against other areas (for example, the lower back)?

If so, any idea what variables I should toy with to make this work?

Thanks!
Steven

Error on compile!

hello! Every example i try to compile i always get this error about a specific header file!
i have all the libraries and header files neccesery in the same folder as the .ino file.
screenshot_1

Can you help me?

Change Request: Add clear() to MAX30100_PulseOximeter.h

I was working on a project in which I had to expose the resetFifo() from MAX30100.h through a new function clear() on MAX30100_PulseOximeter.h
It helped me to clear the buffer before I start reading again.
Can you add this change to your library?

Compiling in Arduino IDE

Troubleshooting checklist

  • [y ] I read the README (on master) thoroughly
  • [ y] I ran the MAX30100_Tester and I'm going to paste the output down below
  • [ y] I filled in all the details of my setup down below

Description of the issue

I copied all the files in src folder into MAX30100_Tester and verified the code. I get following error message.

Output from MAX30100_Tester example

In file included from sketch\MAX30100.h:25:0,

             from C:\Users\Victor\Downloads\Arduino-MAX30100-master\Arduino-MAX30100-master\examples\MAX30100_Tester\MAX30100_Tester.ino:24:

sketch\CircularBuffer.h:117:30: fatal error: CircularBuffer.tpp: No such file or directory

#include <CircularBuffer.tpp>

Details of my setup

Could you tell me how can I correct this?

  • Arduino hardware:
  • MAX30100 breakout:
  • Arduino framework version:
  • MAX30100 library version:

Arduino Nano+MAX30100

@oxullo

Troubleshooting checklist

  • [ y] I read the README (on master) thoroughly
  • [ y] I ran the MAX30100_Tester and I'm going to paste the output down below
  • [y] I filled in all the details of my setup down below

Description of the issue

RED led does not light up normally,It got lighten when it connects with GND individually(except IR led to the GNDi.e open).
Even I tried with 10k ohm same issue is happening.

Output from MAX30100_Tester example

image

Details of my setup

NANO SDA->MAX30100 SDA
NANO SCL->MAX30100 SCL
with4.7k ohm pullup to get function.
Input-5V

  • Arduino hardware:
    Nano
  • MAX30100 breakout:
    MAX30100
  • Arduino framework version:
    Arduino v1.6.12
  • MAX30100 library version:
    MAXlib30100-Ver 1.1.0
    (This is your lib published on the Arduino lib)

Please Try to resolve the issue.....

I2C error

can anyone help me please?
I am trying to get the spo2 using max30100 and arduino nano. I have wired all the pins as an instructions. And the red LED started lighting. But we I am trying to run the code (tester or any of the codes) , i face with this error: Initializing max30100, Failed : I2C error

to be noted that I wired scl, sdk , int via 4.7k pull up resisitors to vcc (5 volt).

[Arduino+ MAX30100 (rcwl 0530) ] zeros when extracting SpO2 level and BPM

Dear Oxullo,

I can easily see that you implemented a really good code, but I'm having a lot of trouble on extracting the SpO2 level and de BPM and I would like you to help me, if you can.

So, I strictly followed the arduino wiring, which is similar to other ones using de I2C interface, no problem here ( I' ve already tried in other breadboards and wires).
When running the code, the red light on MAX30100 turns on and I'm able to get some values and the loop to go on and on, the problem is that the values are zero for both variables and there is only some different values if I touch the wires or something related. (annex image)

When running on debug mode, I can see some values like 65535 on left and something similar on right to the comma. It seems that the ADC becomes saturated because the left one doesn't even changes. (annex image)

I tried to explain as much as I could and I'm hoping to get the problem resolved soon.

Thank you for the attention and the code :)

s1sm1x

imgminimal
imgdebug

I2c error in tester

@oxullo this library is really heplful, tks bro :)))
can u teach me how to fix I2c error found by MAX30100_tester pls :))

MAX30100 and BLE Nano

I'm trying to get your code to compile on a BLE Nano from RedBearLabs. Unfortunately I keep running into this issue:

MAX30100.cpp:30:10: error: 'class TwoWire' has no member named 'setClock'

 Wire.setClock(I2C_BUS_SPEED);

      ^

exit status 1
Error compiling for board BLE Nano(V1.5 32KB).

I realise that the problem lies with the adapted wire library for the BLE Nano, but I was wondering if you had any thoughts on how I could address this problem?

IOT MAX30100

I tried to use the code MAX30100_Minimal and added it to connect to ThingSpeak, an IoT platform. I added the same line of code that I used for the previous i2c sensor to send data to Thingspeak, but somehow when I added it to the code MAX30100, the serial monitor started displaying the value 0 for the tick for percentage of SpO2 not reading, but when use MAX30100_Tester why not can upload in arduino and nodemcu, please help

Undefined reference

Hi, thank you for the great code!

I have an issue of undefined reference, it might just because I am a total beginner:)

Arduino: 1.6.12 (Mac OS X), Board: "Arduino/Genuino Uno"

/var/folders/r2/h34h074s3xv3wdfcgs8l5_yw0000gn/T//cc44E7VM.ltrans0.ltrans.o: In function global constructors keyed to 65535_0_MAX30100_Minimal.ino.cpp.o.1945': cc44E7VM.ltrans0.o:(.text.startup+0x74): undefined reference toPulseOximeter::PulseOximeter()'
/var/folders/r2/h34h074s3xv3wdfcgs8l5_yw0000gn/T//cc44E7VM.ltrans0.ltrans.o: In function main': cc44E7VM.ltrans0.o:(.text.startup+0x170): undefined reference toPulseOximeter::begin(PulseOximeterDebuggingMode)'
cc44E7VM.ltrans0.o:(.text.startup+0x17c): undefined reference to PulseOximeter::setOnBeatDetectedCallback(void (*)())' cc44E7VM.ltrans0.o:(.text.startup+0x184): undefined reference toPulseOximeter::update()'
cc44E7VM.ltrans0.o:(.text.startup+0x1ce): undefined reference to PulseOximeter::getHeartRate()' cc44E7VM.ltrans0.o:(.text.startup+0x324): undefined reference toPulseOximeter::getSpO2()'
collect2: error: ld returned 1 exit status
exit status 1
Error compiling for board Arduino/Genuino Uno.

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

Max30100 working problem

Hi, I have a problem with max30100 working, it is working only with 5v, but it is not working with 3.3v..what is the problem, please??

I2C address

Great code! :)
I am trying to modify it to work with the MAX30102 sensor. Unfortunately I am a total newbie when it comes to the I2C interface... So I was wondering about
#define MAX30100_I2C_ADDRESS 0x57
Where does the 0x57 come from? I'v been looking in the datasheets for the sensor and have found that I2C read and write adress is 0xAE and 0xAF, respectivly, but I'm guessing that is not the same thing..

Zero Output at MAX30100_RawData and MAX30100_Minimal

Troubleshooting checklist

  • [OK] I read the README (on master) thoroughly
  • [OK] I ran the MAX30100_Tester and I'm going to paste the output down below
  • [OK] I filled in all the details of my setup down below

Description of the issue

Hi @oxullo,
I have run MAX30100_Tester and got output like below. I have been wondered why is the temperature show 0C. After that I run MAX30100_Manual and MAX30100_RawData. I got zero output in RawData and in Manual that show 0 of bpm dan 0% of SpO2. So can you help me where I start to solve my problem?

max30100 manual

raw data max30100

Output from MAX30100_Tester example

max30100 tester

Details of my setup

Getting strange pulses each 2 seconds

Troubleshooting checklist

Description of the issue

Using the debug-prog + rolling graph can see strange pulses occuring exactly every 2 seconds!
(Very high peak followed by some negative samples) - then ok till next peak.

No idea where this peaks come from (visible in Serial monitor as well)
2sec_pulses

Output from MAX30100_Tester example

Initializing MAX30100..Success
Enabling HR/SPO2 mode..done.
Configuring LEDs biases to 50mA..done.
Initializing MAX30100..Success
Enabling HR/SPO2 mode..done.
Configuring LEDs biases to 50mA..done.
Lowering the current to 7.6mA..done.
Shutting down..done.
Resuming normal operation..done.
Sampling die temperature..done, temp=38.56C
All test pass. Press any key to go into sampling loop mode

Details of my setup

  • Arduino hardware:
    Mega 2560 (different hardware tested - same result)
  • MAX30100 breakout:
    RCWL-0530
  • Arduino framework version:
  • MAX30100 library version:
    1.10 (newest)

Node MCU and max30100

I am trying to connect my max30100 with my nodeMCU
I am getting the following error when i tried to compile the example MAX30100_Tester.ino

C:\Program Files (x86)\Arduino\libraries\Arduino-MAX30100\src\MAX30100_BeatDetector.cpp: In member function 'bool BeatDetector::checkForBeat(float)':

C:\Program Files (x86)\Arduino\libraries\Arduino-MAX30100\src\MAX30100_BeatDetector.cpp:64:67: error: no matching function for call to 'min(float&, int)'

             threshold = min(sample, BEATDETECTOR_MAX_THRESHOLD);

                                                               ^

C:\Program Files (x86)\Arduino\libraries\Arduino-MAX30100\src\MAX30100_BeatDetector.cpp:64:67: note: candidates are:

In file included from c:\users\anand\appdata\local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2\xtensa-lx106-elf\include\c++\4.8.2\algorithm:62:0,

             from C:\Users\ANAND\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0\cores\esp8266/Arduino.h:240,

             from C:\Program Files (x86)\Arduino\libraries\Arduino-MAX30100\src\MAX30100_BeatDetector.cpp:19:

c:\users\anand\appdata\local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2\xtensa-lx106-elf\include\c++\4.8.2\bits\stl_algo.h:4226:5: note: template<class _Tp, class _Compare> _Tp std::min(std::initializer_list<_Tp>, _Compare)

 min(initializer_list<_Tp> __l, _Compare __comp)

 ^

c:\users\anand\appdata\local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2\xtensa-lx106-elf\include\c++\4.8.2\bits\stl_algo.h:4226:5: note: template argument deduction/substitution failed:

C:\Program Files (x86)\Arduino\libraries\Arduino-MAX30100\src\MAX30100_BeatDetector.cpp:64:67: note: mismatched types 'std::initializer_list<_Tp>' and 'float'

             threshold = min(sample, BEATDETECTOR_MAX_THRESHOLD);

                                                               ^

In file included from c:\users\anand\appdata\local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2\xtensa-lx106-elf\include\c++\4.8.2\algorithm:62:0,

             from C:\Users\ANAND\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0\cores\esp8266/Arduino.h:240,

             from C:\Program Files (x86)\Arduino\libraries\Arduino-MAX30100\src\MAX30100_BeatDetector.cpp:19:

c:\users\anand\appdata\local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2\xtensa-lx106-elf\include\c++\4.8.2\bits\stl_algo.h:4221:5: note: template _Tp std::min(std::initializer_list<_Tp>)

 min(initializer_list<_Tp> __l)

 ^

c:\users\anand\appdata\local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2\xtensa-lx106-elf\include\c++\4.8.2\bits\stl_algo.h:4221:5: note: template argument deduction/substitution failed:

C:\Program Files (x86)\Arduino\libraries\Arduino-MAX30100\src\MAX30100_BeatDetector.cpp:64:67: note: mismatched types 'std::initializer_list<_Tp>' and 'float'

             threshold = min(sample, BEATDETECTOR_MAX_THRESHOLD);

                                                               ^

In file included from c:\users\anand\appdata\local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2\xtensa-lx106-elf\include\c++\4.8.2\algorithm:61:0,

             from C:\Users\ANAND\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0\cores\esp8266/Arduino.h:240,

             from C:\Program Files (x86)\Arduino\libraries\Arduino-MAX30100\src\MAX30100_BeatDetector.cpp:19:

c:\users\anand\appdata\local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2\xtensa-lx106-elf\include\c++\4.8.2\bits\stl_algobase.h:239:5: note: template<class _Tp, class _Compare> const _Tp& std::min(const _Tp&, const _Tp&, _Compare)

 min(const _Tp& __a, const _Tp& __b, _Compare __comp)

 ^

c:\users\anand\appdata\local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2\xtensa-lx106-elf\include\c++\4.8.2\bits\stl_algobase.h:239:5: note: template argument deduction/substitution failed:

C:\Program Files (x86)\Arduino\libraries\Arduino-MAX30100\src\MAX30100_BeatDetector.cpp:64:67: note: deduced conflicting types for parameter 'const _Tp' ('float' and 'int')

             threshold = min(sample, BEATDETECTOR_MAX_THRESHOLD);

                                                               ^

In file included from c:\users\anand\appdata\local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2\xtensa-lx106-elf\include\c++\4.8.2\algorithm:61:0,

             from C:\Users\ANAND\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0\cores\esp8266/Arduino.h:240,

             from C:\Program Files (x86)\Arduino\libraries\Arduino-MAX30100\src\MAX30100_BeatDetector.cpp:19:

c:\users\anand\appdata\local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2\xtensa-lx106-elf\include\c++\4.8.2\bits\stl_algobase.h:193:5: note: template const _Tp& std::min(const _Tp&, const _Tp&)

 min(const _Tp& __a, const _Tp& __b)

 ^

c:\users\anand\appdata\local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2\xtensa-lx106-elf\include\c++\4.8.2\bits\stl_algobase.h:193:5: note: template argument deduction/substitution failed:

C:\Program Files (x86)\Arduino\libraries\Arduino-MAX30100\src\MAX30100_BeatDetector.cpp:64:67: note: deduced conflicting types for parameter 'const _Tp' ('float' and 'int')

             threshold = min(sample, BEATDETECTOR_MAX_THRESHOLD);

                                                               ^

C:\Program Files (x86)\Arduino\libraries\Arduino-MAX30100\src\MAX30100_BeatDetector.cpp:81:67: error: no matching function for call to 'min(float&, int)'

             threshold = min(sample, BEATDETECTOR_MAX_THRESHOLD);

                                                               ^

C:\Program Files (x86)\Arduino\libraries\Arduino-MAX30100\src\MAX30100_BeatDetector.cpp:81:67: note: candidates are:

In file included from c:\users\anand\appdata\local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2\xtensa-lx106-elf\include\c++\4.8.2\algorithm:62:0,

             from C:\Users\ANAND\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0\cores\esp8266/Arduino.h:240,

             from C:\Program Files (x86)\Arduino\libraries\Arduino-MAX30100\src\MAX30100_BeatDetector.cpp:19:

c:\users\anand\appdata\local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2\xtensa-lx106-elf\include\c++\4.8.2\bits\stl_algo.h:4226:5: note: template<class _Tp, class _Compare> _Tp std::min(std::initializer_list<_Tp>, _Compare)

 min(initializer_list<_Tp> __l, _Compare __comp)

 ^

c:\users\anand\appdata\local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2\xtensa-lx106-elf\include\c++\4.8.2\bits\stl_algo.h:4226:5: note: template argument deduction/substitution failed:

C:\Program Files (x86)\Arduino\libraries\Arduino-MAX30100\src\MAX30100_BeatDetector.cpp:81:67: note: mismatched types 'std::initializer_list<_Tp>' and 'float'

             threshold = min(sample, BEATDETECTOR_MAX_THRESHOLD);

                                                               ^

In file included from c:\users\anand\appdata\local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2\xtensa-lx106-elf\include\c++\4.8.2\algorithm:62:0,

             from C:\Users\ANAND\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0\cores\esp8266/Arduino.h:240,

             from C:\Program Files (x86)\Arduino\libraries\Arduino-MAX30100\src\MAX30100_BeatDetector.cpp:19:

c:\users\anand\appdata\local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2\xtensa-lx106-elf\include\c++\4.8.2\bits\stl_algo.h:4221:5: note: template _Tp std::min(std::initializer_list<_Tp>)

 min(initializer_list<_Tp> __l)

 ^

c:\users\anand\appdata\local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2\xtensa-lx106-elf\include\c++\4.8.2\bits\stl_algo.h:4221:5: note: template argument deduction/substitution failed:

C:\Program Files (x86)\Arduino\libraries\Arduino-MAX30100\src\MAX30100_BeatDetector.cpp:81:67: note: mismatched types 'std::initializer_list<_Tp>' and 'float'

             threshold = min(sample, BEATDETECTOR_MAX_THRESHOLD);

                                                               ^

In file included from c:\users\anand\appdata\local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2\xtensa-lx106-elf\include\c++\4.8.2\algorithm:61:0,

             from C:\Users\ANAND\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0\cores\esp8266/Arduino.h:240,

             from C:\Program Files (x86)\Arduino\libraries\Arduino-MAX30100\src\MAX30100_BeatDetector.cpp:19:

c:\users\anand\appdata\local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2\xtensa-lx106-elf\include\c++\4.8.2\bits\stl_algobase.h:239:5: note: template<class _Tp, class _Compare> const _Tp& std::min(const _Tp&, const _Tp&, _Compare)

 min(const _Tp& __a, const _Tp& __b, _Compare __comp)

 ^

c:\users\anand\appdata\local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2\xtensa-lx106-elf\include\c++\4.8.2\bits\stl_algobase.h:239:5: note: template argument deduction/substitution failed:

C:\Program Files (x86)\Arduino\libraries\Arduino-MAX30100\src\MAX30100_BeatDetector.cpp:81:67: note: deduced conflicting types for parameter 'const _Tp' ('float' and 'int')

             threshold = min(sample, BEATDETECTOR_MAX_THRESHOLD);

                                                               ^

In file included from c:\users\anand\appdata\local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2\xtensa-lx106-elf\include\c++\4.8.2\algorithm:61:0,

             from C:\Users\ANAND\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0\cores\esp8266/Arduino.h:240,

             from C:\Program Files (x86)\Arduino\libraries\Arduino-MAX30100\src\MAX30100_BeatDetector.cpp:19:

c:\users\anand\appdata\local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2\xtensa-lx106-elf\include\c++\4.8.2\bits\stl_algobase.h:193:5: note: template const _Tp& std::min(const _Tp&, const _Tp&)

 min(const _Tp& __a, const _Tp& __b)

 ^

c:\users\anand\appdata\local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2\xtensa-lx106-elf\include\c++\4.8.2\bits\stl_algobase.h:193:5: note: template argument deduction/substitution failed:

C:\Program Files (x86)\Arduino\libraries\Arduino-MAX30100\src\MAX30100_BeatDetector.cpp:81:67: note: deduced conflicting types for parameter 'const _Tp' ('float' and 'int')

             threshold = min(sample, BEATDETECTOR_MAX_THRESHOLD);

                                                               ^

Using library Wire at version 1.0 in folder: C:\Users\ANAND\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0\libraries\Wire
Using library Arduino-MAX30100 at version 1.2.0 in folder: C:\Program Files (x86)\Arduino\libraries\Arduino-MAX30100
exit status 1
Error compiling for board Generic ESP8266 Module.

Please do help
Thanks in advance

I2C error on arduino nano.

Troubleshooting checklist

  • [(y)] I read the README (on master) thoroughly
  • [(y)] I ran the MAX30100_Tester and I'm going to paste the output down below
  • [(y)] I filled in all the details of my setup down below

Description of the issue - I ran the tester code and it tells me that the I2C has failed. I ran a code to identify the devices and give their I2C numbers and it tells me that there were no devices found. I have pull ups of 4.8k on SDA and SCL lines.

Output from MAX30100_Tester example -

untitled

Details of my setup

  • Arduino hardware: Nano
  • MAX30100 breakout: RCWL - 0530
  • Arduino framework version: 1.8.5
  • MAX30100 library version: 1.2.0

Is there any way to enter sleep mode?

Hi, Thanks for your amazing library man!

I used it for a low cost neonatal incubator. I was actually having issues with entering low power modes. I want to take readings every 2 minutes and then go to sleep but the MAX30100 led is still blinking, I did try changing the LED current function to 0 but that screws up the HR and SP readings. I was wondering if there is any function to exit pox.begin() and turn off the LED and then reset the BPM and SP readings?

Sorry if I am being a bit too vague or silly, I'm rather new to firmware dev.

Right now I am trying to run example code MAX30100-Minimal. Initially I get few readings which are not appropriate and after sometime serial monitor just stops working. Is this because I2C freezes due to noise related issues? What can be solution for this?

Troubleshooting checklist

  • I read the README (on master) thoroughly
  • I ran the MAX30100_Tester and I'm going to paste the output down below
  • I filled in all the details of my setup down below

Description of the issue

Output from MAX30100_Tester example

Details of my setup

  • Arduino hardware:
  • MAX30100 breakout:
  • Arduino framework version:
  • MAX30100 library version:

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.