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

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



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

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

Certifique-se de saber todos os pinos do Max30100 e conectar os corretos, pelos mesmos motivos do passo anterior.
Conectar Oxímetro/arduino

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

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

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

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