Ensinando a Conectar Um Oxímetro No Arduino UNO

by marceloantoniofernandes2006 in Circuits > Arduino

1152 Views, 1 Favorites, 0 Comments

Ensinando a Conectar Um Oxímetro No Arduino UNO

imagem-118.png

Neste projeto, faremos a interface do sensor de oxímetro de pulso MAX30100 com o Arduino, que pode medir o oxigênio no sangue e a frequência cardíaca e exibi-los em um display LCD 16×2. A concentração de oxigênio no sangue denominada SpO2 é medida em porcentagem e os batimentos cardíacos/freqüência de pulso são medidos em BPM. O MAX30100 é uma solução para sensor de oximetria de pulso e monitor de freqüência cardíaca.

Supplies

Arduino UNO.jpg
Potenciometro.jpg
Display LCD 16x2.jpg

1- Arduino UNO (1 un);

2- Potenciômetro 10k (1 un);

3- Display LCD 16x2 (1 un);

4- Oxímetro Max30100 (1 un);

5- Protoboard (1 un);

6- Jumper Macho-Macho (20 un);

Adicionar Biblioteca Max30100

Vá até a aba "Ferramentas" do programa Arduino IDE, depois "Gerenciar Bibliotecas" e pesquise por Max30100 na aba de pesquisa. Instale o link da OXullo Intersellans.

Identificar Pinagem Display

Display LCD 16x2.jpg

Primeiramente, identifique qual modelo é o seu Display e sua respectiva pinagem, para que não corra o risco de queimá-lo ou danificá-lo de alguma forma.

Pinagem Max30100

Max30100.jpg

Certifique-se de saber todos os pinos do Max30100 e conectar os corretos, pelos mesmos motivos do passo anterior.


Conectar Oxímetro/arduino

Tutorial.png

Vamos usar o monitor LCD 16X2 para ver o valor de BPM e SpO2 em vez do monitor serial. Monte o circuito conforme mostrado no diagrama de circuito em anexo.

Conecte o pino Vin do MAX30100 ao pino do Arduino 5V ou 3,3V, GND ao GND.


Pinos Analógicos Max30100/Arduino

Tutorial.png

Conecte o pino I2C, SCL e SDA do MAX30100 ao A5 e A4 do Arduino.


Conectar LCD/Arduino

Tutorial.png

Da mesma forma, conecte os pinos 1, 5, 16 do LCD ao GND do Arduino e 2, 15 ao 5V VCC e os pinos 4, 6, 11, 12, 13, 14 do LCD aos pinos 13, 12, 11, 10, 9, 8 do Arduino.



Controlar Contraste LCD

Tutorial.png

Use o potenciômetro de 10K no pino 3 do LCD para ajustar o contraste do LCD.

Código Fonte / Programa

#include <LiquidCrystal.h>
#include <Wire.h>
#include "MAX30100_PulseOximeter.h"
 
LiquidCrystal lcd(13, 12, 11, 10, 9, 8);
 
#define REPORTING_PERIOD_MS     1000
 
PulseOximeter pox;
uint32_t tsLastReport = 0;
 
void onBeatDetected()
{
    Serial.println("Beat!");
}
 
void setup()
{
    Serial.begin(115200);
    Serial.print("Initializing pulse oximeter..");
    lcd.begin(16,2);
    lcd.print("Initializing...");
    delay(3000);
    lcd.clear();
 
    // Inicializa a instância do PulseOximeter
    // As falhas são geralmente devido a uma fiação I2C inadequada, fonte de alimentação ausente
    // ou chip alvo errado
    if (!pox.begin()) {
        Serial.println("FAILED");
        for(;;);
    } else {
        Serial.println("SUCCESS");
    }
    pox.setIRLedCurrent(MAX30100_LED_CURR_7_6MA);
 
    // Registra um retorno de chamada para a detecção de batida
    pox.setOnBeatDetectedCallback(onBeatDetected);
}
 
void loop()
{
    // Certifique-se de chamar update o mais rápido possível
    pox.update();
    if (millis() - tsLastReport > REPORTING_PERIOD_MS) {
        Serial.print("Heart rate:");
        Serial.print(pox.getHeartRate());
        Serial.print("bpm / SpO2:");
        Serial.print(pox.getSpO2());
        Serial.println("%");
 
        lcd.clear();
        lcd.setCursor(0,0);
        lcd.print("BPM : ");
        lcd.print(pox.getHeartRate());
        
        lcd.setCursor(0,1);
        lcd.print("SpO2: ");
        lcd.print(pox.getSpO2());
        lcd.print("%");
 
        tsLastReport = millis();
    }
}