Troubleshooting

Troubleshooting MAX30102 V2.0 (SEN0344) Heart rate sensor I2C communication

userHead TRH91 2024-03-27 00:49:16 2233 Views6 Replies

Hello, 

 

First time posting here so apologies if I have left anything out. I have been trying to get raw data from the MAX30102 V2.0 sensor with not much luck at all. 

 

 

So far I have found one library that works but it can't be used to obtain raw data ( https://github.com/DFRobot/DFRobot_BloodOxygen_S ). This library successfully outputs data to the serial monitor in the Arduino IDE, so it's unlikely the problem is with my connections or hardware. I have compared this library with the ones that have failed but I can't figure out why only this library will successfully connect with the sensor.  

 

I want to use a library that can obtain raw data and have tried several ( including https://github.com/DFRobot/DFRobot_MAX30102 ) but none of them seem to work - I get the error message “MAX30102 was not found” in the serial monitor whenever I use any of the examples. 

 

I am using an Arduino Uno R3 and have also tested an Atmega2560 but experience the same issues.  

 

My connections are as follows (MAX30102 → Arduino Uno):

3V3 → 5V (have also tested 3.3V) 

GND → GND

SCL → SCL (digital pin 19)  

SDA → SDA (digital pin 18)    

 

I have been struggling with this for a while now so any help would be greatly appreciated. 

2025-09-28 00:14:36

The MAX30102 is a 3.3V device.

Some breakout boards (e.g., SparkFun, Adafruit) include a regulator and level shifters, making them 5V-tolerant.

The DFRobot V2.0 breakout does NOT accept 5V on VCC. It must be powered from 3.3V.
If you powered it from 5V, it may still appear to work but could cause erratic behavior or eventually damage the sensor. Stick with 3.3V.

userHeadPic ahsrab.rifat
2025-09-27 12:12:05

I am working on a MAX30105 component and plan to develop a component for the MAX30102 afterwards, under the Espressif32 platform for the ESP-IDF framework in C.  Both sensor models are very similar in implementation and functionality.  These sensors use FIFO data rings; be mindful of I2C bus contention if you have more than one I2C device on the same bus as the MAX3010X.

 

The MAX30105 component is a work in progress, and progress to date is available here: https://github.com/K0I05/ESP32-S3_ESP-IDF_COMPONENTS/tree/main/components/peripherals/i2c/esp_max30105

 

Other ESP-IDF components are available here: https://github.com/K0I05/ESP32-S3_ESP-IDF_COMPONENTS

 

userHeadPic K0I05
2025-07-18 10:48:31

Hi,

 

I am using the ESP32 development board and the Fermion MAX30102 to read the heart rate and SpO2 values. I am using the ESP-IDF v5.4.1 and Arduino as a component (v3.2.0) to the ESP-IDF. I tried to run the example given in https://github.com/DFRobot/DFRobot_MAX30102 repo, but it didn't work. 

 

With some extra code, I am able to find the Fermion MAX30102 module at the I2C address 0x57 or 0x72 but because of the extra MCU on the module, I am not able to interact with the MAX30102 sensor registers directly, so the RED LED is not turning ON. 

 

This repo code was committed around June 2020 and there have been many ESP-IDF and Arduino component releases being published since June 2020, so I am wondering whether the MCU libraries have been kept up to date for all supporting platforms or not? And where can I find the latest sample code to test the Fermion MAX30102 module?

 

I am getting errors at the step where my code calls the begin() function of the DFRobot_MAX30102 class.

 

userHeadPic Pragya.Shilakari
2024-07-30 10:13:03

I am struggling with a similar issue.  I want to use two of the Fermion MAX30102 sensors with a multiplexer and can use the https://github.com/DFRobot/DFRobot_BloodOxygen_S library and I have success.  However, I want to control the LEDs of each one and there is nothing in this library which allows this.  If I use any other library, I get “Sensor not found” message.  Is there a solution?  Can I modify the library?  (Not sure I have that ability.)

userHeadPic Diane.Walsh
2024-07-25 06:30:25

Hi, are you using Arduino UNO R3 or Arduino UNO R4/mega etc? You have mentioned digital pin 18 and 19. But there is no D18 and D19 in Arduino UNO. Please verify the pinout and jumper wires. Here is also a fantastic project using MAX30102. You can try this someday. 

https://www.pcbway.com/project/shareproject/W260090ASJ75_gerber.html

userHeadPic lia.ifat
2024-07-23 04:03:08

Hello,
I am struggling with the same problem. The problem is the MCU on the back of the board which has been added in the later versions. 
It is between the Arduino and the MAX30102 sensor and doesnt allow to directly write and read from its registers. Therefore I don't think it is possibly to get the raw data. 

userHeadPic liekas