Covid19 Health Monitoring System

A wearable that helps and protects doctors!

IntermediateShowcase (no instructions)3,251
Covid19 Health Monitoring System

Things used in this project

Story

Read more

Schematics

Covid19 Watch Schematic

Use this diagram to connect the components correctly.

Code

Covid19 Watch Code

C/C++
This is the code used in our project.
#include <ESP8266WiFi.h>
#include <Wire.h>
#include <Ticker.h>
#include "PubSubClient.h"
#include "MAX30105.h"
#include "heartRate.h"

#define wifi_ssid "******"
#define wifi_password "***********"
#define mqtt_server "******" //"m23.cloudmqtt.com"
#define mqttUser "*******"//"nrxyvxfh"
#define mqttPassword "******"//"pBqLKJYPlGiV"

MAX30105 particleSensor;
Ticker blinker;
char data[50];
float temperature;

const byte RATE_SIZE = 4; //Increase this for more averaging. 4 is good.
byte rates[RATE_SIZE]; //Array of heart rates
byte rateSpot = 0;
long lastBeat = 0; //Time at which the last beat occurred
float beatsPerMinute;
int beatAvg;
float vref = 3.3;
float resolution = vref / 1023;


WiFiClient espClient;
PubSubClient client(espClient);


void setup()
{
  Serial.begin(115200);
  blinker.attach(30, changeState);
  Serial.println("Initializing...");
  WiFi.begin(wifi_ssid, wifi_password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.println("Connecting to WiFi..");
  }
  Serial.println("Connected to the WiFi network");

  client.setServer(mqtt_server, 8883);

  while (!client.connected()) {
    Serial.println("Connecting to MQTT...");

    if (client.connect("ESP8266Client", mqttUser, mqttPassword )) {

      Serial.println("connected");

    } else {

      Serial.print("failed with state ");
      Serial.print(client.state());
      delay(2000);

    }

    // Initialize sensor
    if (!particleSensor.begin(Wire, I2C_SPEED_FAST)) //Use default I2C port, 400kHz speed
    {
      Serial.println("MAX30102 was not found. Please check wiring/power. ");
      while (1);
    }
    Serial.println("Place your index finger on the sensor with steady pressure.");

    particleSensor.setup(); //Configure sensor with default settings
    particleSensor.setPulseAmplitudeRed(0x0A); //Turn Red LED to low to indicate sensor is running
    particleSensor.setPulseAmplitudeGreen(0); //Turn off Green LED
  }
}

void loop()
{
  long irValue = particleSensor.getIR();

  if (checkForBeat(irValue) == true)
  {
    //We sensed a beat!
    long delta = millis() - lastBeat;
    lastBeat = millis();

    beatsPerMinute = 60 / (delta / 1000.0);

    if (beatsPerMinute < 255 && beatsPerMinute > 20)
    {
      rates[rateSpot++] = (byte)beatsPerMinute; //Store this reading in the array
      rateSpot %= RATE_SIZE; //Wrap variable

      //Take average of readings
      beatAvg = 0;
      for (byte x = 0 ; x < RATE_SIZE ; x++)
        beatAvg += rates[x];
      beatAvg /= RATE_SIZE;
    }

  }

  // Serial.print("IR=");
  //Serial.print(irValue);
  //Serial.print(", BPM=");
  //Serial.print(beatsPerMinute);
  //Serial.print(", Avg BPM=");
  //Serial.print(beatAvg);

  temperature = analogRead(A0);
  temperature = (temperature * resolution);
  temperature = temperature * 100;
  //temperature = (1.8 * temperature) + 32;
  //Serial.print(", Avg Temperature =");
  // Serial.print(temperature);


  if (irValue < 50000)
    Serial.print(" No finger?");

  // Serial.println();
}

void changeState()
{
  Serial.println("500  Done");
  sprintf(data, "%f,%f", beatsPerMinute, temperature);
  Serial.print(data);
  client.publish("BPM/Temperature", data);


}

Credits

Sharvayu Chavan

Sharvayu Chavan

0 projects • 3 followers
I am a high school student currently attending the International Academy. I am interested in the STEM and Artificial Intelligence fields.
Pratham Bumb

Pratham Bumb

0 projects • 1 follower
Hobbyist In Hardware & Software
jangadashrenik

jangadashrenik

1 project • 1 follower

Comments