Tele Vaidya – Remote Health Monitor

Every human being requires health care as one of their basic needs. However, many poor countries are unable to achieve the requirements due to a lack of medical health experts or doctors, as well as sanitary facilities such as hospitals. These are the most pressing issues that must be addressed as quickly as feasible.


  1. Fingerprint sensor (Optical one) [Amazon]
  2. Pulse Oximeter MAX30100/MAX30102 [Amazon]
  3. Thermistor – 10kOhm [Amazon]
  4. LoRa Transceivers SX1276 (Optional) [Amazon]
  5. NodeMCU (Optional) [Amazon]
  6. TFT LCD 1.44″ SPI [Amazon]
  7. Arduino Mega 2560 [Amazon]
  8. Misc. components like resistor, power source etc.

Tools and Software used:

  1. Soldering Iron
  2. 3D printer
  3. Arduino IDE
  4. Azure Cloud

Step 1: Video Demo

Here’s a quick video demo of the project.

Step 2: The Purpose

Physicians Density

Image Source: Wikipedia

With the advancement of technology and extremely high-speed internet access, we can now speak with people on the opposite side of the world nearly instantly or in real time. However, many infrastructures, including as cell phone towers and fibre internet connectivity, are still lacking in poor countries. These problems are being addressed by satellite-based internet. However, deploying satellites to give internet connectivity over the world will be a difficult undertaking.

“One billion people live in developing countries on less than US$1 a day, and 2.5 billion are living on less than $2 a day; more than 2.6 billion people lack access to toilets and other sanitation facilities; and 30, 000 children under five years of age die every day, mainly from dehydration, undernourishment, and preventable diseases.” – Bale, Global Economic Symposium. Improving Access to Health Care for the Poor, Especially in Developing Countries Low- and middle-income countries bear 90% of the world’s disease but compose only 12% of the world’s health expenditures, according to a 2008 article in the Annals of the New York Academy of Sciences. In this project, I would like to demonstrate, by using simple electronic components and microcontrollers how we can address major healthcare challenges in the world.

Let’s get started,Add Tip

Step 3: Architecture – TX Side

The basic block diagram of the system is as shown in the below figure, there are two major blocks in the systems one data acquisition and transmission system and one reception system which will be placed at the location where there is internet connectivity. The transmission between the node and the gateway will be done with the help of LoRa technology which can transmit and receive information.

Step 4: Architecture – RX Side

The gateway with internet connectivity will directly update the information on the Azure cloud. Which can be diagnosed by Doctors sitting anywhere on the globe. A person with a basic understanding of English and some education can help these unprivileged people to get basic health care access. For demonstration and Proof of concept [POC] purpose, I’m using the simple Heartrate and Blood Oxygen measurement system, This can be upgraded to many more sensors and other data acquisition systems.

Step 5: Connection Diagram- TX Side

The connection diagram for the data acquisition and transmission system is as shown in the figure below,

Here the Arduino Mega has a serial connection to the biometric fingerprinting device and an I2C connection to the MAX30100 IC for the heart rate and the blood oxygen level measurement. The display is used for representation purposes. The temperature sensor is a thermistor that is connected to analog pin of the microcontroller.

The Receiver:

The receiver consists of a LoRa receiver device along with a nodeMCU (ESP8266) to send the data to the Azure cloud

Step 6: Connection Diagram – Thermistor

Note that 1k resistors are needed as the display 1.44 inch is of low voltage standard i.e 3.3V

The whole setup can be connected to a portable power bank which can run the whole device for months [20000mAh] Temperature sensor: Thermistor +ve to 5V Thermistor -ve to 10k resistor Resistor to ground Junction of thermistor and resistor to A0.

Step 7: Temperature Calculation

The calculation will be like this: In terms of the voltage divider in a thermistor circuit, the variables in the equation above are:

Vo = analogRead(ThermistorPin);

R2 = R1 * (1023.0 / (float)Vo – 1.0);

logR2 = log(R2);

T = (1.0 / (c1 + c2*logR2 + c3*logR2*logR2*logR2));

T = T – 273.15; T = (T * 9.0)/ 5.0 + 32.0;

Step 8: Connection Diagram- RX Side

The Receiver:

The receiver consists of a LoRa receiver device along with a nodeMCU (ESP8266) to send the data to the Azure cloud

Step 9: Why I Chose Arduino Mega 2560

I have chosen the Arduino Mega running in an Arduino environment because the project can be replicated easily as it is very easy to implement using Arduino IDE and most of the materials are easily available. Arduino Mega was chosen because the fingerprint sensor uses a UART(LoRa TX also uses UART) interface and with multiple sensors, the memory requirement is also big.

Basically, the code involves the interfacing of different sensor devices and acquiring data and sending it to the nearest gateway.

Step 10: Why LoRa?

The Idea of involving LoRa is to increase the range of communication. The amount of infrastructure to set up LoRa communication is far lesser than that of Mobile communication using cell phone towers.

In the case there is no way to deploy the gateways then the gateways can be mobile and can serve using drones flying

Step 11: Testing

Here’s the github repository where the codes are committed. :

Over the LoRa we will be sending the data in the json format and then we deserialise it on the node MCU. The image here is just before connecting the Node

Step 12: Setting Up Azure

You can just use it without these dashboards. I’m just completing it for people who want an end to end system.

Setting up Azure IoT Hub, Register using the given link to get one-month free access. Go to after registration. Create a new resource group under resource groups and name it. for eg. NodeMCU Once the IoT hub is provisioned, go to the resource. Select the IoT device under Explorer and add a new device. These are things needed to be filled in the code once you create the device.

Step 13: Azure Cloud Device Explorer Twin

Installing Device Explorer twin

Device explorer twin is a graphical tool for interacting with and test your devices with the Azure IoT hub. After Installing the tool on your local machine you can connect to the IoT hub and view the telemetry, the devices are sending. use this tool to send messages to the device and receive messages from the device.

You can download the Device explorer install package from the below link.

Step 14: Adding Credentials in Code

Creating a SAS token with Device Explorer
Open the device explorer that you have installed in the previous steps and connect it to the Azure IoT Hub using the connection string from the Azure portal. Get the connection string by navigating to the IoT hub and from Shared access policies => iothubowner => Connection string — primary key.

Add these in arduino code. Replace the xxxx things with the original credntials of yourd from IOT hub page

//Azure IoT Hub Credentials

const char* THUMBPRINT = “xxxxx”;

const char* DEVICE_ID = “xxxxx”;

const char* MQTT_HOST = “”;

const char* MQTT_USER = “”;

const char* MQTT_PASS = “SharedAccessSignature”;

const char* MQTT_SUB_TOPIC = “devices//messages/devicebound/#”;

const char* MQTT_PUB_TOPIC = “devices//messages/events/”;

Step 15: Future Enhancements

Here I have a working video of the whole setup.

Future Enhancements Planned:

  • Adding GSM/GPRS connectivity at the gateway to enhance connectivity
  • Adding LoRa satellite-based unit for hassle-free connection to the network
  • Improving battery life by implementing sleep functions
  • Adding Solar panel for charging

Thanks a lot for your time. Feel free to comment if you have any questions and ideas or views.

Source: Tele Vaidya – Remote Health Monitor

Leave a Comment

Your email address will not be published. Required fields are marked *

= 4 + 8

(Spamcheck Enabled)

Scroll to Top