Problem in integration of mlx 90614 and max 30102

Hello everyone,
hope you are fine and doing well. I am working of athlete's fitness monitor project. For that, I have to sense heart rate and body temperature sensor in real time. I have used max 30102 for heart rate and mlx 90614 for body tempearture. I am using esp 32 as micro-controller. Individually, they are working perfectly fine but when i tried to integate both sensors they are compiled and uploaded successfully. But serial monitor is showing following:
Screenshot 2023-01-09 210502
I have used code which is attached below:

#include <Adafruit_MLX90614.h>

#include <Wire.h>
#include "MAX30105.h"

#include "heartRate.h"

MAX30105 particleSensor;

const byte RATE_SIZE = 4; //Increase this for more averaging. 4 is good.
byte rates[RATE_SIZE]; //Array of heart rates
byte rateSpot = 0;
long lastBeat = 0; //Time at which the last beat occurred

float beatsPerMinute;
int beatAvg;

Adafruit_MLX90614 mlx = Adafruit_MLX90614();

void setup() {
  Serial.begin(115200);
  while (!Serial);

  if (!mlx.begin()) {
    Serial.println("Error connecting to MLX sensor. Check wiring.");
    while (1);
  };
    if (!particleSensor.begin(Wire, I2C_SPEED_FAST)) //Use default I2C port, 400kHz speed
  {
    Serial.println("MAX30105 was not found. Please check wiring/power. ");
    while (1);
  }
  Serial.println("Place your index finger on the sensor with steady pressure.");

  particleSensor.setup(); //Configure sensor with default settings
  particleSensor.setPulseAmplitudeRed(0x0A); //Turn Red LED to low to indicate sensor is running
  particleSensor.setPulseAmplitudeGreen(0); //Turn off Green LED
}

void temp()
{Serial.print("Ambient temperature = "); 
double amc = mlx.readAmbientTempC();
  Serial.print(amc);
  Serial.print("°C");      
  Serial.print("   ");
  Serial.print("Object temperature = "); 
  double obc = mlx.readObjectTempC();
  Serial.print(obc); 
  Serial.println("°C");
  
  Serial.print("Ambient temperature = ");
  double amf = mlx.readAmbientTempF();
  Serial.print(amf);
  Serial.print("°F");      
  Serial.print("   ");
  Serial.print("Object temperature = "); 
  double obf = mlx.readObjectTempF();
  Serial.print(obf); 
  Serial.println("°F");

  Serial.println("-----------------------------------------------------------------");
  delay(1000);
  
  }

  void HR()
  {
long irValue = particleSensor.getIR();

  if (checkForBeat(irValue) == true)
  {
    //We sensed a beat!
    long delta = millis() - lastBeat;
    lastBeat = millis();

    beatsPerMinute = 60 / (delta / 1000.0);

    if (beatsPerMinute < 255 && beatsPerMinute > 20)
    {
      rates[rateSpot++] = (byte)beatsPerMinute; //Store this reading in the array
      rateSpot %= RATE_SIZE; //Wrap variable

      //Take average of readings
      beatAvg = 0;
      for (byte x = 0 ; x < RATE_SIZE ; x++)
        beatAvg += rates[x];
      beatAvg /= RATE_SIZE;
    }
  }

  //Serial.print("IR=");
  //Serial.print(irValue);
  //Serial.print(", BPM=");
  //Serial.print(beatsPerMinute);
  Serial.print(", Avg BPM=");
  Serial.print(beatAvg);

  if (irValue < 50000)
    Serial.print(" No finger?");

  Serial.println();
    
    }

void loop() {
  temp();
  HR();
}`

if anyone know the solution, it will be a great help. Thank u in anticipation.

Post an annotated schematic, not a frizzy picture as they do not contain the needed information. Also post links "Technical" information on the hardware items. Links to Amazon and other marketplace outlets do not have the needed information. I have found several different items with the numbers posted.

Thank u for your reply. Both the sensors are of same kind: have four pins (Vin, GND, SCL and SDA). I guess, both are acquiring data at the same clock speed and can't display it. I am not able to solve this. As code is already given, can you have any suggestion ?

The attached picture is an image of my serial monitor when i upload the code and try to acquire data.

I never found the pictures you posted. Each devices has an internal address. The I2C SDA and ACL are connected to pins appropriate pins ??? on the processor. Some devices use the same address as others, most do not. Sometimes they offer address select options. Without the proper information these statements cannot be properly answered. You should run the I2C scanner and see what you get. If nothing devices are wired wrong, if one response you either have them both at the same address or one is not responding. Two responses is what you should get with two devices (there are exceptions). An annotated schematic would answer these questions and the links would let us know what parts you are actually using. Waiting on the information.

Thank u for your response. Actually, i have solve 80% of the issue. Now, the problem is only with max 30102 sensor. It is showing zero reading for heart rate when integrated with MLX 90614. After integration, MLX 90614 is working perfectly fine but max 30102 is showing zero readings.The screenshot of the serial monitor is attached below:
12
The code is already pasted in the topic. I shall be grateful if you solve this issue.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.