Módulo Sensor de frecuencia cardíaca MAX30102 para Arduino, marca Keyestudio
Visión de conjunto
El sensor de frecuencia cardíaca Keyestudio MAX30102 se utiliza principalmente en el componente MAX30102EFD, un sensor que integra un oxímetro de pulso y un monitor de frecuencia cardíaca.
Integra un LED infrarrojo, un fotodetector, componentes ópticos y circuitos electrónicos de bajo ruido con supresión de luz ambiental.
El sensor contiene una interfaz de comunicación I2C. Cuando lo usamos, usamos la interfaz de comunicación para transmitir los datos recopilados a la MCU con la interfaz de comunicación I2C y luego calculamos la frecuencia cardíaca y el oxígeno en la sangre.
Para facilitar la conexión del sensor a otros dispositivos, el sensor también viene con un orificio de fijación de 3 mm de diámetro.Parámetros técnicos
Tensión de trabajo: DC 5 V
Corriente de trabajo: 60mA
Potencia máxima: 0.3 W
Rango de temperatura de funcionamiento: -25 ° C a + 65 ° C
Interfaz de comunicación: comunicación I2C (paso de 4 pines es pin de 2.54 mm)
Tamaño: 20 * 36 * 7 mm
Peso: 2.5g
Atributos ambientales: ROHSCódigo de prueba
#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 occurredfloat beatsPerMinute;
int beatAvg;void setup()
{
Serial.begin(115200);
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();
}
Categoría
Categoría