EdgeCare: phase 1 - setup IDE, MCU and BLE - element14 Community
EdgeCare: phase 2 - setup I2C, read MAX30100 and create VI in LabView - element14 Community
EdgeCare will be a Multi-Sensor Metabolic & Autonomic Datalogging Wearable with LabVIEW R&D Analytics.
***********************************************************************************************************************************************************
OBS: at this moment, the sensors sent by element14 to me for this contest are blocked in custom because an issue with my EORI code.
I will continue to work on this project using MAX30100 and DS18B20 temperature sensor.
These sensors will be replaced if the competition package reaches me in time.
***********************************************************************************************************************************************************
In this post I will present the following implementations:
A. Determination of body hydration using the dielectric profile (using GSR, Tau and Temp);
B. Cardiorespiratory efficiency and tissue perfusion (using HR and SpO2);
C. The body's thermoregulatory response (using Temp + GSR);
A. Determination of body hydration using the dielectric profile (using GSR, Tau and Temp);
The circuit used to determine the dielectric profile for skin and to show the hydratation indes on the body can be one of the following solutions:
- a simple one with two resistors;
- with a specialized circuit, like AD5933 or MAX30009 (future implementation/upgrade).
I used first option, with two resistors and two ports from ESP32C6, like in the schematic diagram:

OBS: the circuit used to read the braceled dry electrodes are powered borm an power bank to avoid interferenced induced by the switching power supply and to have a total separation between sensors and PC with Labview.
All the calculation are done in LabView.
Parameter used:
- GSR (Rskin in Kohm) - measure the DC resistance of the skin; It is particularly influenced by surface moisture, perspiration and electrolytes.
- Skin capacity (Cskin) - It reflects the dielectric properties of deep cellular tissue (dermis and living epidermis); It depends directly on the bound and free water within the cells and in the interstitial space.
- Tau (Rskin x Cskin in us) - It measures the response speed to a transient pulse; It measures the rate at which the skin's dielectric capacitance charges and discharges in response to a pulse applied by the ESP32-C6.
The parameters Temp (using DS10B20 one-wire temp sensor with metalic capsule), GSR and Tau (using the bracelet two electrodes) are read by the ESP32C6 (see the photos below) and sent to LabVIEW for processing and display:

Algorithm: the processing is carried out in four main stages in LabVIEW (within the Formula Node):
Step 1: Thermal Compensation (DS18B20 Sensor)
Skin temperature alters electrical resistance through vasodilation/vasoconstriction. To eliminate temperature-induced errors:
| Status | GSR value (Rskin) | Skin capacity Cskin | Fisiologin interpretation |
|---|---|---|---|
| Dehydrated / Dried | Big (> 200 kΩ) | Low (<0.8 nF) | Dry stratum corneum, low cellular volume. |
| Moderate hydratation | Medium (80 - 180 kΩ) | Medium (1.0 - 2.2 nF) | Optimal dermal/epidermal water balance. |
| Hydrated / optimal | Normal-low (50 - 100kΩ) | Big (2.2 - 3.5 nF) | Well-hydrated interstitial tissue. |
| Surface perspiration | Very low (< 40 kΩ) | Rapidly Changing | Excess electrolytes on the surface (surface perspiration, not cellular hydration). |
The function used in Labview for all above calculatiuon is this (in formula node):
// Intrari: gsr, tau, temp
// Iesiri: hydratation_index, c_skin_nF, status_code
if (gsr >= 9999.0 || tau == 0) {
c_skin_nF = 0.0;
hydratation_index = 0.0;
status_code = 0; // Deconectat
} else {
// 1. Compensare termica pentru GSR (Referinta: 33.0 °C, Coeficient: 2% per °C)
float t_ref = 33.0;
float alpha = 0.02;
// Corectam GSR-ul daca temperatura este valida
float gsr_corr = gsr;
if (temp > 25.0 && temp < 42.0) {
gsr_corr = gsr * (1.0 + alpha * (temp - t_ref));
}
// 2. Calcul capacitate dielectrici compensata
c_skin_nF = tau / gsr_corr;
// 3. Scalare Indice de Hidratare (0 - 100%)
float c_min = 0.5; // nF
float c_max = 3.0; // nF
float raw_index = ((c_skin_nF - c_min) / (c_max - c_min)) * 100.0;
if (raw_index < 0.0) raw_index = 0.0;
if (raw_index > 100.0) raw_index = 100.0;
hydratation_index = raw_index;
// 4. Clasificare stare
if (gsr_corr < 40.0) {
status_code = 4; // Transpiratie / Hiperhidroza
} else if (hydratation_index >= 60.0) {
status_code = 3; // Hidratat / Optim
} else if (hydratation_index >= 30.0) {
status_code = 2; // Hidratare Moderata
} else {
status_code = 1; // Deshidratat / Uscat
}
}
Demo:
OBS: The EdgeCare system utilizes the parallel RC equivalent model for epidermal impedance described by Geddes & Baker (1989) and Martinsen & Grimnes (2011).
The determination of the dielectric capacitance (Cskin = Tau / R) and its scaling to derive the hydration index follow the dynamics of electrodermal activity (EDA) variation established by Boucsein (2012),
with a thermal correction using an alpha coefficient of 0.02°C applied in accordance with Wenig & Martinsen (2000).
Bibliography:
- Geddes, L. A., & Baker, L. E. (1989). Principles of Applied Biomedical Instrumentation (3rd ed.). John Wiley & Sons.
- Martinsen, O. G., & Grimnes, S. (2011). Bioimpedance and Bioelectricity Basics (3rd ed.). Academic Press.
- Wenig, P. B., & Martinsen, O. G. (2000). Thermal influence on skin bioimpedance measurements. Annals of Biomedical Engineering, 28(5), 582–588.
- Boucsein, W. (2012). Electrodermal Activity (2nd ed.). Springer Science & Business Media.
I will continue here with the implementations...