Heart rate display on the LCD based on Arduino

Joined
Jul 30, 2021
Messages
15
Likes
3
Arduino LCD display project brief introduction

Some time ago, I found a heart rate sensor module MAX30100. This module can collect blood oxygen and heart rate data of users, which is also simple and convenient to use.

According to the data, I found that there are libraries of MAX30100 in the Arduino library files. That is to say, if I use the communication between Arduino and MAX30100, I can directly call the Arduino library files without having to rewrite the driver files. This is a good thing, so I bought the module of MAX30100.

I decided to use Arduino to verify the heart rate and blood oxygen collection function of MAX30100. With STONE TFT LCD screen for monitoring blood pressure.

GUI design

lcd-arduino-project (12).jpg


Connection

lcd-arduino-project (9).jpg


Part of code

C:
#include

#include "MAX30100_PulseOximeter.h"

 

#define REPORTING_PERIOD_MS 1000

 

// PulseOximeter is the higher level interface to the sensor

// it offers:

// * beat detection reporting

// * heart rate calculation

// * SpO2 (oxidation level) calculation

PulseOximeter pox;

 

uint32_t tsLastReport = 0;

 

// Callback (registered below) fired when a pulse is detected

void onBeatDetected()

{

Serial.println("Beat!");

}

 

void setup()

{

Serial.begin(115200);

 

Serial.print("Initializing pulse oximeter..");

 

// Initialize the PulseOximeter instance

// Failures are generally due to an improper I2C wiring, missing power supply

// or wrong target chip

if (!pox.begin()) {

Serial.println("FAILED");

for(;;);

} else {

Serial.println("SUCCESS");

}

 

// The default current for the IR LED is 50mA and it could be changed

// by uncommenting the following line. Check MAX30100_Registers.h for all the

// available options.

// pox.setIRLedCurrent(MAX30100_LED_CURR_7_6MA);

 

// Register a callback for the beat detection

pox.setOnBeatDetectedCallback(onBeatDetected);

}

 

void loop()

{

// Make sure to call update as fast as possible

pox.update();

 

// Asynchronously dump heart rate and oxidation levels to the serial

// For both, a value of 0 means "invalid"

if (millis() - tsLastReport > REPORTING_PERIOD_MS) {

Serial.print("Heart rate:");

Serial.print(pox.getHeartRate());

Serial.print("bpm / SpO2:");

Serial.print(pox.getSpO2());

Serial.println("%");

 

tsLastReport = millis();

}

}
Result demo

lcd-arduino-project (21).jpg
 
Top