Oxímetro MAX30100 com Arduino UNO

Eletrônica

oximetro MAX30100

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

  1. Arduino UNO
  2. LCD 16X2 (com adaptador I2C)
  3. Sensor MAX30100 monitor de frequência cardíaca
  4. Fios e protoboard


oximetro MAX30100 circuito com arduino


oximetro MAX30100 circuito com arduino


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);
    }
  }
}


Bibliotecas usadas

MAX30100

LiquidCrystal I2C

Fonte
Equipe SuaDica
Mais Dicas