Neonatal Mortality Rate (NMR) quantifies the number of new-born deaths (i.e in the first month of life) per thousand live births and is responsible for more than 46% of all child deaths before the age of five (2.5 Million in 2018). Which means  7000 deaths every day.

 

 

 

image.png

 

 

Image Source: United Nations Inter-agency Group for Child Mortality Estimation (UN IGME) 2019

 

 

The death of the premature neonatal baby occurs due to many reasons, but one of the major reasons is the respiration issues. These premature babies have respiration issues which get serious when there is lack of oxygen inhaled by the body. This can even cause death. Typically, a newborn takes 30 to 60 breaths per minute. This can slow down to 20 times per minute while they sleep.

 

 

In order to address this issue with the help of multisensor BLE system RSL10-SENSE-GEVK, we will build a smart breath rate analyser. Let's see the functionality of this device.

 

 

1. This can report to the mother or caretaker if respiration rate goes below the threshold value.

 

 

2. Communication is over Bluetooth hence the data gathered can be recorded for further analysis.

 

 

3. The novel smart alert system along with ambient temperature sensing for the remote monitoring by a doctor.

 

 

4, Since the system is cost-effective this can be a boon to developing nations where there is a scarce of resources, hospitals, incubators, ventilators etc

 

 

5. Can be used where there is a scarcity of ventilators for example in the current scenario of COVID 19.

 

 

Step 1: Let's build

 

 

Required parts for building this project is mentioned above. The main one is the SL-10-SENSE-GEVK module along with the debugger. You'll need to program and test various things.

 

 

After installing eclipse based ON-SEMI IDE and support packages you can test basic sensor with deep sleep and get some data on the phone. For these, you can refer to very nicely written getting started guide.

 

 

Step 2: What do we need and how we're going to get it

 

 

Basically our requirement is to get the data of respiration rate per minute. How do we do it is the question. With careful observation, there is a small change in the accelerometer Z-axis motion whenever the baby's chest moves up and down while breathing. According to the datasheet of the accelerometer and gyroscope sensor BHI160 we will get a precise reading of accelertion values and orientation values with very less false positives i.e less than 9 in 5 mins of continuous reading

 

 

Neosense calibertaion.jpg

 

 

IMG_20200321_111539.jpg

 

 

To prove this and calibrate the motion I made a simple setup with servo motor doing the action for us in a very slow manner. With the help of this, we can check whether the number of breaths per minute is above or below the threshold value.

 

 

Step 3: Calibration and testing

 

 

I designed and 3d printed housing for the RSL10 device which can also calculate the body temperature using a BMP680 temperature sensor. In order to increase the sensitivity of the IC, I have attached a metal tape and a connecting wire.

 

 

case.JPG

 

 

For the design default 3D builder software on windows 10. You can use Fusion 36) or solid works etc.

 

 

IMG_20200321_003433.jpg

 

 

Setting the threshold: From the research I have done on the neonatal babies, I concluded that the breath rate below 18 is fatal to the neonate. Hence we will set the threshold as 18 breathing rate per minute. If the breathing rate falls below that value we can alert the mother or caretaker either remotely or through a buzzer.

 

 

image.png

 

 

Step 4: Writing the code for the RSL-10-SENSE-GEVK

 

 

Since we want to save the power we can turn off unwanted devices and use only required sensors. Accelerometer and temperature sensor.

 

struct SwTimer tim1; struct SwTimer_Duration tim_dur1; SwTimer_Initialize(&tim1); SwTimer_Start(&tim1); SwTimer_GetElapsed(&tim1, &tim_dur1); if (fabsf(z) >  2.0f) { k++; if (k > 30) { k=0; } } if ( k < 18 && tim_dur1.seconds > 60 ) { printf("Breath rate is too low"); LED_On(LED_RED); LED_On(PIN_GIO_SPARE); } SwTimer_Remove(&tim1);

 

Here time is used to determine the rate of breathing

 

 

image.png

 

 

The basic logic here is to detect whether the breathing rate is falling below the threshold i.e 18 breaths per minute. An as soon as that happens red LED will blink to indicate that. Temperature monitoring is done as well to know the trend of breathing over temperature changes.

 

 

Step 5: Fastening and testing :

 

 

If the baby is covered in surgical grade protective cloths, one can directly attach the device on the chest part of the baby using velcro strip or when the baby is naked one can use surgical band-aid tapes to secure the sensor. The same sensor can be worn by the mother around her shoulder for kangaroo mother care. Which records the temperature of mother and baby to monitor their health,

 

 

In developing nations in Africa and Asia, this device can help in remote locations where there is a lack of connectivity and resources such as hospitals, ventilators and incubators in the case of premature birth.

 

 

Temperature monitoring is done for Kangaroo Mother care method

 

 

image.png

 

 

 

Step 6: Connecting it to cloud

 

 

In the On Semiconductor app itself, there's MQTT broker installed one can directly use their phone as IoT gateway and push the data to the cloud. If you are interested you can even set up your own generic MQTT broker in the app and

 

 

image.png

 

 

image.png

 

 

Hive MQ has open-source service where one can send the data to their MQTT server. It supports the latest MQTT 3.1 also. Here's the detailed description.

 

 

Here I'm adding my broker.

 

 

image.png

 

 

Testing the sending of data:

 

 

image.png

 

 

Future Enhancements:

 

  • Developing a custom app interface with various editable threshold triggers an SOS alert features
  • Improving battery efficiency by optimising code
  • Adding a builtin buzzer (might wake up the baby) to GIO Spare Pin
  • Adding a Kalman filter to reduce the error