MAX30100/2 led not lit up

As per the question, I ask because when I use either the MAX30100 or MAX30102 and power up the Ardiono Nano, there is no indication of the sensor actually working or detected.

I'm not sure if there should be an led or something.

This is the code I am using to detect a pulse etc., which just almost immediately says MAX30105 was not found. Please check wiring/power.
Err, is it specifically looking for the MAX30105 sensor, or just any.

I've checked the wiring which consists of x2 +v and x2 -v plus the the sda and scl connections.
SCL from the sensor -> A5 on the nano
SDA from the sensor -> A4 on the nano

The sensor I am using is a GY-MAX30100, and also have the MAX30102 which I tried but still no led lit up.I have checked the voltage to the sensor, and it is 3.15v.

I uploaded a I2C scanner sketch and it found 1 device at 87 (0x57), which is the GY-30100 sensor. As that is found , but I'm still getting the MAX30105 was not found. Please check wiring/power. and no led showing, or should there be one.

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

#include "heartRate.h"

MAX30105 particleSensor;
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

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;

void setup()
{
  Serial.begin(9600);

  lcd.begin(16, 2);
  Serial.println("Initializing...");

  // Initialize sensor
  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 loop()
{
  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();

  lcd.setCursor(0, 0);
  lcd.print("BPM: ");
  lcd.print(beatAvg);

  lcd.setCursor(0, 1);
  lcd.print(" IR: ");
  lcd.print(irValue);
}

The sensor I am using is a GY-MAX30100, and also have the MAX30102 which I tried but still no led lit up.I have checked the voltage to the sensor, and it is 3.15v

I'm missing a wiring diagram! Where are the 3.15V? On the VIN of the breakout board? On the Vdd pin of the sensor? On the VLED+ pin of the sensor? In the later case it's at the lower limit for that pin but inside the range where the sensor should work.

If you got your board from Aliexpress (the only supplier I found, you failed to provide a link where you bought it) it probably has 10kΩ pull-ups which probably fail at the 400kHz I2C speed the library chooses by default. Try to decrease that value in the library's header file to 100kHz.

I don't have a wiring diagram, so I have attached a picture,

Yes, the 3.15V was measured across the +vin pin and gnd of the GY-MAX30100 which I bought from an ebay seller in the UK.

https://www.ebay.co.uk/itm/Heart-Rate-Click-GY-MAX30100-Sensor-Blue-Smart-Electronics-Modules-for-Arduino/382653716651?ssPageName=STRK%3AMEBIDX%3AIT&_trksid=p2057872.m2749.l2649

Now when I measure or check the voltage between +vin pin and GND oI the sensor I get 4.05v from a usb cable plugged into my PC.

Reduce the frequency or value?

This is from the MAX30105.h file

define MAX30105_ADDRESS 0x57 //7-bit I2C Address
//Note that MAX30102 has the same I2C address and Part ID

#define I2C_SPEED_STANDARD 100000
#define I2C_SPEED_FAST 400000 <------------------do you mean here

Thanks

I changed this: #define I2C_SPEED_FAST 400000

to this : #define I2C_SPEED_FAST 100000

but it didn't make any difference.

I don't have a wiring diagram, so I have attached a picture,

I don't see any power connection on the picture. You connect VIN of the Nano to VIN of the sensor. As VIN of the Nano needs at least 7V to power the Nano you will fry the sensor immediately if you power it that way.

BTW, a wiring diagram may be hand-drawn on a piece of paper but it should show all connections of your setup including the power.

No there's no power connector as I took the picture outside for clarity, but the usb connector plugs in at the opposite end of the Nano from where the MAX30100 is located.

The VIN and GND on the Nano got to the +v rail and GND rails on the breadboard. Then the yellow wire goes from the SDA on the GY-MAX30100 to the A4 pin on the Nano. The black wire goes from the SCL on the GY-MAX30100 to the A5 pin on the Nano.

The sketch outputs to a serial monitor, but the MAX30100 is not detected.

Thanks

The VIN and GND on the Nano got to the +v rail and GND rails on the breadboard.

If you power the Nano by USB VIN will not get any voltage. So your sensor is not powered.