67
FACULDADE DE E NGENHARIA DA UNIVERSIDADE DO P ORTO Wearable sensor for continuous monitoring of physiological parameters Miguel Maria Macedo Sampaio Álvares Ribeiro Mestrado Integrado em Engenharia Eletrotécnica e de Computadores Supervisor: Luis Miguel Pinho de Almeida February 8, 2020

Wearable sensor for continuous monitoring of physiological ......Wearable sensor for continuous monitoring of physiological parameters Miguel Maria Macedo Sampaio Álvares Ribeiro

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

  • FACULDADE DE ENGENHARIA DA UNIVERSIDADE DO PORTO

    Wearable sensor for continuousmonitoring of physiological parameters

    Miguel Maria Macedo Sampaio Álvares Ribeiro

    Mestrado Integrado em Engenharia Eletrotécnica e de Computadores

    Supervisor: Luis Miguel Pinho de Almeida

    February 8, 2020

  • c© Miguel Maria Macedo Sampaio Álvares Ribeiro, 2020

  • Abstract

    Providing high quality health care to a mass population is becoming one of the great endeavorsof modern society. In order to do so, there is a urge to embrace the use of new technologies thatcan provide comfort while ensuring the safety and reliability of traditional methods.

    The system hereby proposed ought to be capable of monitoring a person’s vital signs thereforebeing very flexible regarding its application scenarios. It can be used not only in emergencywards and screening diseases but also in a home environment to monitor elderly people or youngchildren. Furthermore, it is not exclusive to monitoring and preventing diseases, it can also be aninstrument that aids sports training at high intensity levels.

    This product can measure a patient’s heart rate and oxygen saturation levels ensuring comfortand easy usage. Another advantage when compared to traditional machines used to fit the samepurpose is the fact that it is much cheaper, takes up less space and it encompasses two functional-ities that are otherwise measured with different machines.

    This system has two major components, an ESP32 microprocessor and a MAX30100 Pho-toPletysmoGraphy (PPG) sensor. The ESP32 module was chosen due to its computing capacity(dual-core 32-bit processor), having a WiFi module built in with full TCP/IP stack and having3 pre-defined sleep modes to reduce power consumption. The MAX30100 sensor was pickedbecause it is a compact and small module with simple usage.

    Furthermore, the goal of this dissertation is to build this system to be robust and reliable, whileenergy efficient, maximizing its battery life while not compromising its logical correctness.

    The configuration chosen that produced steady results whilst consuming lowest energy possi-ble was: 37 mA of current for the IR LED, sampling frequency of 50 Hz and pulse width of 200µs. When using the power saving modes the battery life extended up to 277% the value measuredin normal operating mode.

    i

  • ii

  • Acknowns

    To the greatest extent possible, i would like to thank my parents for the help and support theynever ceased to give me, no matter what. To all my family, especially my grandparents and mygodparents for their love, kindness and wisdom.

    I would also like to thank Professor Luís Almeida who proved to be the best supervisor onecould ever imagine.

    Um obrigado muito especial à minha Tininha pela paciência que tem e a ajuda que me dá, é omeu orgulho!

    To my girlfriend. Thank you Mariana for all your love and support, and for making me a betterperson.

    To all my graduation friends , particularly CeVas, Pissadas, Priskas, Radares and Zed for theirhelp (Cenisgas) and the good moments when we were together.

    And last, but definitely not least, i would like to thank Carido and Rafa for being constantmorons and always cheering me up.

    Miguel Maria Macedo Sampaio Álvares Ribeiro

    iii

  • iv

  • “I act like everything is fine, but deep down in my shoe, the sock is sliping”

    v

  • vi

  • Contents

    1 Introduction 11.1 Context and Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2 Objectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.3 Structure of the document . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

    2 Bibliographic research 32.1 Monitoring physiological signals . . . . . . . . . . . . . . . . . . . . . . . . . . 3

    2.1.1 Heart rate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32.1.2 Oxygen saturation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

    2.2 Photoplethysmography sensors . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.3 Wearable monitoring systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

    2.3.1 Home monitoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82.3.2 Sports training . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92.3.3 Emergency wards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

    2.4 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

    3 Photoplethysmography sensor based on ESP32 133.1 ESP32 platform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133.2 MAX30100 sensor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

    3.2.1 Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153.3 Connecting ESP32 and MAX30100 . . . . . . . . . . . . . . . . . . . . . . . . 173.4 Programming the system . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

    3.4.1 Reading samples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183.4.2 Heart rate monitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193.4.3 Pulse oximeter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233.4.4 Code organization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

    3.5 WiFi transmission . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273.6 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

    4 Experimental characterization 294.1 MAX30100 parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294.2 Quality of Service experiments . . . . . . . . . . . . . . . . . . . . . . . . . . . 304.3 Energy consumption experiments . . . . . . . . . . . . . . . . . . . . . . . . . . 33

    4.3.1 Sleep modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374.4 Designing a production-ready device . . . . . . . . . . . . . . . . . . . . . . . . 454.5 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

    vii

  • viii CONTENTS

    5 Conclusion 475.1 Critical Observations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485.2 Future work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

    References 49

  • List of Figures

    2.1 QRS complex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42.2 PPG sensor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

    3.1 Graphical Representation of the FIFO Data Register . . . . . . . . . . . . . . . . 163.2 Schematic of the system . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183.3 Plot of values unfiltered . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203.4 Plot of values after offset removal . . . . . . . . . . . . . . . . . . . . . . . . . 213.5 Plot of values after offset removal and median filtering . . . . . . . . . . . . . . 223.6 Plot of values after offset removal, median and butterworth filtering (final signal) 233.7 State Machine for beat detection . . . . . . . . . . . . . . . . . . . . . . . . . . 243.8 Empirical and Theoretical R to SaO2 . . . . . . . . . . . . . . . . . . . . . . . . 253.9 Execution of tasks with CH1="task-BMP"" and CH2="task-sleep" . . . . . . . . 263.10 Frequency of task-BPM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273.11 Execution time of task-BPM . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

    4.1 HR only mode (allowed settings) . . . . . . . . . . . . . . . . . . . . . . . . . . 304.2 HR and SpO2 mode (allowed settings) . . . . . . . . . . . . . . . . . . . . . . . 304.3 Box plot of Currents Consumed while varying Frequency for 200µs Pulse Width 344.4 Box plot of Currents Consumed while varying Frequency for 400µs Pulse Width 354.5 Box plot of Currents Consumed while varying Frequency for 800µs Pulse Width 354.6 Box plot of Currents Consumed while varying Frequency for 1600µs Pulse Width 364.7 Plot of average Current Consumed while varying Frequency for each Pulse Width 364.8 Plot of average Current Consumed while varying IR LED current with 200 µs

    Pulse Width and 50Hz of sampling Frequency . . . . . . . . . . . . . . . . . . . 374.9 Plot of average Current Consumed while varying Pulse Width for each Frequency 374.10 Surface created with average current consumed for each configuration with LED

    current = 43.6 mA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384.11 Current consumed in normal mode with task-sleep deactivated . . . . . . . . . . 404.12 Current consumed in modem-sleep mode with task-sleep deactivated . . . . . . . 404.13 Current consumed in normal mode with task-sleep active for 10 seconds . . . . . 414.14 Current consumed in modem-sleep mode with task-sleep active for 10 seconds . 414.15 Current consumed in light-sleep mode with task-sleep active for 10 seconds . . . 424.16 Current consumed in deep-sleep mode with task-sleep active for 10 seconds . . . 424.17 Current consumed in modem-sleep combined with light-sleep with task-sleep ac-

    tive for 20 seconds . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434.18 Current consumed in modem-sleep combined with deep-sleep with task-sleep ac-

    tive for 40 seconds . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

    ix

  • x LIST OF FIGURES

  • List of Tables

    3.1 ESP32 specifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143.2 Possible MAX30100 Sampling Frequency values . . . . . . . . . . . . . . . . . 163.3 Possible LED Pulse Width values . . . . . . . . . . . . . . . . . . . . . . . . . . 173.4 Possible LED current values . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

    4.1 Results for IR LED current = 50 mA) . . . . . . . . . . . . . . . . . . . . . . . 314.2 Results for IR LED current = 43.6 mA . . . . . . . . . . . . . . . . . . . . . . . 314.3 Results for IR LED current = 37 mA . . . . . . . . . . . . . . . . . . . . . . . . 324.4 Results for IR LED current = 30.6 mA . . . . . . . . . . . . . . . . . . . . . . . 324.5 Results for IR LED current = 24 mA . . . . . . . . . . . . . . . . . . . . . . . . 324.6 Results for IR LED current = 17.4 mA . . . . . . . . . . . . . . . . . . . . . . . 334.7 Results for IR LED current = 11 mA . . . . . . . . . . . . . . . . . . . . . . . . 334.8 Results for IR LED current = 4 mA . . . . . . . . . . . . . . . . . . . . . . . . 334.9 Current Consumption Average and Standard Deviation, and Battery life for Nor-

    mal operating mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444.10 Current Consumption Average and Standard Deviation, and Battery life for Modem-

    sleep operating mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444.11 Current Consumption Average and Standard Deviation, and Battery life for Light-

    sleep mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444.12 Current Consumption Average and Standard Deviation, and Battery life for Deep-

    sleep mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444.13 Current Consumption Average and Standard Deviation, and Battery life for Mo-

    dem sleep combined with Light-sleep or Deep-sleep mode . . . . . . . . . . . . 44

    xi

  • xii LIST OF TABLES

  • Abbreviations and Symbols

    AC Alternate CurrentADN Application Dedicated NodeADC Analog to Digital ConverterAE Application EntityBCG BallistocardiogramBPM Beats Per MinuteCSE Common Service EntityDC Direct CurrentDMA Direct Memory AccessECG ElectrocardiogramFIFO First In First OutHgbO2 OxyhemoglobinHgb DeoxyhemoglobinIN Infrastructure NodeIR Infra-RedIoT Internet of ThingsLED Light Emitting DiodePPG PhotoplethysmogramRMS Root Mean SquareSaO2 Arterial Oxygen SaturationSCL Serial ClockSDA Serial DataSO2 Oxygen SaturationSpO2 Peripheral Oxygen Saturation

    xiii

  • Chapter 1

    Introduction

    1.1 Context and Motivation

    Nowadays, the average life expectancy is steadily increasing every year due to many reasons.

    Much of that increase is due to healthcare and to falling death rates amongst women and young

    children, especially from infectious diseases. Cardiovascular diseases are amongst major death

    causes worldwide [1]. Therefore, unobtrusive long-term monitoring of patient’s vital signs can

    lead to early detection of some anomalies and also to prevent, cure or manage some diseases

    like Atrial Fibrillation, hypoxemia, tachycardia or even ventricular fibrillation (that may lead to

    sudden cardiac arrest). Moreover, home monitoring can help reducing the amount of time spent

    in hospitals and the overall costs of treatments [2]. At the moment, machines used to monitor

    patients’ vital signs are expensive and take up a lot of space. Most of them are uncomfortable and

    not easy to use. In addition, when in an hospital emergency room environment, it is mandatory

    that you go through a triage process (if not in a critical state), which can typically take a long time,

    before your vital signs can be monitored.

    In this dissertation a solution is proposed: a non-invasive, cheap and easy to use device capable

    of making measurements at the skin surface and send the data collected using wireless communi-

    cation to a computing node. This would be a major improvement, not only concerning the general

    health but also comfort-wise. This node must be capable of receiving data from a sensor that ac-

    quires vital signs, process this data in real-time and send to a monitoring station that displays the

    patient’s health state. The utilization of WiFi in contrast to other types of wireless communication,

    such as Bluetooth, increases the range of the module and facilitates its connection to existing WiFi

    infrastructures, therefore making it more versatile. Other possible scenarios of usage, include care

    homes for elderly people, babies, major sports events or even remote systems that allow patients

    to be monitored at home.

    1

  • 2 Introduction

    1.2 Objectives

    The purpose of this work was to engineer a system capable of measuring an individual’s heart rate

    and oxygen saturation levels. This module is formed by two major components: an ESP32 micro-

    processor and one MAX30100, a photoplethysmography sensor. This system must be robust and

    be able to produce results within certain standards, to ensure this, quality of service test ought to

    be conducted. Furthermore, evaluate the system’s energy consumption when using different con-

    figurations for the MAX30100 sampling method, in order to assess the device’s lifetime between

    charges using a small form-factor rechargeable battery.

    1.3 Structure of the document

    This Document is arranged in 5 chapters, each one containing a brief conclusion:

    1) Introduction - This section, summarizes the work ahead, describing it broadly.

    2) Bibliographic Research - This section presents an in depth research on similar systems to

    analyse their pros and cons in order to design an innovative system with unique capabilities.

    3) Photoplethysmography Sensor based on ESP32 - This is a thorough description of the

    system is made including the characterization of each element (ESP32 and MAX30100) as well

    as detailed information about their connection and programming. Additionally, the WiFi commu-

    nication is approached and explained.

    4) Experimental Characterization - This section focuses on the experimental results obtained

    from different possible configurations of the system. These configurations vary in: Sampling

    Frequency, Pulse Width and LED current. This assessment aims to analyze the quality of service

    and proper lifetime of the device.

    5) Conclusion - This section summarizes and reflects on the work that was done, assessing

    whether the goals were achieved or not. A last paragraph mentions work to further improve the

    module built in this project.

  • Chapter 2

    Bibliographic research

    This Chapter seeks to identify and study the most common and effective ways of monitoring

    physiological signals focusing specifically on heart rate and oxygen saturation levels since they

    stand amongst the most valuable and useful parameters to monitor.

    2.1 Monitoring physiological signals

    Over the last decades, monitoring physiological signals has become increasingly popular, not

    only as a training aid for sports but also to improve the patient’s safety in the ordinary living

    environment. In fact, the analysis of these parameters can be used to diagnose certain illnesses

    like tachycardia (high heart rate at rest, typically above 100 beats per minute), bradycardia (slow

    heart rate, below 60 beats per minute), chronic arterial insufficiency (CAI) of lower extremities

    (SpO2 values can reach below 50 % in critical stages), etc.

    2.1.1 Heart rate

    Heart rate corresponds to the number of contractions of the heart per minute, also known as

    beats per minute (BPM). This value can vary depending on the individual’s body need to absorb

    oxygen and/or secrete carbon dioxide.

    The normal value for an adult’s heart rate is within the range 60–100 BPM[3]. Many activities

    influence heart rate values such as physical exercise, sleep, illness, and anxiety.

    Although experiences to measure heart rate had been made before (starting as early as 1872

    [4]), it was not until 1901 that Willem Einthoven built the first practical electrocardiogram (ECG)

    [5]). Einthoven’s work concerning ECG later awarded him with a Nobel prize (1924) [6].

    In order to measure a patient’s heart rate there are two main types of technologies: Electrical

    and Optical.

    Electrical technologies can detect small electrical changes that come as a consequence of car-

    diac muscle depolarization and repolarization. They consist of two main elements: a transmitter

    and a receiver. The transmitter is commonly worn on a chest strap whereas the receiver’s main

    function is to display to reproduce the results obtained so that the user has access to them.

    3

  • 4 Bibliographic research

    Figure 2.1: QRS complex

    In contrast, optical monitors use light-based sensors to detect changes in the patients blood

    volume in the microvascular tissue. This is accomplished by illuminating the skin and quantifying

    changes in the light absorption [7].

    Both methods rely on algorithms that process the obtained data (filtering, offset removal and

    noise removal) like Pan-Tompkins [8].These automated methods aim to detect the QRS complex

    found in ECGs. This signal corresponds to the main spike in the electrocardiogram. The QRS

    complex (Figure 2.1) comprehends three distinct waves seen on a typical ECG: Q, R and S waves.

    Is usually lasts from 0.08 to 0.10 seconds and corresponds to the electrical stimulus spread through

    ventricles [9].

    2.1.1.1 Ballistocardiogram

    A ballistocardiogram (BCG) represents the recording of the mechanical activity of the heart

    through the movements of the body imparted by the ballistic forces (recoil and impact)[10]. The

    graphic obtained resembles a ballistic trajectory where the upward motion is due to cardiac con-

    traction and ejection of blood whereas the downward motion comes from the deceleration of blood

    flow through larger blood vessels [11].

    This method was discovered in late 19th century [12], although its major research was made

    in the 1940’s. It has started to decrease in popularity around 1980 [13] due to some reasons: an

    absence of a standard regarding the measurement techniques (different methods lead to different

    signals [14]), a lack of understanding precisely the BCG waveform and its physiological meaning,

    adding to this there are no ground rules regarding the interpretation [15].

  • 2.1 Monitoring physiological signals 5

    2.1.1.2 Electrocardiogram

    An electrocardiogram (ECG) is a test that produces a graph of voltage versus time which

    can be used to study the patient’s heart activity[16]).It is a safe, non-invasive and painless test

    with no major risks. It assesses heart rhythm, chamber size, and muscle thickness. For many

    years, electrocardiogram (ECG) has been used as the most dominant cardiac monitoring technique

    to identify cardiovascular abnormalities and detect irregularities in heart rhythms [17][18]. In

    addition it has broad applications concerning clinical diagnosis and prognosis of cardiovascular

    diseases like arrythmias, congenital heart disease, coronary artery disease, heart attacks, hearts

    failure, cardiomyopathy, valvular heart disease, among others [19][20].

    The signal is measured by placing electrodes on the skin level throughout the patient’s body.

    As mentioned before, this procedure works due to the electrodes’ capability of detecting small

    electrical variations. These come as a consequence of the heart’s activity (polarization and depo-

    larization for each cardiac cycle).

    ECGs can be used not only to check on cardiac diseases, but also pulmonary like a cardiopul-

    monary exercise test (CPET).

    The four different types of electrocardiograms are: Exercise ECG (stress test), Holter monitor,

    Resting 12-lead ECG and Signal-averaged electrocardiogram. The most commonly used method

    is the 12 lead ECG and it can be part of a routine checkup to screen for heart conditions before

    any symptoms develop.

    Here, ten electrodes are placed on the patient’s limbs and on the chest [21]. This allows the

    heart’s electrical potential to be monitored from 12 different angles ("leads"). Usually the exam

    lasts for 10 seconds which is enough to capture the overall magnitude and direction of multiple

    cardiac cycles [22].

    2.1.1.3 Photoplethysmogram

    Photoplethysmography (PPG) is a method to optically record an individual’s heart activity.

    The most commonly used device to obtain a PPG is a pulse oximeter. A light source is used

    (usually one or more LEDs) and a photo-detector at the skin level in order to measure volumetric

    variations of blood circulation [23][24].

    With each cardiac cycle, blood is pumped out of the heart into the peripheries, causing a major

    increase in pressure levels throughout all vessels. Although the pressure dumps throughout the

    blood’s route, at a peripheral level it is still enough to capture the heart’s motion. This sudden rise

    of pressure is represented by the main peak in the PPG. The waveform represented varies in each

    patient and can be used for early detection and diagnosis of various cardiovascular illnesses that

    may even appear later in life [25].

    2.1.2 Oxygen saturation

    Oxygen saturation is measured calculating the fraction of oxygen-saturated hemoglobin rela-

    tive to the total hemoglobin in an individual’s blood. In other words, it is a measure of how much

  • 6 Bibliographic research

    hemoglobin is currently bound to oxygen compared to how much hemoglobin remains unbound

    to it. Normal values for an adult human are above 90 %. Levels below 90 % are called hypoxemia

    [26] and below 80 % start to compromise some organs functionality (mostly brain and heart, but

    also kidneys).

    The most common and effective device used to measure a patient’s oxygen saturation level is a

    pulse oximeter. The use of pulse oximetry has become a standard in modern medicine. It is often

    regarded as a fifth vital sign [27].

    2.2 Photoplethysmography sensors

    Pulse oximetry, as it was already mentioned, is an unobtrusive, low cost and non-invasive

    method for monitoring a patient’s arterial oxygen saturation level (SaO2). SaO2 is calculated esti-

    mating the oxygenated hemoglobin (oxyhemoglobin - HgbO2) and the non-oxygenated hemoglobin

    (deoxyhemoglobin - Hgb) levels [28].It can serve as an early warning signal of impaired oxygena-

    tion in a given patient, while avoiding the pain and risks of arterial puncture. The clinician should

    be aware of the pathophysiology/background of pulse oximetry to use this technology appropri-

    ately.

    A pulse oximeter is an optical sensor with three main components: one or more light emitting

    module/s, one or more photo-detectors and a microprocessor to process the obtained data.

    This method is based upon spectrophotometric principles and on the Beer-Lambert law [29].

    This law states that all substances have a unique absorbance spectrum, meaning that oxyhe-

    moglobin and deoxyhemoglobin absorb light differently. HgbO2 compared to Hgb absorbs more

    infrared light (wavelength around 940 nm) and less red light (wavelength around 660 nm) [30].

    The light intensity that passes through the blood (Lo) is proportional to the intensity of incident

    light (Li) minus the light absorbed (Figure 2.2). The amount of light absorbed depends upon the

    concentration of solute (C), the path length light has to travel through the solution (D), and the

    molar extinction coefficient of the solute (ε). ε is a constant for Hgb at a given wavelengthabsorbance (Equation 2.1), blood is the solvent and oxyhemoglobin is the solute.

    Absorbance = ε.C.D = logLiLo

    (2.1)

    In conclusion, when there is a pulse, the blood gets renewed with HgbO2, leading to an in-

    crease in infrared and red light absorptions. These values enable the calculation of the ratio of

    HgbO2 to the reduced Hgb levels, and then to plot this ratio against a standardized calibration

    curve in order to derive the SaO2 measurement. This curve varies within each individual and there

    is a standard derived from healthy adult volunteers [31].

    The sensor must be located on a vascular bed [32] (for example finger, toe, earlobe, forehead).

    The sensor also works with light reflectance instead of transmittance (when used in forehead it is

    mandatory). There are no differences in ability of the different type of sensors to obtain readings

  • 2.3 Wearable monitoring systems 7

    Figure 2.2: PPG sensor

    and no distinction in the accuracy of these readings [33]. In some cases, reflection sensors give

    readings earlier and at a lower pulse pressure [33]. Furthermore, using light reflectance does imply

    an increase in the user’s comfort and easier usage.

    Pulse oximetry is considered safe (although some reports of incidents like burns and pressure

    necrosis have appeared [34]) and has a low failure rate of less than 5 %. In addition, these failures

    tend to occur in elderly and sicker patients during long surgical procedures [35].

    As everything, pulse oximetry as its problems:

    1) It is difficult to properly place the probe, since the distance between the sensor and the

    user has to be constant.

    2) Insufficient signal which can occur from hypoperfusion (insufficient blood flow) or ex-

    cessive signal as a result of excessive motion or ambient light.

    3) Does not measure ventilation.

    4) Reference data may not correspond the patient’s own curve.

    5) Deeply pigmented skin may decrease pulse oximetry’s accuracy, although this is not as

    relevant as the other cons.

    6) The readings are more accurate at higher levels of SaO2.

    2.3 Wearable monitoring systems

    A wearable system is a smart electronic device that can be worn or incorporated in a piece

    of clothing. They are capable of transferring data over a network without the need for human

    interaction, thus being a good example of an Internet of Things (IoT) device [36][37].

    This section focuses on existing wearable monitoring systems. The main goal is to find ex-

    amples for each use-scenario in order to retrieve ideas to conceive a robust and efficient system,

  • 8 Bibliographic research

    specifying the software architecture and the hardware used. Furthermore, a description of one

    system for each of the following main use-scenarios are: home monitoring, sport training and

    emergency wards.

    2.3.1 Home monitoring

    This type of system allows the patient to be monitored at home, ensuring safety and comfort.

    Thus, it can be used for multiple purposes: elderly people, babies, some diseases that on the one

    hand require monitoring, but, on the other hand, the patient is not in a critical state. When the

    sensor communicates wirelessly with another component worn or carried by the user, it forms a

    wireless body-area network (WBAN), which can also include other devices. The work in [38]

    shows an example of a WBAN-based system for health monitoring at home proposed for a contin-

    uous tracking of the patients’ heart rate. The proposed architecture is multi-layered with the first

    tier consisting of multiple nodes which have the following functions:

    1) Tracking one or more physiological signals.

    2) Processing the signal/s (filtering, feature extraction and feature recognition).

    3) Storing the already processed data.

    4) Sending the data to another node/s and/or a WBAN server.

    These sensors communicate directly to a WBAN gateway that is either plugged into a home

    server or a wired/wireless network appliance (recently, the gateway is frequently instantiated on

    a smartphone which connects the WBAN to the Internet). The WBAN gateway on one hand for-

    wards the messages to a medical server, on the other hand, by sending beacon messages, provides

    time synchronization. If by any reason the user steps out of the gateway’s range, the sensors

    automatically start buffering data locally. Upon getting within range and the WBAN link being

    reestablished, the sensors automatically upload stored sensor and event data.

    2.3.1.1 Software

    Embedded sensor software runs on the micro-controller on a T-mote sky platform (wireless

    sensor module) and it is responsible for the sampling and acquisition, real-time processing, event

    queuing, and WBAN communication.

    The home health server in [38] communicates with the sensors in the WBAN, merging event

    messages as they arrive from the sensors, creating health monitoring session files for each user,

    and providing them feedback. This software runs on a home PC and was developed using C Sharp

    and Microsoft .NET 2.0 framework. This server is capable of WBAN communications using one

    of two options: a directly connected network coordinator via USB or a remote network coordinator

    connected via a T-mote connect, where messages between the server and the network coordinator

    are sent over a local network using reliable TCP/IP sockets.

  • 2.3 Wearable monitoring systems 9

    2.3.1.2 Hardware

    In [38] two options were considered for heart rate sensors: a single-channel bio amplifier for

    three-lead ECG and standard Polar belt. The first one can either send a raw ECG signal (already

    filtered) or R-peak events recognized by the software. With respect to the second version, it can

    record each heartbeat without the need of ECG electrodes, leading to an increase of the patient’s

    comfort and also easier usage. The WBAN gateway is implemented using a standard wireless

    platform. The home health server application runs on a personal computer.

    2.3.2 Sports training

    Monitoring an athlete’s physiological signals can be of major importance in order to make sure

    that they are staying within the prescribed zones of intensity during periods of work and rest as

    well as ensuring that they get a maximum benefit before training. The most common systems use

    a heartrate monitor since it is the most significant signal when it comes to exercise intensity.

    A system was studied [39] that has a mesh network: the transmission of data is made from

    each node to its nearest neighbors. This architecture has several advantages such as being self-

    configuring, self-healing and easy to maintain. This system allows many athletes to be monitored

    at the same time, each wearing a sensor capable of transmitting data to a monitoring center via

    radio communications.

    2.3.2.1 Software

    The software for the system in [39] was developed with an IDE to program nRF24AP1 as a

    receiver. Software serial library enabled connecting the nRF24AP1 to the ATMega168 and lastly,

    LabVIEW was used to display the data received in the computer.

    2.3.2.2 Hardware

    The system uses a Garmin Heart-rate strap to measure the user’s heartbeat which is connected

    to the nRF24AP1 processor via ANT+ wireless protocol for peer to peer comunication. ANT+ is a

    variation of the previous ANT (Adaptive Network Topology) protocol. This technology defines a

    wireless communication protocol stack that enables hardware to operate in the 2.4 GHz ISM band

    to communicate by establishing standard rules for co-existence, data representation, signaling,

    authentication, and error detection. Each receiver consists of a microcontroller (ATMega168),

    a nRF24AP1 (ultra-low power single-chip radio transceiver with embedded ANT protocol for

    personal area networks) and an XBee transmitter (radio communication based in the 802.15.4-

    2003 standard, designed for point-to-point and star communications at over-the-air with a bau rate

    of 250 kbit/s). The receiver stores the data and assigns it an ID before transmitting it to the server.

    The sensors transmit data via radio communication to a monitoring station that comprise a XBee

    receiver connected to the server computer.

  • 10 Bibliographic research

    2.3.3 Emergency wards

    This is a critical scenario since it is related to ensuring health care, trying to avoid deaths and

    prevent potentially adverse events. This scenario imposes constrains on autonomy, connectivity,

    interoperability and delay, and the consequences of not respecting these constraints may be ex-

    ceptionally severe if not handled properly. A solution is proposed [40] using a full internet-based

    architecture and open protocols from wristband wearable sensors up to a monitoring system. The

    system follows the oneM2M publisher-subscriber protocol, particularly the OM2M open-source

    implementation and is composed of:

    1) Application Dedicated Node (ADN) which contains an Application Entity (AE) that im-

    plements the service logic.

    2) Infrastructure Node (IN) holding a Common Service Entity (CSE).

    3) IN-AE is an AE that is registered with the CSE in the IN.

    The ADN-AE oversees the sensor and can decide when it should transmit its data (periodically

    or not) to control the battery lifetime of the wristband.

    The IN-CSE is the infrastructure core, consisting of an M2M broker that receives and dis-

    tributes messages. The IN-AE is the monitoring application in the infrastructure side that is con-

    nected to the broker. The IN-AE is an openEHR service (an open source Electronic Record Sys-

    tem) provided with M2M capabilities. Every time a patient’s wristband is assigned to the patient’s

    EHR, the IN-AE subscribes to the respective resource in the IN-CSE. Then, the IN-AE starts

    receiving notifications of the data published by the device.

    This paper also addresses the tradeoff between time to wake-up (end-to-end latency) and en-

    ergy consumption (battery lifetime), by exploring different sleep functions that enable the micro-

    processor to enter low-power consumption modes. These modes differ by shutting down the WiFi

    circuit, for a certain time, only, without losing the connection to the Access Point (modem-sleep),

    or in addition the crystal oscillator-based system clock thus suspending the CPU temporarily,

    while keeping a less precise RTC clock (light sleep) or even shutting down the whole module

    (deep-sleep) which breaks WiFi connectivity to the AP.

    2.3.3.1 Software

    The embedded software (for the wristband sensors) runs on the ESP8266 framework provided

    by Espressif Systems, v1.2, running on FreeRTOS. OpenEHR is a non-proprietary standard for

    e-health, consisting of open specifications, clinical models and software that can be used to build

    information and interoperability solutions for healthcare. Its standardized EHR architecture based

    on a multi-layered approach separates information from knowledge.

    The OM2M broker was used as reference implementation for the oneM2M standard. The Con-

    strained Application Protocol (CoAP) was implemented over UDP with non-confirmable messages

    between the publisher and the broker to reduce overhead.HTTP protocol was used over TCP for

  • 2.4 Conclusion 11

    high reliability between the broker and the subscriber. The ESP8266 publisher client was imple-

    mented using C and the OpenEHR subscriber client using Java.

    2.3.3.2 Hardware

    The sensor used is optical and tracks HR and pulse oximetry (oxygen saturation).

    The ADN-AE runs on an ESP8266 module and supports the use of buffers, which are also

    used to holda data during temporary connectivity losses. The data is sent via a WiFi network

    to the IN-CSE that acts as a broker in the communication model. These modules offer multiple

    sleep modes that grant them the ultra-low-power feature, imposing different trade-offs between

    end-to-end latency and energy consumption.

    The IN-CSE runs on a dedicated server, in a computerwhile the IN-AE (subscriber client) was

    running on another computer. They were connected through a Fast Ethernet network (100Mb/s).

    The ESP8266 publisher client (ADN-AE) connected to the broker via WiFi using the default

    802.11 protocol.

    2.4 Conclusion

    In this chapter we made a description of the most common techniques to measure heart rate

    and oxygen saturation. Focusing particularly on the techniques that are the least invasive and

    inexpensive. Then a description of three example systems was made, found in the literature. These

    examples are within this dissertation’s interest since they aim three typical use cases, namely,

    home monitoring, sports events and emergency wards. These systems allow understanding the

    limitations of current technologies so that they can be mitigated.

    This work will focus on the low-level implementation of the sensor, with a similar high-level

    architecture as presented in the Emergency ward example in (2.3.3).

  • 12 Bibliographic research

  • Chapter 3

    Photoplethysmography sensor based onESP32

    The Internet of Things (IoT) market has expanded at a very fast pace over the last few years,

    trying to keep up the demand regarding communication and control for a wide range of devices

    and gadgets.

    This chapter describes the system proposed, which follows the IoT paradigm, its components

    and the system as a whole. A decision was made to use the ESP32 processor as the sensor’s

    platform, using its computing power (32-bit dual-core processor) for the necessary processing of

    signal, and the WiFi interface to connect to the system infrastructure. Then,a PPG sensor is used,

    namely the MAX 30100, for which there is plenty information available online.

    3.1 ESP32 platform

    The ESP32 is a family of processors created by Espressif Systems released in September 2016

    as successors for the ESP8266 modules. This system is powered by a dual-core 32-bit Xtensa LX6

    microprocessor, which has a Harvard architecture. All memory slots and peripherals are located

    on the data bus and/or the instruction bus of these CPUs. The address mapping of two CPUs

    is symmetric, meaning that they use the same addresses to access the same memory. Multiple

    peripherals in the system can access embedded memory via DMA. The two CPUs are named

    “PRO-CPU”, which is used to run the WiFi software and TCP/IP protocol stack, and “APP-CPU”,

    used to run the application’s software. However, for most purposes the two CPUs are identical and

    share the same memory making them interchangeable.

    They are the a very good solution for a wearable system like this since they are very small,

    have a WiFi module built in and come with pre-defined sleep modes that aim power saving.

    Concerning its battery life, that is not a simple matter since the ESP32 can consume up to 260

    mA. Thankfully, there are a lot of ways this value can be decreased. For example, it already comes

    with 3 pre-defined power saving modes: modem-sleep, light-sleep and deep-sleep (currents can

    get as low as 20 µA). Each one of them turns off parts of the system in order to save energy.

    13

  • 14 Photoplethysmography sensor based on ESP32

    There are 5 variations of the ESP32 chip:

    1) ESP32-DOWDQ6.

    2) ESP32-D0WD.

    3) ESP32-D2WD.

    4) ESP32-S0WD.

    5) ESP32-PICO-D4.

    Primarily these relate to how many CPU cores (1 or 2) and whether there is embedded flash

    memory or not.

    For this project ESP32-D2WD was chosen, which combines 16 MB of flash memory and a

    dual core processor.

    Table 3.1: ESP32 specifications

    Voltage 3.3 VCurrent consumption (I) 20 µA < I < 260mA

    Processor Speed Dual 240 MHzInternal ROM memory 448 KBytes

    RAM memory 520 KBytesRTC FAST Memory 8 KBytesRTC SLOW Memory 8 KBytes

    GPIOs 34Analog to Digital pins 7

    Maximum concurrent TCP connections 16DMA 16 capable modules

    802.11 support 11b/g/n/e/iBluetooth BLE

    SDIO Slave 1EMAC 1

    SDMMC 1SPI 3I2S 2I2C 2

    UART 3

    3.2 MAX30100 sensor

    The MAX30100 is a highly integrated solution as pulse oximeter or a heart rate monitor de-

    signed for the requirements of wearable devices. It comprehends two LEDs: red (λR = 660nm)

  • 3.2 MAX30100 sensor 15

    and infra-red (λIR = 880nm), a photodetector, optimized optics, and low-noise analog signal pro-cessing to aid in detecting pulse oximetry and heart-rate signals. The power supply can be any

    value between 1.8V and 3.3V and it has an insignificant standby current consumption.

    At the hardware level, only 4 pins are going to be used from the MAX30100: Vcc, Gnd,

    SDA and SCL. This sensor provides a 16-bit FIFO buffer to store each sample (HR and SpO2),

    enabling it to be connected to a shared bus. The MAX30100 includes a discrete time filter to reject

    50Hz/60Hz noise.

    3.2.1 Registers

    This sensor can be fully customized through its registers: LED current, Pulse width and

    Sampling Frequency. A full description of all registers (each register is 8bits long) is listed below

    (Chapter 4.1, page 29 for a list with all possible configurations).

    3.2.1.1 FIFO

    The MAX30100 sensor is equipped with a FIFO buffer which is accessed via Inter-Integrated

    Circuit protocol (I2C).

    All registers concerning the FIFO (0x02-0x05) are 4 bits long with the exception of "FIFO

    Data". All of them are listed bellow:

    1) FIFO write pointer (0x02): points to the location where the sensor shall write the next

    sample. It automatically advances with each sample pushed into the FIFO.

    2) FIFO Overflow Counter (0x03) : When the FIFO is completely full, samples are not

    pushed on to the FIFO, they are lost instead. OVF-COUNTER counts the number of samples that

    have been lost.

    3) FIFO Read Pointer (0x04): points to the location where the ESP32 can get the next

    sample from the FIFO via I2C. Similarly to FIFO write pointer, it automatically advances each

    time a sample is withdrawn from FIFO.

    4) FIFO Data (0x05): The FIFO Circular Buffer has a capacity of 64 bytes: 16 samples of

    4 bytes (2 bytes for each LED sample). This register points to the next sample to be read from the

    FIFO. Unlike previous ones, FIFO DATA register does not automatically increment the register

    address. Since each sample has 4 bytes of data and FIFO Data register has only 1 Byte, it has to

    be read 4 times to get one sample (and incremented in order not to read the same sample again).

    When using lower ADC resolution the data is left-justified as observed in Figure 3.1, meaning

    that the most significant bit is always in the left-most position, the most significant bit, regardless

    of ADC resolution (sample size).

    3.2.1.2 Mode configuration

    This register allows the user to choose between two operating modes:

  • 16 Photoplethysmography sensor based on ESP32

    Figure 3.1: Graphical Representation of the FIFO Data Register

    1) Heart Rate only: MODE[2:0] = 010.

    2) Heart Rate and SpO2: MODE[2:0] = 011.

    3.2.1.3 SpO2 configuration

    This register (0x07) has the following control bits:

    1) SpO2 High Resolution Enable [6]: When this bit is set to high SpO2 ADC resolution is

    16-bit with 1600µs pulse width. Otherwise the ADC resolution and pulse width can be configuredto any chosen value.

    2) SpO2 Sample Rate Control [4:2]: sets the effective sampling rate for both IR and red

    LED samples.

    3) LED Pulse Width Control [1:0]: these two bits are used to choose the pulse width which

    is directly related to the ADC sample size.

    Table 3.2: Possible MAX30100 Sampling Frequency values

    SPO2-SR[2:0] Samples per Second000 50001 100010 167011 200100 400101 600110 800111 1000

  • 3.3 Connecting ESP32 and MAX30100 17

    Table 3.3: Possible LED Pulse Width values

    LED-PW [1:0] Pulse Width (µs) ADC Resolution (bits)00 200 1301 400 1410 800 1511 1600 16

    3.2.1.4 LED configuration

    This register (0x09) controls both LEDs current. Bits [7:4] for red LED and [3:0] for IR LED.

    Table 3.4: Possible LED current values

    Red-PA[3:0] or IR-PA[3:0] Led Current (mA)0000 0.00001 4.40010 7.60011 11.00100 14.20101 17.40110 20.80111 24.01000 27.11001 30.61010 33.81011 37.01100 40.21101 43.61110 46.81111 50.0

    3.3 Connecting ESP32 and MAX30100

    The data collected from the sensor is sent to the microprocessor using I2C. This protocol is

    a synchronous, multi-master, multi-slave, half-duplex serial computer bus invented by Philips in

    1982. It covers transmission speeds from 0.1 to 5 Megabits per second. In order to implement such

    communication it is needed to connect two signals: Serial Data (SDA) and Serial Clock (SCL).

    The data is sent in 9-bit packages which contain 8 data bits and one bit for acknowledge purposes.

    The schematic of the connection between the MAX30100 and the ESP32 can be seen in Figure

    3.2.

  • 18 Photoplethysmography sensor based on ESP32

    Figure 3.2: Schematic of the system

    3.4 Programming the system

    The ESP32 module was programmed in C with compliance to MISRA C standards.

    Expressif systems offers a robust software application development environment to help de-

    velopers in order to easily take advantage of their computing modules named Espressif IoT Devel-

    opment Framework (ESP-IDF). This platform allows configuring the microprocessor parameters,

    building the project and flashing it onto the device. In addition, this framework has a monitor

    command that allows the terminal to display the messages printed onto the port where the ESP32

    is connected.

    The FreeRTOS (Real Time Operating System) operating system was used. It is a real-time

    operating system for embedded systems distributed under MIT Licence. FreeRTOS provides mul-

    tiple methods for threads or tasks, mutexes, semaphores and software timers. FreeRTOS is de-

    signed to run on a single core. However, since the ESP32 dual core CPUs are identical and share

    the same memory, this allows tasks to run on both cores interchangeably. This operating system

    helps developing real-time applications.

    3.4.1 Reading samples

    In order to read samples from the MAX30100 sensor, I2C communication must be config-

    ured. This is set in funcion "max30100-master-init()". This function receives the SDA and SCL

    pins which the sensor is connected to. It also has as an argument the i2c-port (I2C-NUM-0 is

  • 3.4 Programming the system 19

    used), pullup-en(whether internal pull-up resistors are needed or not for SDA and SCL) and i2c-

    freq (I2C frequency is set to 100000 bits per second). This is everything needed to start the I2C

    communication.

    Furthermore, the sensor’s registers must be configured in order to choose operating mode.

    "max30100-init()" is responsible for such configuration and also resetting all values, having the

    following variables as parameters:

    1) i2c-port: port to which the sensor is connected, there are two options: I2C-NUM-0 and

    I2C-NUM-1.

    2) Operating-mode: either HR-only or SpO2 and HR.

    3) Sampling-rate: values can be seen in 3.7.

    4) Red-led-pulse-width: values can be seen in 3.7.

    5) Ir-led-pulse-width: values can be seen in 3.6.

    6) Starting-red-led-current. values can be seen in 3.6.

    7) Mean-filter-size: the size of the filter (3.4.2.2).

    8) High-res-mode: when set to TRUE, ADC resolution is 16-bit with 1600µs pulse width.

    9) Debug.

    The last parameter (debug) when set to "TRUE" enables the printing of state messages that

    allow the user to understand what is happening in order to perform debugging. All configurations

    for each parameter can be seen further on (page 29). A function was created for each parameter in

    order to write its respective configuration onto the sensor’s register. An example for the Operating

    mode is "set-mode()"

    After all configurations are made, "read-FIFO()" must be called in order to read and store the

    FIFO data. This function needs an address and an array in order to start reading in the specified

    address and store the data in the array.

    3.4.2 Heart rate monitor

    This section explains how to set the system to acquire the user’s heart rate values only. For

    this, it is needed to filter the signal in order to remove unwanted noise and offsets to properly be

    able to interpret the obtained values.

    Firstly, the operation mode must be set to HR-only (sending 0x02 to "MODE config"). This is

    accomplished with the function "setMode()". Since the IR LED is the one responsible for measur-

    ing the BPM values, its current must be set. The function responsible is "setLEDCurrents()".

    The second stage is to filter the signal, although samples can already be read from the buffer

    using "readFIFO()". The plot in Figure 3.3 shows two unwanted signals that must be mitigated:

    the DC offset of 50 000 units, and the fast oscillation.

  • 20 Photoplethysmography sensor based on ESP32

    Figure 3.3: Plot of values unfiltered

    3.4.2.1 DC removal

    This filter leaves the AC part of the signal by removing its offset. The function responsible for

    this ("dc-removal()") computes Equations 3.1 and 3.2 (as presented in [41]), in which:

    y(t): Filter’s output.

    x(t): Input of the filter.

    ω(t): Intermediate value.α: The constant responsible for the filtering in defined by the user between [0,1]. If this

    number is zero, all the signal is filtered. In a DC filter it is desired for α to be a value close to one(0.95 was chosen).

    ω(t) = x(t) + α.ω(t −1) (3.1)

    y(t) = ω(t) − ω(t −1) (3.2)

    The output graph oscillates around the zero reference level, as it can be observed in figure 3.4,

    page 21.

    3.4.2.2 Mean median filter

    This filter, as the name suggests, is a mean filter used to clean the signal in order to better

    detect pulses. It runs the signal, entry by entry, replacing each value with the difference between

    the average of the entries and the previous value ("mean-diff()" function). The number of values

    used can vary and is up to the user to set this number in MEAN-FILTER-SIZE variable (MEAN-

    FILTER-SIZE is set to 15 samples in the final version of the filter).

  • 3.4 Programming the system 21

    Figure 3.4: Plot of values after offset removal

    The pulses take place where the derivative of the signal has maximum values. The signal starts

    to take form and resembling an Electrocardiogram (Figure 3.5).

    3.4.2.3 Butterworth filter

    Despite the improvement achieved with the previous filter, some smoothing would improve

    its analysis. This can be accomplished by removing the higher level harmonics with a low-pass

    Butterworth filter. This filter is designed to have a flat response in the pass-band frequency and to

    cut off the signal in the undesired frequencies [42]. In order to implement this filter, two variables

    must be calculated:

    1) Fs: Sampling Rate.

    2) Fc: Cut-off frequency.

    The sampling frequency is a MAX30100 configurable parameter (all sampling rates are listed

    in chapter 4.1, page 29). To explain the implementation of the butterworth filter 100 Hz frequency

    rate will be considered.

    The cut-off frequency must be determined based on the desired range of HR operation (max-

    imum and minimum BPM expected values). The minimum and maximum BPM values chosen

    were 50 and 220, respectively.

    In order to calculate the frequencies, a division of the BPM value by 60 (seconds in a minute)

    must take place (Equations 3.3 and 3.4).

    fmin =5060

    = 0.8(3)Hz (3.3)

    fmax =22060

    = 3.(6)Hz (3.4)

  • 22 Photoplethysmography sensor based on ESP32

    Figure 3.5: Plot of values after offset removal and median filtering

    The filter works not with these two values, but with Rn, the relationship between both (Equation

    3.5)

    Rn =FcFs

    (3.5)

    However, the amount of time that was measured that was needed to perform a loop (reading

    and filtering sensor data) corresponded to 75 Hz frequency. This would lead to cutting off wanted

    frequencies. To solve this, the cut-off frequency was decreased to 15 Hz. This is not a major

    problem since the cut-off of frequency is around 180 BPM instead of 220, but nonetheless, if

    usage in intense sport training is intended, this issue may need further study. The function that

    implements this filter is called "lpb-filter()" (calculating of the parameters α and β with the chosenfrequencies[43]) through computing Equations 3.6, 3.7 and 3.8.

    ir.value[0] = ir.value[1] (3.6)

    ir.value[1] = (α . x) + (β . ir.value[0]) (3.7)

    ir.result = ir.value[0] + ir.value[1] (3.8)

    with:

    ir.value : infra-red LED measured value.

    ir.result : infra-red LED filtered value.

    α = 0.245237

    β = 0.509525

  • 3.4 Programming the system 23

    Figure 3.6: Plot of values after offset removal, median and butterworth filtering (final signal)

    3.4.2.4 Heart beat detection

    Once the signal is cleaned up and filtered, BPM values can be easily calculated. In order to

    calculate these values, a state machine was implemented (Figure 3.7). The idea is quite simple:

    1) Starting in Idle state, all values are reset to zero and the state machine is waiting for the

    sensor’s IR value to reach a minimum threshold. When it does, the "Upwards Tracing" state is

    activated.

    2) When in "Upwards Tracing" state, a timestamp is taken to enable heart rate calculation.

    When the sensor value reaches a value smaller or equal to its previous one (local maximum de-

    tected) it switches to "Peak Reached" state.

    3) In "Peak Reached 1" the state machine starts calculating BPM value and automatically

    switches to "Peak Reached 2" so that the function "detect-pulse()" only returns True for the mini-

    mum amount of time possible.

    4) When in "Peak Reached 2", the state machine keeps calculating BMP value, since it did

    not have enough time to complete it. Furthermore it waits until the sensor reading is bellow the

    maximum accepted value to shift to "Idle" and therefore, complete a loop.

    Finally, every time a pulse is detected, depending on the operating mode, results are printed.

    3.4.3 Pulse oximeter

    As it was previously mentioned in 2.2, oxygen saturation levels can be measured by calculating

    the ratio between the light absorbed from IR LED and red LED. This procedure is going to be

    explained and detailed. The perfect calibration of the sensor varies within each patient, in other

    words, empirical data is needed in order to create a proper lookup table to convert values.

    The use of two different wavelengths of light is needed in order to reduce the mathematical

    complexity of the process. Each LED is turned on and off alternately and measures are kept in the

    MAX30100 storage buffer.

  • 24 Photoplethysmography sensor based on ESP32

    Figure 3.7: State Machine for beat detection

    In theory, the oxygen saturation is proportional to R (Equation 3.9). In practice, this rela-

    tionship is not so linear (Figure 3.8). For this reason a look up table is used to provide correct

    values.

    R =log(Iac)λ1log(Iac)λ2

    (3.9)

    Iac is the light intensity for which only the AC signal is present, λ1 is 650 nanometers wave-length and λ2 stands for 950 nanometers wavelength in light spectrum.

    Furthermore, there are a DC and an AC components in the measurements. The AC component

    is due to the blood vessels absorption of light. The DC component exists because of the skin and

    other tissue’s absorption.

    Analog signal processing is of no use here since the LEDs work in a pulsating mode, therefore

    digitally processing the signal is a must. Firstly, in order to have the program measuring Oxygen

    levels it is mandatory to set the mode to "SaO2 + HR". This is accomplished writing 0x03 onto the

    "MODE config" register. This turns on current supply for both LEDs and ensures that the sensors

    starts filling FIFO buffer with samples from both light spectrums.

    The current of each LED is controlled so that the DC values match one another with a small

    tolerance [44]. The function implemented is quite simple: first it checks if the difference between

    values from both LEDs is within the threshold and if so, no further calculation is needed. If not,

    one of two things will take place:

    1) If (IR LED value - red LED value > acceptable difference) and (actual red LED current

    < maximum LED current) then the red LED current shall be increased.

  • 3.4 Programming the system 25

    2) If (red LED value - IR LED value > acceptable difference) and (actual red LED current

    > minimum LED current) then the red LED current ought to be decreased.

    Figure 3.8: Empirical and Theoretical R to SaO2

    This intensities adjustment can only be made with a maximum period that is established by

    the user (red-current-adj-ms is set to 500 milliseconds) in order to let values stabilize.

    Once the DC values match, SpO2 is calculated by dividing the logarithms of the root mean

    square (RMS) values of the measurements. The RMS values ought to be calculated for the whole

    signal, not only when a pulse is detected. Since the RMS is a mean of a number of samples, it

    should be reset after a period of time (final implementation is set to 4 heart beats)

    This is an empirical estimation, since it is needed to properly calibrate your sensor in order

    to produce accurate and precise measurements (empirical data is needed and it varies with each

    patient). Nonetheless a standard model for computing SpO2 [45] is represented in Equation 3.10.

    SpO2 = 110−25∗R (3.10)

    3.4.4 Code organization

    The program consists of two tasks: "task-BPM" and "task-sleep" (Figure 3.9). "Task-sleep"

    has a higher priority and is used to either just pause "task-BPM" or to enter a sleep mode. For this

    to be feasible, this task has a higher priority (value 2) than task-BPM (value 1). Both tasks are

    synchronously released, since "task-sleep" has a higher priority it will preempt "Task-BPM".

  • 26 Photoplethysmography sensor based on ESP32

    Figure 3.9: Execution of tasks with CH1="task-BMP"" and CH2="task-sleep"

    3.4.4.1 Task-BPM

    As the name suggests, this task does the actual work of measuring HR and SpO2. In order

    to accomplish this, it is a constantly updating both red and IR raw values and filtering the signal

    (see previous Section 3.4.2). Once the signal is ready, it waits until "pulse-detect()" returns true,

    when so, it calculates the BPM and SpO2 values and prints them. Subsequently it goes to sleep

    accordingly to the sensor’s update rate using "vTaskDelay(1/Update-rate)".

    Therefore, this task has a period of 1/Update-rate. The final system has 50 Hz which corre-

    sponds to a period of 0.02 seconds as it can be seen in Figure 3.10. The execution time of the task

    with pulse width of 200 µs is 879.2 µs (Figure 3.11).

    3.4.4.2 Task-sleep

    This task is used to pause "task-BPM" in order to save energy. This task will allow taking

    advantage of light-sleep and deep-sleep modes, since the processor needs to stop sampling to

    enter them due to the high sampling rate.

    As it was previously mentioned, this task has a higher priority, allowing it to interrupt "task-

    BPM". For this, "Task-sleep" will stop executing for a period of time (vTaskDelay(delay)) en-

    abling the CPU to execute the other task for the amount of time specified in "delay". Afterwards,

    it suspends "Task-BPM" ("vTaskSuspend(get-bpmHandler)") for a period of time specified in

    "xTimerStart()". When timer reaches the specified value, it resumes "task-BPM" (vTaskResume(get-

    bpmHandler)).

  • 3.5 WiFi transmission 27

    Figure 3.10: Frequency of task-BPM

    Different times will be tested in Chapter 4. In order to further study the energy consumption of

    the system created, instead of simply suspending "task-BPM", deep-sleep and light sleep modes

    will be configured to start with a pre-defined timer as wake-up cause ("esp-sleep-enable-timer-

    wakeup(time-to-sleep)" and "esp-deep-sleep-start()" or "esp-light-sleep-start()").

    3.5 WiFi transmission

    The ESP32 has a WiFi module built in which enables it to create TCP/IP connections over

    wireless communication links. It can play one of two different roles, or even both:

    1) Access Point: This entity acts as a hub of communications. It is connected to a router

    (also an Access Point) and acts as one for the rest of the network. Moreover, WiFi connections are

    then formed to the access point (through devices called stations) and TCP/IP traffic flows through

    the access point.

    2) Station: this mode allows the ESP node to connect to an existing WiFi infrastructure,

    through the respective AP. This is the mode used in this system and is the only one supported

    when using modem-sleep mode.

    Since the major focus of this work was the programming of the MAX30100 and studying the

    system’s power consumption with different configuration modes, the actual sending of messages

    was not inserted in the program. However, the measurement on the impact of the connection to an

    AP was made, since it is part of the infrastructure energy cost.

  • 28 Photoplethysmography sensor based on ESP32

    Figure 3.11: Execution time of task-BPM

    3.6 Conclusion

    This chapter presented a description of how to build a PPG sensor using the MAX 30100

    sensor attached to the ESP32 IoT node. Furthermore the Chapter assessed how the sensor provides

    data, how it can be connected to the processor and how the signal must be processed in order

    to extract HR and SpO2 values. This work used used the functions provided by Angelo Elias

    Dalzotto [46] were used to develop the software application using two tasks of the FreeRTOS

    operating system. The next chapter will describe and characterize experimentally the operation of

    the device in different configurations while measuring the current consumption for each one.

  • Chapter 4

    Experimental characterization

    This section presents an evaluation of different system configurations, not only assessing Qual-

    ity of Service (QoS) but also taking into consideration the overall energy consumption of the sys-

    tem. The experiments conducted aim at finding the best effective and robust configurations while

    weighting and judging the trade-off between performance and energy consumption in order to

    build a final system with an adequate autonomy.

    4.1 MAX30100 parameters

    The MAX30100 sensor has 3 variable parameters:

    1) LED current.

    2) Sampling Frequency.

    3) LED Pulse Width.

    Led current can be controlled through registers Red-PA [3:0] OR IR-PA [3:0] for each

    LED, red and infra-red respectively. Since it is a 4 bit register for each LED 16 currents can be set

    (Table 3.4). LED-PW[1:0] register can be used to choose both LEDs pulse width. Because it has

    only two bits, it allows 4 different configurations shown in Table 3.3. The Frequency at which the

    MAX30100 samples data can be set in SPO2-SR [2:0] register. Since it has 3 bits it corresponds

    to 8 possible values represented in Table 3.2.

    Some configurations cannot be chosen since the LED pulses start to overlap each other due to

    high sampling frequency and pulse width values. Moreover it is needed to take into consideration

    the rising and falling time of the current levels. The Tables in Figures 4.1 and 4.2 represent the

    allowed configurations (in green).

    29

  • 30 Experimental characterization

    Figure 4.1: HR only mode (allowed settings)

    Figure 4.2: HR and SpO2 mode (allowed settings)

    4.2 Quality of Service experiments

    Since there are 16 possible LED currents, 4 pulse width values and 8 different frequencies, this

    leads to a total of 512 possible configurations. To reduce test time a set of values was chosen that

    can represent the relationships between variables:

    1) LED current (mA): 50.0, 43.6, 37.0, 30.6, 24.0, 17.4, 11.0 and 4.4.

    2) Sampling frequency (Hz): 800, 400, 200, 100 and 50.

    3) Pulse width (µs): 1600, 800, 400 and 200.

    Firstly, experiments were carried out to assess the system’s time to stabilize around a value.

    This time depended on the configuration since some have more samples per second than others.

    On most setups this time was around 2 to 4 seconds ranging up to 6.5 seconds.

    Since the sensor is highly unstable, in order to access Quality of Service, sets of 10 different

    measurements were made, each during 10 seconds, counting how many measurements reached a

    stable value. This way the system had enough time to reach a stable condition feeding the user

  • 4.2 Quality of Service experiments 31

    correct information. This experiment aims to quantify the relationship between relevant samples

    and total number of samples, thus allowing the classification and comparison of different config-

    urations. Furthermore, a clock glass was used since it was observed that it improved significantly

    the finger steadiness, resulting in more beats detected and more precise results. For a sample of

    10 second to be considered acceptable it must meet the following requirements:

    1) Values must be reasonably close to each other.

    2) At least half of the heart beats must be detected.

    The number 6 was chosen as the minimum value of beats that need to be detected because the

    best configurations acquired 12 results .

    The results (displayed in Tables 4.1 to 4.8) were divided in 4 different groups according to the

    number of valid measurements:

    1) Less than five (red).

    2) 5-6 (orange).

    3) 7-8 (yellow).

    4) 9-10 (green).

    Table 4.1: Results for IR LED current = 50 mA)

    Table 4.2: Results for IR LED current = 43.6 mA

    As expected, the results obtained with the two highest currents considered (50.0 and 43.6 mA)

    are almost all acceptable.

  • 32 Experimental characterization

    Table 4.3: Results for IR LED current = 37 mA

    With 37.0 mA of current it is noticeable that some configurations are unstable, although most

    of them show 9 or 10 valid measurements.

    Table 4.4: Results for IR LED current = 30.6 mA

    With IR LED current values of 30.6 mA or less, the results obtained are very unstable with

    many configurations not being able to retrieve any values at all.

    Table 4.5: Results for IR LED current = 24 mA

    Since the 37mA was the lowest IR LED current that had configurations which produced 9 or

    10 valid measurements out of 10, it was chosen for the final implementation. The pulse width and

    frequency values chosen were 200 µa and 50 Hz, respectively, since this arrangement generates

  • 4.3 Energy consumption experiments 33

    Table 4.6: Results for IR LED current = 17.4 mA

    Table 4.7: Results for IR LED current = 11 mA

    Table 4.8: Results for IR LED current = 4 mA

    valid results, making the system robust, while lessening the current consumed by the module as it

    will be mentioned afterwards.

    4.3 Energy consumption experiments

    In this section, experiments were conducted with the purpose of choosing the most energy-

    efficient configuration that still provides the desired quality of service (Section 4.2). In order to

    measure the energy consumption, Monsoon Low voltage Power Monitor was used [47]. The power

    monitor can measure the current consumption through an USB cable that can be directly connected

  • 34 Experimental characterization

    to the ESP32. In a first phase, measurements were made on the average current consumed varying

    all different parameters. Since the data acquired for each configuration had over 500 000 values,

    box-plots were created to facilitate comprehension and analysis (Figures 4.3, 4.4, 4.5 and 4.6).

    Afterwards, with the average current consumption for each configuration, it was easily understood

    that the overall consumption of the system depends linearly of each variable (Figures 4.7, 4.9 and

    4.8).

    Figure 4.3: Box plot of Currents Consumed while varying Frequency for 200µs Pulse Width

    Since 43.6 mA was the lowest IR LED current that produced stable results for all variable

    arrangements, average current consumption of the system was measured for all configurations

    with this current supply. After having the measured values, a 3D plot was created with the device’s

    average consumed current as a function of pulse width and sampling frequency (Figure 4.10)

    containing the representation of all measured points used to create this surface as well.

    With the observed consumption values an empirical model was developed in order to represent

    the variation of the device’s current consumption as a function of the referred configurations.

    Figures 4.7, 4.8 and 4.9 show a clear linear relationship with respect to each of the configuration

    dimensions. Microsoft Excel’s GRC non-linear engine was used to compute the parameters of the

    linear tri-dimensional model (z = a∗ x+b∗ y+ c), which resulted in the following:1) a = 0.015082.

    2) b = 0.037259.

    3) c = 53.31001.

    4) coefficient of determination (R2) = 0.78

  • 4.3 Energy consumption experiments 35

    Figure 4.4: Box plot of Currents Consumed while varying Frequency for 400µs Pulse Width

    Figure 4.5: Box plot of Currents Consumed while varying Frequency for 800µs Pulse Width

    Since "b" is more than the double of "a", it can be concluded that sampling frequency (y) has

    more impact than pulse width (x) with respect to current consumption, thus on the system’s battery

    life.

  • 36 Experimental characterization

    Figure 4.6: Box plot of Currents Consumed while varying Frequency for 1600µs Pulse Width

    Figure 4.7: Plot of average Current Consumed while varying Frequency for each Pulse Width

    The coefficient of correlation is a value ranging from 0 to 1. This values quantifies how much

    the linear model resembles the empirical data, with 1 being a perfect match.

  • 4.3 Energy consumption experiments 37

    Figure 4.8: Plot of average Current Consumed while varying IR LED current with 200 µs PulseWidth and 50Hz of sampling Frequency

    Figure 4.9: Plot of average Current Consumed while varying Pulse Width for each Frequency

    4.3.1 Sleep modes

    This section shows the current consumption of the device as a function of different sleep

    modes, to assess their effectiveness. The ESP32 has 3 pre-configured sleep modes: Modem-sleep

  • 38 Experimental characterization

    Figure 4.10: Surface created with average current consumed for each configuration with LEDcurrent = 43.6 mA

    mode, in which the module’s WiFi circuit is shut down when at idle for a certain time, but without

    breaking WiFi connectivity; Light-sleep mode, which differs from the Modem-sleep by pending

    the module’s CPU, shutting down the crystal oscillator-based clock, keeping a less precise RTC

    clock; and, finally, Deep-sleep mode, where the whole module is shut down, breaking the WiFi

    connectivity.

    Considering that the sensor needs constant sampling, activating sleep modes between sampling

    is not possible, since these occur with relatively high frequency (at least 50 Hz). Following this

    idea, 3 scenarios will be tested, and in all of them task-BPM will have an execution time of 10

    seconds (time during which the sampling is carried out) but its period will vary : 10, 20 and 40

    seconds, caused by the preemption of task-sleep.

    Since light and deep-sleep modes set the processor to an idle state, they cannot be used while

    the ESP32 module is acquiring samples from the MAX30100 sensor. The reason for pausing the

    task that does the actual sampling ("task-BPM") is to enable the microprocessor to enter these

    low-power modes, in order to further improve battery lifetime.

    Differently, "modem-sleep" mode can be turned on and the system chooses when to take ad-

    vantage from it, by reducing the number of WiFi transmissions. For this it is needed to set the

    following configuration in "idf menuconfig": enable support for power management and tickless

    idle mode and use RTC timer as reference.

    Furthermore, more configuration regarding this power mode can be set:

  • 4.3 Energy consumption experiments 39

    1) WiFi listen interval: Interval for a station to listen to the beacon from the AP. The unit

    of listen interval is one beacon interval. For example, the beacon interval is 100 ms and listen

    interval was set to 3, meaning that the interval the station had to listen to the beacon is 300 ms.

    2) Power save mode can be set to 3 different values: none, minimum modem and maximum

    modem. This is the power save mode for the ESP32 to use. Modem sleep mode includes minimum

    and maximum power save modes. In minimum power save mode, the station wakes up every

    Delivery Traffic Indication Message (DTIM) to receive a beacon (this was the chosen mode).

    Broadcast data will not be lost because it is transmitted right after DTIM. However, it can not

    save much more power if DTIM is short and DTIM is determined by AP. In maximum power save

    mode, the station wakes up every listen interval to receive the beacon. Broadcast data may be lost

    because the station may be in sleep state at DTIM time. With a longer listen interval, more power

    is saved but broadcast data can be lost more easily.

    3) Maximum CPU frequency: Maximum CPU frequency to use for dynamic frequency

    scaling. 3 values can be set: 80 MHz, 160 MHz or 240 MHz. The module was programmed to

    have a maximum CPU frequency of 80 MHz.

    4) Minimum CPU frequency: Minimum CPU frequency to use for dynamic frequency scal-

    ing. Should be set to XTAL frequency or XTAL frequency divided by integer. This value was set

    to 10 MHz.

    The actual current consumption measurements were made in the following order:

    1) Normal operation mode: firstly, always sampling i.e., no pauses. Then setting "task-

    BPM" to 10, 20 and 40 second period.

    2) Modem-sleep: continuous sampling and setting "task-BPM" period to 10, 20 and 40

    seconds.

    3) Light-sleep and deep-sleep: setting "task-BPM" period to 10, 20 and 40 seconds.

    In order to calculate battery life a 1000 mAh battery was taken into consideration, from full

    charge to a 10% depletion, because it can achieve a sufficient battery life for the use cases that

    were considered and it has a small size which does not compromise the size of the wearable. The

    results obtained with the power monitor can be seen in Figures 4.11 to 4.18.

    When observing Figures 4.11 and 4.12 it is clear that using modem-sleep has a considerable

    impact regarding the overall energy consumption of the system. This is accomplished because

    the previously mentioned sleep-mode, although maintaining WiFi connectivity, turns off the WiFi

    circuit, reducing the amount of data transmitted. Therefore leading to a significant decrease in the

    average current consumed by the system, when compared to normal operation mode.

    The spikes seen in both images are a result of WiFi connectivity: the AP is constantly sending

    periodic beacon messages that are vital for the proper operation of the network. They contain all

    its information and are also used to synchronize the members of this network.

  • 40 Experimental characterization

    Figure 4.11: Current consumed in normal mode with task-sleep deactivated

    Figure 4.12: Current consumed in modem-sleep mode with task-sleep deactivated

    When inspecting Figures 4.13 to 4.16 there are some important facts that can be related to

    these consumption graphs. With respect to Figures 4.13 and 4.14 there is a clear offset current

    when task-sleep is not preempting task-BPM, but the WiFi beacons from the AP are still present.

    When task-sleep is being executed by the CPU the overall consumption of the module drops due

    to CPU idle-task being activated. This task decreases the power consumption of the module when

    the CPUs are not being used, even in normal operation mode.

    Looking at Figures 4.15 and 4.16 it is clearly identified when the processor is in light-sleep

    or deep-sleep mode, since the current drops abruptly. it is noticeable a major increase in current

    when waking up from deep-sleep. When the system enters this power saving mode, shuts down the

  • 4.3 Energy consumption experiments 41

    Figure 4.13: Current consumed in normal mode with task-sleep active for 10 seconds

    Figure 4.14: Current consumed in modem-sleep mode with task-sleep active for 10 seconds

    whole module, therefore, breaking WiFi connectivity. It keeps only an ultra-low-power processor

    (ULT co-processor) which allows the module to wake up at a specified time, by external events, or

    a combination of these. For that reason, when it wakes up from deep-sleep, it is needed to power

    on the digital core (which is gated in light-sleep, stalling the CPUs) and to reestablish the WiFi

    connection, leading to a substantial increase in current consumption roughly for the first 3 seconds.

    Furthermore, there are some ripples when the system is in light-sleep that are not present when in

    deep-sleep, these are due to stalling the CPUs and keeping a less precise RTC clock, instead of

    powering them off.

  • 42 Experimental characterization

    Figure 4.15: Current consumed in light-sleep mode with task-sleep active for 10 seconds

    Figure 4.16: Current consumed in deep-sleep mode with task-sleep active for 10 seconds

    The measurements were made with the FTDI USB interface attached to the microproces-

    sor, which consumes roughly 12 mA. This is the reason why it is not perceivable a difference in

    consumption when the module is in deep-sleep (around 10 µA) when comparing to light-sleep(roughly 1 mA).

    The graphic representations of the average current consumption of the system for each sleep-

    mode are not all represented since they are identical with respect to the content that can be inter-

    preted, varying only in the time which the current stays in a lower value (this time corresponds to

    the task-BPM period).

    In order to achieve the configuration with the best battery life possible, a combination of sleep

  • 4.3 Energy consumption experiments 43

    modes was implemented. Since light-sleep has best results for 10 and 20 seconds of "task-sleep"

    execution time and deep-sleep for 40, the modes were implemented with the respective values.

    The results are shown in Table 4.13.

    Figure 4.17: Current consumed in modem-sleep combined with light-sleep with task-sleep activefor 20 seconds

    Figure 4.18: Current consumed in modem-sleep combined with deep-sleep with task-sleep activefor 40 seconds

    Tables 4.9 to 4.13 summarize this information for better visualization and understanding, one

    for each operating mode.

  • 44 Experimental characterization

    Table 4.9: Current Consumption Average and Standard Deviation, and Battery life for Normaloperating mode

    Task-sleep (seconds) Current (mA) Avg / Std Deviation Battery Life (hours)0 65.60 / 28.78 15.2410 59.31 / 34.34 16.8620 57.31 / 29.83 17.4540 52.52 / 29.19 19.04

    Table 4.10: Current Consumption Average and Standard Deviation, and Battery life for Modem-sleep operating mode

    Task-sleep (seconds) Current (mA) Avg / Std Deviation Battery Life (hours)0 44.58 / 36.19 22.4310 39.20 / 37.48 25.5120 35.10 / 32.28 28.4940 32.91 / 35.79 30.39

    Table 4.11: Current Consumption Average and Standard Deviation, and Battery life for Light-sleep mode

    Task-sleep (seconds) Current (mA) Avg / Std Deviation Battery Life (hours)10 33.61 / 41.17 29.7520 26.61 / 39.11 37.5840 21.89 / 38.20 45.68

    Table 4.12: Current Consumption Average and Standard Deviation, and Battery life for Deep-sleepmode

    Task-sleep (seconds) Current (mA) Avg / Std Deviation Battery Life (hours)10 39.84 / 50.15 25.1020 31.00 / 49.85 32.2640 20.58 / 33.56 48.59

    Table 4.13: Current Consumption Average and Standard Deviation, and Battery life for Modemsleep combined with Light-sleep or Deep-sleep mode

    Sleep-Mode Task-sleep (seconds) Current (mA) Avg / Std Deviation Battery Life (hours)Light&Modem 10 26.19 / 27.90 38.18Light&Modem 20 21.73 / 32.46 46.02Deep&Modem 40 18.98 / 35.19 52.69

  • 4.4 Designing a production-ready device 45

    When observing the consumption in continuous sampling with modem-sleep mode and normal

    operation mode, it is clear a reduction in current consumption when using this power saving mode.

    For constant sampling, the battery life had an increase of 47%. Modem sleep increases battery life

    in an average of 55% when compared to normal operating mode.

    Light-sleep has an increase from 76% (task-BMP period of 10 seconds) up to 140% (task-BMP

    period of 40 seconds) when comparing to normal operating mode.

    In contrast, deep-sleep mode does not present an improvement in current consumption for all

    values of task-sleep execution time, when compared to light sleep mode. Only when task-sleep has

    an execution time of 40 seconds this sleep mode has an increase of 6% comparing with light-sleep,

    leading to an increase of 155% regarding normal operation mode battery life. When task-BPM has

    a period of 10 or 20 seconds this sleep mode is less efficient than light sleep, having an increase in

    current consumption of 16% and 14% respectively.

    Lastly, comparing the combined sleep modes configurations’ battery life to the normal operat-

    ing mode’s, it was measured an increase of 126%, 164%, 176% for 10, 20 and 40 seconds.

    As it was previously mentioned, these tests were conducted with the complete ESP32 devel-

    opment module, including the FTDI USB interface, which consumes roughly 12mA.This means,

    for example, that producing the device without the USB interface, and using the last configuration

    measured (Figure 4.18) would have a consumption of roughly 7 mA leading to a battery life of

    114 hours.

    4.4 Designing a production-ready device

    The use case scenarios that were considered may require more precision and efficiency, such

    as emergency wards, or not so much, like home monitoring. However, it was considered that

    the following configuration satisfies the requirements of all use cases, since it produces reliable

    results while maximizing battery life: an IR LED current of 37 mA, sampling frequency of 50Hz

    and pulse width of 200µs.

    As it was previously mentioned, the system battery life was calculated for a 1000 mAh bat-

    tery. In some use-cases, for example home monitoring, a larger battery could be used, leading to

    proportionally longer battery life time.

    With respect to power saving modes, in a scenario where the acquisition of the physiological

    signals is of major importance (for example in emergency wards) the light and deep-sleep modes

    should not take place since they imply relatively long periods (some seconds) without sampling,

    thus not supplying information to the user. In these cases, modem-sleep brings a significant im-

    provement regarding battery life time, allowing to extend it from 15h to over 22h.

    On the other hand, when the service interruptions can be tolerated, the use of deep-sleep mode

    provides a considerably longer battery life, extending beyond 48h when task-sleep is set to cause

    suspensions of 40s. Furthermore, if continuous monitoring is not mandatory, a combination of

    deep-sleep and modem sleep should take place since it enhances the system’s battery life in 8%

  • 46 Experimental characterization

    when compared to deep-sleep mode, leading to an estimate of almost 53 hours of life between

    charges.

    4.5 Conclusion

    In this chapter we presented an extensive experimental characterization of the ESP32-based

    PPG device proposed. In particular, measurements of the current consumption for all possible

    configurations and with different sleep-modes.

    The configuration that produced valid results and consumed less energy was: IR LED current

    of 37 mA, sampling frequency of 50Hz and pulse width of 200µs.It is noticeable an increase in battery life when using the sleep modes provided by esp-idf,

    becoming an asset when there is the possibility of halting the sampling of values for sub-minute

    intervals.

    One of the major difficulti