Portable/Wearable Health Monitoring IoT System


This system continuously monitors the health status of a person. The application of this system is remotely monitoring the babies or old person who lives in alone. The system is directly connected to the IoT cloud, as a result anyone can (such as doctors, relatives etc) monitor their health condition remotely in real-time. The health parameters of a person that we monitor using this device are heart rate in BPM, temperature, SPO2 level, and humidity. Please note that temperature and humidity sensors are not presents in this project; of course it’s possible to add them. I have used some random value while demonstrating the application.

The FireBeetle development board along with heart rate sensor is used here. The FireBeetle board collects the sensors data and sends them to the iot-cloud. The board uses WiFi connectivity for maintaining the cloud communication with Thinger.io. Thinger.io is an opensource IoT-cloud plartform. A mobile application for real time data visualization is developed. The application directly connected to the IoT cloud and shows the real-time data that comes from health monitoring device .The application is helpful for monitoring babies and older people.

CODE

#include <WiFiClientSecure.h>
#include <ThingerESP32.h>

#define USERNAME “YOUR_USER_NAME”
#define DEVICE_ID “YOUR_DEVICE_ID”
#define DEVICE_CREDENTIAL “YOUR_DEVICE_CREDENTIAL”

#define SSID “YOUR_WIFI_SSID”
#define SSID_PASSWORD “YOUR_WIFI_PASSWORD”

ThingerESP32 thing(USERNAME, DEVICE_ID, DEVICE_CREDENTIAL);

int bpm;
int spo2;
unsigned long currentMillis; //hold the current time

//pulse oximeter time period
#define REPORTING_PERIOD_MS 1000
PulseOximeter pox;
uint32_t tsLastReport = 0;
// Callback (registered below) fired when a pulse is detected

void onBeatDetected()
{
Serial.println(“Beat!”);
}

//pulse sensor callback function
void measured_pulse(){
// Make sure to call update as fast as possible
pox.update();
if (millis() – tsLastReport > REPORTING_PERIOD_MS) {
bpm=pox.getHeartRate();
tsLastReport = millis();
}

}

void setup() {
Serial.begin(115200);
Serial.println(“Initializing MAX30100”);
// Initialize the PulseOximeter instance and register a beat-detected callback
pox.begin();
pox.setOnBeatDetectedCallback(onBeatDetected);

pinMode(LED_BUILTIN, OUTPUT);
thing.add_wifi(SSID, SSID_PASSWORD);
thing[“spo2”] >> [](pson& out){out= pox.getSpO2();};
thing[“bpm”] >> [](pson& out){out = bpm ;};
// more details at http://docs.thinger.io/arduino/

}

void loop() {
thing.handle();
currentMillis = millis();
measured_pulse();

}


Additional products to consider...