Good Day! I have Problem sending Heartbeat and spo2 data to screen & serial mounted using MAX30100_ code and esp 32 TTGO T-back .please help

//Libraries for LoRa
#include <SPI.h>
#include <LoRa.h>

//Libraries for OLED Display
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

//Libraries for BME280
#include <Adafruit_Sensor.h>
#include "MAX30100_PulseOximeter.h"

//define the pins used by the LoRa transceiver module
#define SCK 5
#define MISO 19
#define MOSI 27
#define SS 18
#define RST 14
#define DIO0 26

#define REPORTING_PERIOD_MS     1000

// Create a PulseOximeter object


// Time at which the last beat occurred
uint32_t tsLastReport = 0;

#define BAND 433E6 

//OLED pins
#define OLED_SDA 21
#define OLED_SCL 22 
#define OLED_RST 16
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels

//BME280 definition
#define SDA 21
#define SCL 22

PulseOximeter pox;

//packet counter
int readingID = 0;

int counter = 0;
String LoRaMessage = "";
float oxygen;
int spo2;

void getReadings(){
  Wire.setClock(10000);
 oxygen= pox.getHeartRate();
 spo2=pox.getSpO2();
 Serial.println("♥ Beat!");
}
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RST);

//Initialize OLED display
void startOLED(){
  //reset OLED display via software
  pinMode(OLED_RST, OUTPUT);
  digitalWrite(OLED_RST, LOW);
  delay(20);
  digitalWrite(OLED_RST, HIGH);

  //initialize OLED
  Wire.begin(OLED_SDA, OLED_SCL);
  if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3c, false, false)) { // Address 0x3C for 128x32
    Serial.println(F("SSD1306 allocation failed"));
    for(;;); // Don't proceed, loop forever
  }
  display.clearDisplay();
  display.setTextColor(WHITE);
  display.setTextSize(1);
  display.setCursor(0,0);
  display.print("LORA SENDER");
}

//Initialize LoRa module
void startLoRA()
{
  Serial.println("LoRa Sender Test");
  //SPI LoRa pins
  SPI.begin(SCK, MISO, MOSI, SS);
  //setup LoRa transceiver module
  LoRa.setPins(SS, RST, DIO0);

  while (!LoRa.begin(BAND)) {
    Serial.println("Starting LoRa failed!");
    while (1);
  }
   
  Serial.println("LoRa Initialization OK!");
  display.setCursor(0,10);
  display.clearDisplay();
  display.print("LoRa Initializing OK!");
  display.display();
  delay(2000);
}

void displayReadings(){
  display.clearDisplay();
  display.setCursor(0,0);
  display.setTextSize(1);
  display.print("Heart rate:");
  display.setCursor(0,20);
  display.setTextSize(2);
  display.setCursor(20,23);
  display.print(pox.getHeartRate());
  display.display();
  display.setTextSize(1);  
  display.setCursor(0,30);                
  display.setTextSize(1);  
  display.print(pox.getSpO2());
  Serial.print("Sending packet: ");
  Serial.println(readingID);
  readingID++;

}

void sendReadings() {
  LoRaMessage = String(readingID) + "/" + String(oxygen) + "&" + String(spo2);
  //Send LoRa packet to receiver
  LoRa.beginPacket();
  LoRa.print(LoRaMessage);
  LoRa.endPacket();
  Serial.println("Packet Sent!");
  displayReadings();
  delay(500);
}
void setup() {
  //initialize Serial Monitor
  Serial.begin(115200);
  startOLED();
  startLoRA();
   Serial.print("Initializing pulse oximeter..");

    // Initialize sensor
    if (!pox.begin()) {
        Serial.println("FAILED");
        for(;;);
    } else {
        Serial.println("SUCCESS");
    }
}
void loop() {

  
  pox.update();

    // Grab the updated heart rate and SpO2 levels
    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();
    }
    sendReadings();

    getReadings();
}
![spo2|412x500](upload://mzTLyVHVxh9pzXu5qOwNZE62y0C.jpeg)

Do you have a question?


I don't see output for Max30100

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.