
O MAX30100 é uma solução integrada de oxímetro de pulso e sensor de monitor de frequência cardíaca. É um sensor óptico que deriva suas leituras da emissão de dois comprimentos de onda de luz de dois LEDs – um vermelho e um infravermelho – e então mede a absorbância do sangue pulsante através de um fotodetector.
Esta combinação de cores de LED específica é otimizada para ler os dados através da ponta do dedo. É totalmente configurável por meio de registradores de software e os dados de saída digital são armazenados em um FIFO de 16 profundidades dentro do dispositivo. Possui uma interface digital I2C para se comunicar com um microcontrolador host.
Recursos que possui o monitor de frequência cardíaca
- Mede a absorbância do sangue pulsante
- Interface I2C mais pino INT
- Pequeno pacote de sistema óptico aprimorado de 5,6 mm x 2,8 mm x 1,2 mm de 14 pinos
- Operação de ultrabaixa potência aumenta a vida útil da bateria para dispositivos vestíveis
- Taxa de amostragem programável e corrente de LED para economia de energia
- Corrente de desligamento ultrabaixa (0,7µA, normalmente)
- A funcionalidade avançada melhora o desempenho da medição
- Alta SNR fornece resiliência robusta de artefatos de movimento
- Cancelamento de luz ambiente integrado
- Capacidade de alta taxa de amostragem
- Capacidade de saída de dados rápida
O que você vai precisar
- Arduino UNO
- LCD 16X2 (com adaptador I2C)
- Sensor MAX30100 monitor de frequência cardíaca
- Fios e protoboard


Tanto o LCD quanto o sensor usam comunicações I2C, então podemos conectar ambos ao mesmo pino A5 (SCL) e A4 (SDA). O Arduino uno i2c possui endereços de 7 bits para que possamos usar 127 dispositivos em paralelo. Para ligar o sensor e o lcd podemos dar +5v. E o resto do trabalho é feito pelo próprio microcontrolador.
Medir BPM e nível de oxigênio é muito simples usando o monitor de frequência cardíaca, basta colocar seu localizador suavemente no sensor Max30100. Ele iniciará automaticamente o sistema. Você obterá uma leitura completa e precisa após 10 segundos e pronto.
Código para testar o oxímetro MAX30100 na IDE Arduino
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
#include "MAX30100_PulseOximeter.h"
#define REPORTING_PERIOD_MS 1000
LiquidCrystal_I2C lcd(0x27, 16, 2);
byte smile[] = {
B00000,
B00000,
B01010,
B00000,
B10001,
B01110,
B00000,
B00000
};
byte mod[] = {
B00000,
B00000,
B01010,
B00000,
B11111,
B00000,
B00000,
B00000
};
byte sad[] = {
B00000,
B00000,
B01010,
B00000,
B01110,
B10001,
B00000,
B00000
};
PulseOximeter pox;
uint32_t tsLastReport = 0;
void onBeatDetected()
{
Serial.println("Beat!!!");
}
void setup()
{
Serial.begin(115200);
lcd.begin();
lcd.backlight();
lcd.createChar(1 , smile);
lcd.createChar(2 , mod);
lcd.createChar(3 , sad);
lcd.setCursor(0, 0);
lcd.print(" Pluse");
lcd.setCursor(0, 1);
lcd.print(" Oximeter");
delay(2000);
if (!pox.begin()) {
Serial.println("FAILED");
for (;;);
} else {
Serial.println("SUCCESS");
}
pox.setIRLedCurrent(MAX30100_LED_CURR_7_6MA);
pox.setOnBeatDetectedCallback(onBeatDetected);
}
void loop()
{
pox.update();
if (millis() - tsLastReport > REPORTING_PERIOD_MS) {
lcd.clear();
lcd.setCursor(0 , 0);
lcd.print("BPM : ");
lcd.print(pox.getHeartRate());
lcd.setCursor(0 , 1);
lcd.print("Sp02: ");
lcd.print(pox.getSpO2());
lcd.print("%");
tsLastReport = millis();
if (pox.getSpO2() >= 96) {
lcd.setCursor(15 , 1);
lcd.write(1);
}
else if (pox.getSpO2() <= 95 && pox.getSpO2() >= 91) {
lcd.setCursor(15 , 1);
lcd.write(2);
}
else if (pox.getSpO2() <= 90) {
lcd.setCursor(15 , 1);
lcd.write(3);
}
}
}


