Well, here we are at the end of the Sudden Impact Wearables Design Challenge.  Looking back over the past few months I see a mix of enthusiasm, hard work, and great time that I had while working on my project.  I feel fortunate to have had the opportunity to participate in this challenge and I would like to thank again Element14 for organizing it and for selecting me as one of the participants, I would like to thank the sponsors Analog Devices, Tektronix, and Electrolube for providing us with materials, Element14 for providing us with budget, and Leeds Beckett University for further testing our projects.  Also, I would like to express my best wishes to all participants and good luck in the upcoming project judging process.


Here is the final report for my project:

Table of Contents


1. Project Highlights

2. What problem I want to solve

3. What products are already on the market

4. What I don’t want to do in this challenge

5. What medical conditions kill athletes

6. Limitations of existing products

7. What I want to do in this challenge

8. What I bring new to existing solutions

9. Summary of My Solution

10. Overview of My Project

        10.1 Main Unit

        10.2 ECG Module

        10.3 Android App

11 Detailed Description of My Project

        11.1 Main Unit

        11.2 Main Unit Attachments

                11.2.1 Pulse Oximetry and Heart Rate Module

                11.2.2 Body Temperature Measurement

                11.2.3 Respiratory Rate

                11.2.4 EEG Brain Electroencephalogram

12. ECG Heart Electrocardiogram Module

13. Receiver App Running on an Android Smart Phone

14. Data Encoding for Cell Phone Audio Channel

15. Cost of the Product

16. Demonstration Videos

          16.1 Introduction to the Sudden Impact and Health Monitor

          16.2 Remote monitoring the health information

          16.3 Head Impact Detection

          16.4 Person falling down Detection


Appendix1 – Code for Arduino Nano V3.0 Module (Arduino 1.0.6 or above Free Version)

Appendix2 – Code for Android App (Android Studio Free Version)


1. Project Highlights


  •           Physical Impact to the Head
  •           Person falling down and laying on the ground
  •           Person not moving
  •           Electrocardiogram (ECG)of heart in real-time
  •           Electroencephalogram (EEG) of brain in real-time
  •           Heart Rate
  •           Blood Oxygen Saturation Level
  •           Respiratory Rate
  •           Body Temperature
  •           Post Impact Neurological Assessment through Movement Balance


Contains built-in GPS for long range sports locator (biking, skiing, hiking…).


Transmits alerts and measured health data over long distances through cell phone network


Visualizes the measured information on free open source Android app running on one or more smart phones or tablets


2. What problem I want to solve 


Some sports injuries may seem minor and injured athletes may not seek medical attention promptly, thus aggravating the conditions to the point where medical intervention cannot save their life.  The goal of my project is to detect athletes’ health conditions that require medical attention even when immediate symptoms may not suggest a serious problem.


3. What products are already on the market 


I was surprised to see many commercial products addressing head injuries by placing an accelerometer on a helmet or directly on the head, measuring the force impact and transmitting the data through wireless connection to an app running on a phone.  Price is reasonable usually between $50 and $200, and products are convenient to use.  Here are some examples:


Jolt impact sensor for multiple activities – attaches to helmet, hairband, baseball cap… and sends data through Bluetooth to smart phones over up to 100 yards.



Riddell impact response system – attached to helmet sends data wirelessly to hand-held device over short distance range


Shockbox impact Hockey Sensor – attaches to a hokey helmet and sends data through short range wireless Bluetooth to palyer smart phone



4. What I don’t want to do in this challenge 


I don’t want to duplicate what is available already on the market; instead I am looking into improving/expanding on top of what has been made so far.



5. What medical conditions kill athletes 


Brain injuries and cardiac arrest especially when not seeking medical attention promptly



6. Limitations of existing products 


Most commercial products measure the impact to the head and users take decision to seek medical attention based on the measured impact.  There are various algorithms implemented to decide what impact is sufficiently high to be a potential problem.  However, some people are more sensitive to brain injuries than others, so one impact threshold may not work for all people.  Additionally repeated head impacts may become dangerous even though each of them may be less than the algorithm’s threshold.  Also, brain injuries may come from non-head impact, and cardiac arrest may come from preexisting health conditions sometimes not known by the athlete. 


The commercial products that I have seen use short distance wireless communication like WIFI, Bluetooth, so some long range athletic activities are not covered (biking, skiing, running a Marathon, hiking …). 


The decision to seek medical attention is limited to person(s) operating the wireless receiver unit, so these are typically people present at the game field.  Thus, unless specifically contacted, athletes’ parents, spouse, siblings, or friends are not aware of the problem and do not participate in taking the decision to seek medical attention.



7. What I want to do in this challenge


I want to provide a complete solution to the problem of not recognizing the severity of a head impact, injury, or health condition of athletes during sports activities:


  •           Implement additional health measurements that help making the right decision of seeking medical attention


  •           Expand the decision making by automatically transmitting the alerts and health information over long distance to parents, siblings, friends                  (same city, same country or even different countries) by using the cell phone network for data link


  •           Expand sports coverage to long range sports (biking, skiing, running a Marathon, hiking …)


  •           Keep the cost affordable and keep the usage easy and friendly


8. What I bring New to Existing Solutions

Post impact neurological assessment through real-time brain Electroencephalogram (EEG) and statistical assessment of body movement balance. 


Increased communication range by using the cell phone network instead of WIFI or Bluetooth technologies, so that athlete’s parents, siblings, or other designated persons can get involved in taking the decision to seek medical attention.


Implement GPS location for long range sports activities like biking, running a Marathon, skiing, and hiking, which transmits a Google map injury location link through SMS/text when an impact or health alarm is detected.  Clicking the link opens Google maps, which automatically points right on the geographical location of the injury.


9. Summary of My Solution


Continuously monitor head acceleration and in case of an impact extract the maximum acceleration on each x, y, z axis from the pre-impact, impact, and post-impact recorded measurements.  Compute the magnitude and direction of the impact to the head


Monitor heart rate and heart activity through real-time Electrocardiogram (ECG)


Monitor oxygen saturation in the blood SpO2, respiratory rate, body temperature


Detect athlete falling down, laying on the ground, or not moving


In case of head impact provide post-impact neurological assessment through Electroencephalogram (EEG) and statistical assessment of body movement left/right balance


Determine athlete geographical location using integrated GPS module

Generate alarms triggered by: head impact, falling down, increased heart rate, laying on the ground, or not moving.


Send alarm in the form of SMS/text through the cell phone network to coach and additional persons (parents, siblings, guardians, or any designated person).  Alarm message includes GPS location link for Google maps to locate the injured athlete (useful for parents or any designated persons not present at the sports field, and useful for long distance sports like biking, skiing, hiking)


Free Android app can be used to connect to the wearable impact and health monitor main unit at any time or after an alarm message has been received and retrieve measured values for heart rate, body temperature, blood oxygen saturation, respiratory rate, body posture (standing, walking/running, laying down on the ground, moving or not moving).  Connection is done through a regular cell phone call, thus allowing long distance monitoring from any place that has access to cell phone signal (can be same city, same country, or even different country).  This is useful for parents of athletes who play in different cities or countries.


10. Overview of My Project


My project consists of three parts:


1. Wearable health monitor main unit with health condition alarm and GSM modem transceiver for data transmission through cell phone network to any smart phone running Android operating system


2. Electrocardiograph (ECG) module that sends data through a radio link to the main unit


3. Android app running on a smart phone for data processing and visual display of health information and health alarms.  Multiple copies of this Android app may also be used in parallel by athlete’s parents, siblings, or any designated persons


10.1 Main Unit

Mounted on a helmet in this prototype but in a product implementation it can be miniaturized and placed on a head band strip.  The main unit measures:

  •           Head impact (pre-impact, impact, and post-impact acceleration)
  •           Blood Oxygen saturation SpO2 level
  •           Heart rate
  •           Respiratory rate
  •           Body temperature
  •           Tilt sensor
  •           Two channels Electroencephalogram (EEG) of the brain activity
  •           Body movement balance for post impact neurological evaluation


The main unit contains a GSM cell phone network modem, an ECG radio receiver 433MHz, and an integrated GPS



10.2 ECG Module


Compact module self adhesive (no strap needed) can be mounted either on the chest or on the left arm.  The ECG module measures one channel ECG and transmits data to the main unit  through a 433MHz radio link.


10.3 Android App


The android app is available for free on Google Play and it controls the main unit through the cell phone network (SMS/text and voice call).  The Android app receives alerts from main unit in the format of SMS/text and GPS location link for Google maps website.  The user calls the GSM modem on the main unit to establish a connection, then minimizes the phone app and opens the Sudden Impact and Health Monitor App.  This app then receives and displays measured head impact magnitude and direction, body position (vertical, horizontal, moving, or static), health measurements, and real time ECG graph followed by EEG graph displayed in a waveform viewer.


11. Detailed Description of My Project


11.1 Main Unit


The schematic of the main unit is shown in the figure below.  The main unit is controlled by a program running in an Arduino Nano V3.0 module shown in the center of the schematic diagram.  This Arduino Nano module has 12 digital input/output (I/O) ports, D2-D13, and 8 analog input ports, A0-A7.  Some analog ports can be configured as digital I/Os, and I took advantage of this feature since I needed more digital controls than the available ones.


The head impact is measured by an Analog Devices ADXL375 3-axis accelerometer mounted on a EVAL_ADXL375 evaluation board, shown on the left side in the schematic.  The communication with the Arduino Nano is done through a SPI interface.  Because Arduino operates at 5V and ADXL375 at 3.3V the interface needs level shifters.  I have purchased two BD-LLC inexpensive level shifters, but since the package delivery has been delayed and I didn’t have the patience to wait, I have implemented a temporary “work-around” by adding 1kOhms series resistors on the SPI bus.  The current flowing from 5V output pins of Arduino module and into the ADXL375 tends to increase the voltage up to the point where the ADXL375 input power clamp diodes start to conduct current, at about 0.6V above 3.3V supply. This voltage is acceptable for the gate oxide break-down of input MOS transistors, but the current flowing through the internal clamp diodes may damage the ADXL375 chip.  The 1kOhm series resistor limits the current flowing from 5V supply into the ADXL375 pin to about (5V – 3.9V) /1kOhm = 1.1mA, which is handled without any problem by the internal clamp diodes.  Well, this was the temporary work-around, but it turned out that I actually never got the time to go back and replace the resistors with the level shifters after I received the order, so I am still using this technique.

The ADXL375 accelerometer is configured to store the last 32 measurements in the internal FIFO register and to send an interrupt request through the INT1 output to the Arduino module.  When an impact is detected and the interrupt request is sent, the program running in the Arduino microcontroller accesses the ADXL375 through the SPI interface and reads all the 32 values stored in the FIFO register.  Then a function implemented in the Arduino microcontroller analyzes the 32 samples and extracts the maximum impacts on each of the three axis.  These values are then stored in a buffer ready to be sent through the cell phone network to the Android app running on the smart phone.


A second accelerometer (shown also on the left side of the schematic), consists of an Analog Devices ADXL362 mounted on a EVAL-ADXL362Z board.  This accelerometer measures low-g acceleration levels and sends the data to the Arduino Nano module through the SPI interface.  This values represent body movements and they are processed by separating the left side movements and the right side movements, after which an average root-mean-square (rms) value is computed for each left and right side movements.  In a healthy person the average rms values over a significantly long interval of time should be equal, so any changes in the left/right balance from pre-impact to post-impact may suggest potential alteration in brain activity and emphasize the need for medical attention.


The non-moving condition is determined also from the ADXL362 accelerometer data.


The ADXL362 sensor implements also a free fall function.  The free fall is an internal function configured in the ADXL362 sensor, which in the case when it detects the person falling down sends an interrupt request through pin INT2.  This interrupt request is processed by the program running inside Arduino Nano, which sets an alarm signal to be sent to the Android app running on the smart phone.


The body temperature is measured using an Analog Devices ADT7320 sensor, shown on the upper left corner of the schematic.  The interface with the Arduino Nano is done through the same SPI interface shared with the two accelerometer sensors.


The body posture is determined using a tilt sensor, shown on the top of the schematic page.  This tilt sensor is a glass bulb partially filled with conductive liquid and having with two electrodes that form an electric contact.  When in vertical position the contact is open and when in horizontal position the contact is closed.  The state of the contact is read through D4 input of the Arduino Nano module.


In the case when the body posture is horizontal and ADXL362 data shows no movement a SMS/text alarm is sent to the Android app on the smart phone.


The QAM-RX2 433MHz receiver at the top of the schematic receives the ECG data and routes it to pin D7 of the Arduino Nano module.  This receiver has an external antenna made of a short insulated wire placed inside the prototype enclosure.


The switch at the bottom left side of the schematic is used only for debugging purpose to initiate the data transmission to the Android app.


I have implemented the main unit on a prototype board, which I then placed in a standard prototype enclosure, as shown in the picture below.


And then I mounted this prototype box on a bicycle helmet, as shown in the picture below.


The modified GSM transceiver on the right side of the schematic is made of a TK102 GSM tracker (available on Amazon and eBay), which I opened and I transformed into a GSM modem.  Initially I intended to use the GSM modem shown in the link below, but then I found this tracker which seems to be very popular and available from multiple sources on Amazon.com and on eBay, and which also has an internal GPS module.  A description of the modifications I made is shown below:


  Connect the CALL_SENSE jumper:


Remove the microphone:


Connect AUDIO_IN jumpers (signal and ground); I used a coaxial cable:


Connect SW1 and SW2 jumpers:


Top view with all jumpers connected:


Place the PCB back in the case:


So I have tapped two wires on the send button, creating two ports labeled SW! and SW2 in the main unit schematic.  When these two ports are connected together the tracker sends an alarm SMS/text to multiple programmed phone numbers.  The SMS/text contains a Google maps link pointing to the geographical location determined by the internal GPS module.  This alarm sending function is controlled by the program running in the Arduino microcontroller by asserting output A0 (configured here as digital I/O pin).  This signal turns on the BD135 transistor and activates the relay, which then shorts together the SW1 and SW2 terminals that I added to the tracker module.

After an alarm text has been received on the smart phone, the user can connect to the tracker and retrieve the health monitoring information.  This is done by an automatic script part of the Android app that sends a control SMS/text message to the tracker to configure it into modem.  Then the user makes a phone call to the tracker number.  When a commercial (unmodified) tracker receives the phone call it connects the internal microphone to the phone line for audio monitoring.  This transformed tracker when receives a phone call asserts the call_sense output that I added by taping a wire to the pad on the PCB shown in the figure below.


The assertion of this signal is sensed by the program running inside Arduino microcontroller through pin A1.  After a phone call is detected, the Arduino program converts the measured data register into custom frequency encoded signal in the audio range (1.4kHz to 3.5kHz) which is then sent as a serial FM data stream to the tracker audio_in input that I added part of my modifications.  The audio_in taps to the PDB pad shown in the figure below.


This signal is encoded in low frequency audio band (<3.5kHz) to enable data transmission through audio channels of cell phone network, which is great since it covers technically very long ranges within a city, country , or even between different countries.  The Android app can be alternately configured to receive the input between on the audio input jack, so technically it can receive the health information from the main unit through any audio link (like for example HAM radio, walkie-talkie, or even communication links from earth into space).



11.2 Main Unit Attachments


11.2.1 Pulse Oximetry and Heart Rate Module



The pulse oximetry and heart rate module measures the Oxygen level in the blood and pulse rate.


Typical measurements of Oxygen level is done trough transmittance method where on LED is applied to one side of a finger tip and an optical receiver diode is applied on the other side of the finger tip.  The transmitted light through the finger tissue contains the information about the level of Oxygen in the blood, and it can be retrieved through post processing.  The heart rate can be extracted also from this information.  The problem with this method is that it requires a device around a finger, and in sports this device may degrade the athlete performance in the game.  To avoid this issue I will use a different method called reflectance pulse oximetry, as described in the paper:



A Major Qualifying Project Report:

Submitted to the Faculty


In partial fulfillment of the requirements for the

Degree of Bachelor of Science

By Alexandra Fontaine


This method uses the light source and light receiver on the same surface, so I am planning to place them on the inside of the arm band together with the temperature sensor.

I have implemented a pulse oximetry technique to measure heart rate and oxygen saturation level.  The pulse oximetry technique interfaces with the human body through one red LED, one infrared LED, and one photodiode. The red and infrared LEDs shine light alternately on a human body tissue (typically a finger) and a photodiode captures the transmitted light through the tissue.  The output of the photodiode is then amplified and routed to an analog to digital converter.  The heart rate is then extracted from the amplitude modulation and the oxygen level from the ratio between the rms values of the recorded signal from the red LED and the rms value of the recorded signal from infrared LED.


My implementation of this method is shown in the figure below.


I have used a PIN photodiode connected to a transmimpedance amplifier followed by a second amplifier stage made of an instrumentation amplifier.  The output of the transimpedance amplifier is applied to the positive input of an instrumentation amplifier.  The low-pass filter made of 5Mohms resistor and 10microFarads capacitor provides the common mode level on the negative input of the instrumentation amplifier.  The output of the instrumentation amplifier is applied to a low-pass filter and then it is sent to an analog-to-digital converter in the Arduino ATMega323 microcontroller.  The red and infrared LEDs are connected “back to back” so that depending on the direction of the current only one LED is turned ON at a time.  The direction of the current is controlled by two digital input-output (I/O) pins of the microcontroller.  These two digital I/O pins alternate polarity, as shown in the figure below.


So when red LED control I/O is at logic high and IR LED control I/O is at logic low the direction of the current turns the Red LED ON and keeps the infrared LED OFF (reverse biased).  Then the red LED I/O drives logic low and the infrared LED I/O drives logic high the red LED turns OFF and the infrared LED turns ON.


Typical placement of sensors is on a finger, the two LEDs on one side and the PIN photodiode on the other side.  The light emitted by LEDs propagates through the finger tissue and it is captured on the other side by the photodiode.  While this technique is very common, it cannot be used well in sports activities because athletes cannot ware sensors on fingers while playing.  So to make the pulse oximetry measurement available in sports activities a derivative method called reflectance pulse oximetry is used.  The reflectance pulse oximety places the LEDs and PIN photodiode on the same side of the skin/tissue and the emitted light scatters through the tissue and part of it reflects back and it is captured by the PIN photodiode. 


So in this project I have chosen to implement the reflectance pulse oximetry technique.  My red and infrared LEDs and also the PIN photodiode came form a pulse oximeter probe that I purchased on eBay, shown the figure below:


The extracted LEDs and PIN photodiode are shown in the following picture


I have implemented the schematic shown above using a solder prototype board and I then compared the measurements using the transmittance pulse oximetry on a finger and the reflectance pulse oximetry on my forehead.  The picture below shows the amplifier output signal of the transmittance method measured with the Tektronix 1202B-EDU oscilloscope.


The signal contains the amplitude modulation generated by the heart rate.  The prototype board can be seen on the right side of the picture, where the oscilloscope probe connects.  Next I placed the LEDs and PIN photodiode on my forehead and I measured the same signal at the output of the front end amplifier, as shown in the picture below.


The modulation amplitude is smaller than in the transmittance method, but it is big enough to be further sampled and processed inside the microcontroller.

The A/D converter records 512 samples over duration of 10 seconds.  For debug purposes the function above has the possibility to send the recorded samples to a computer through the serial port, and an example of the recorded samples are shown in the figure below.


The algorithm that extracts the heart rate measured the number of maximum amplitude bumps in the sequence of 512 samples and then calculates the heart rate by multiplying the number of bumps by 6 to expand to one minute (since the 512 samples have been recorded over a 10 seconds period).


The Oxygen level is calculated from the rms values of two recordings, one generated by the red LED and one generated by the infrared LED.  The ratio between the rms values represent the ratio between the PIN diode currents which represents the level of oxygen saturation in blood.


The heart rate and oxygen level values are stored in two variables and then sent through the GSM modem to the Android App running on the smart phone.


I further attached this pulse oximetry module on the helmet as shown in the pictures below.


The LEDs and PIN photodiode are mounted on the front inside the helmet, so that they touch the forehead.  To ensure good contact with the skin, the LEDs and PIN photodiodes are placed on a layer of elastic sponge-type material.  The figure below shows the sensors mounted on the helmet.


This is the sequance of pulse oximetry operation:


  • Turn on IR LED


  • Check if common mode has settled (this may take multiple measurement cycles over a few minutes)


  • While common mode is not settled continue with the rest of functions in the program loop


  • When common mode is settled collect 512 samples (infrared scattered light) over 10 seconds (each sample is average of 4 readings)


  • Turn off IR LED and turn on Red LED


  • Check if common mode has settled (this may take multiple measurement cycles over a few minutes)

  • While common mode is not settled continue with the rest of functions in the loop


  • When common mode is settled collect 512 samples (red scattered light) over 10 seconds (each sample is average of 4 readings)

  • Calculate heart rate from number of bumps in 10 seconds x 6 to extend to 60 seconds


  • Calculate the rms value for IR samples

  • Calculate the rms value for RED samples


  • Compute the oxygen saturation level


11.2.2 Body Temperature Measurement


The body temperature is measured using the Analog Devices ADT7320, which is very small (4mm x 4mm) and it is mounted on the front inside the helmet, so that it touches the forehead.  To ensure good contact with the skin, the ADT7320 sensor is placed on a layer of elastic sponge-type material.  This implementation can be seen in the figure above that shows the ADT7320 sensor mounted on the right side next to the EEG reference electrode (in the center) and pulse oximetry LEDs and PIN photodiode mounted on the left side.  The ADT7320 temperature sensor is controlled by the Arduino microcontroller through an SPI data bus, which is shared with ADXL375 and ADXL362 sensors as it is shown in the schemati diagram of the main unit.


11.2.3 Respiratory Rate


Respiratory rate is typically measured in medical laboratories using specialized equipment, which cannot be used for athletes outside in the sports field.  In this project I have implemented an alternate method that extracts the respiratory rate information from pulse oximetry raw measured data as described in this paper:


“Developing an algorithm for pulse oximetry derived respiratory rate (RRoxi): a healthy volunteer study” Paul S. Addison, corresponding author1 James N. Watson,1 Michael L. Mestek,2 and Roger S. Mecca3, Journal of Clinical Monitoring and Computing, Jan 10, 2012


The respiratory rate is extracted from the spectral component of a time-domain pulse oximetry raw data recording of 512 samples over 5 seconds (about 20 ms sampling rate).  The samples are obtained using the analog-to-digital converter built in the Arduino microcontroller, as I have described in the pulse oximetry section of this report.  The FFT is computed through an algorithm processed by the Arduino microcontroller.  The FFT result is then processed by a digital filter to extract the respiratory spectral component, somehow similar to another method I used for jitter analysis in integrated circuits and I have described in this paper:


Power Integrity and Noise Coupling Effects on Signal Integrity – Methodology for

Identifying the Deterministic Jitter Components and their Generating Sources in Data Communication Systems, Cosmin Iorga, DesignCon 2010




Here is an example of this respiratory rate algorithm applied to the 512 samples shown above in the pulse oximetry section.  For this example I took the 512 samples and I ported them in an Excel spreadsheet in which I then implemented the FFT algorithm.  Here is a graph of the time domain recorded samples:


The data represents 512 samples collected over 10.2 seconds.  The FFT is computes using the built-in data analysis function in Excel:


The frequency component at 1.172Hz represents the heart rate, which can be calculated as 1.172 beats/second or multiplying by 60 we get 70.32 beats per minute.  This record was done on my forehead at rest while working on my test bench, so I was at resting heart rate.


Above 1.172Hz we can see the harmonics of the heart rate component at around 2.4Hz and 3.6HZ.


The respiratory rate is represented by the frequency component at 0.293Hz, and it can be expressed as 0.293 breaths per second or multiplying by 60 = 17.58 breaths per minute.


This algorithm is implemented in the Arduino microcontroller, and the respiratory rate frequency component is determined using a digital filtering algorithm, also implemented in the Arduino microcontroller.


11.2.4 EEG Brain Electroencephalogram


The electroencephalogram module is mounted on the helmet and uses two active electrodes placed mounted on the sides of the helmet so that they touch the head skin above the ears and one common mode sense electrode mounted on the front inside the helmet, so that it touches the forehead.  The schematic diagram of the EEG module is shown in the figure below.



The two active electrodes connect to a INA121 instrumentation amplifier through an RC filter made of R1, R2, C1, C2, and C3.  The common mode is sensed and buffered to the forehead electrode by the amplifier circuit built around U1 (OPA2314).  This circuit ensures that the input common mode of the two active electrodes stays within the input common mode range of the INA121 instrumentation amplifier.


U2 or U3 (only one of them is staffed; the other one is open) controls the reference level into the INA121 operational amplifier.


The output of the INA121 stage is applied to a low-pass filter made of R15 and C20, and then it gets amplified by the second stage made of U5, INA826, instrumentation amplifier.  The output signal of this amplifier is sent to input A7 of the Arduino Nano module.


The common mode settling time after the helmet is placed on the head is about 2-3 minutes, so any meaningful EEG measurements need to wait at least 3 minutes before they start.  This is not an issue for sports applications since after these 3 minutes the EEG system is continuously functional for the entire length of the sports activity.


The PCB layout of this circuit is shown in the figure below.


This is a two layer PCB designed with large size surface mount components, but in a commercial product the size can be reduced considerably if using a 4-layer PCB and smaller size components (my limitation to 0805 and some 0603 sizes was driven by hand soldering that could not handle small components, but an industrial automated placement environment can easily handle 0402 size components).  The assembled board is shown in the figure below.


The power supply is provided by the main unit, and the electrodes wires are routed through the inside of the helmet to the forehead and the two locations above the ears.



12. ECG Heart Electrocardiogram Module


The electrocardiogram (ECG) is implemented in a separate module that communicates with the base unit through a 443MHz radio link.  The measurement of heart electrocardiogram (ECG) is performed as a one channel electrocardiograph implemented using the Analog Devices AD8232 Single-Lead Heart Rate Monitor Analog Front End.  The schematic diagram of the ECG module is shown in the figure below.


The heart activity signal is captured by two sensors labeled Left Arm (LA) and Right Arm (RL) which then connect to the corresponding inputs of the Analog Devices AD8232 ECG analog front end circuit.  The common mode is controlled by the Right Leg Drive function of the AD8232 and sent to the RL electrode.  The AD8232 does all the work and provides the ECG analog signal at the output.


The analog ECG signal is then applied to an audio frequency modulator (FM) built around a LM555C timer integrated circuit.  The audio carrier frequency is centered to 2.3kHz and the frequency modulation spans between 1.8kHz to 2.8kHz.


The FM audio signal is then applied to the 433MHz radio transmitter which sends the ECG data to the main unit.


The prototype implementation of the ECG module is shown in the following picture.



The three ECG disposable electrodes snap into receptacles and can be removed by pulling them out.  The electrodes have to be cloth-type for holter monitor since these types have very good adhesive properties and are able to hold the entire module without the need of additional strap like in most commercial wearable heart monitors.  These types of electrodes are available to purchase on eBay and Amazon at a convenient price; I have paid $7.95 with free shipping for a bag of 50.


In this prototype I used an AD8232 integrated circuit part of a AD8232-EVALZ evaluation board.  While this prototype looks quite bulky, a commercial product implemented using flexible printed circuit board technology is estimated to have a size of about 2cm by 2cm including a small lithium-ion rechargeable battery. This is a very convenient device that can be mounted and held only by the adhesive properties of the ECG electrodes.


This ECG module can be mounted either on the chest or on the left arm. The chest mounting is shown in the following picture.


To mount the device the plastic film cover of the electrodes is pealed off and the device is oriented with the active RA (right arm) and LA (left arm) electrodes at the top and the RL (right leg drive) electrode at the bottom.  In this position the device is then applied to the chest and the adhesive surface of the electrodes attaches to the skin.  The adhesive strength of cloth-type holter monitor electrodes is enough to hold the ECG module on the chest without the need of conventional chest straps used in most commercial heart monitors.


After application to the chest the ECG module can be turned on by flipping the switch to the “ON” position.


The same ECG module can be mounted on the left arm.  This flexibility becomes useful in some sports and for some athletes that may fill uncomfortable with a device mounted on the chest. The left arm mounting has been studied in academic institutes and at this point I am not aware of any commercial product that implements it.

One of the published studies of ECG measured on one arm only is described in the paper:


“Study of Single-Arm Electrode for ECG Measurement Using Flexible Print Circuit”

Hung-Chi Yang*, Tsung-Fu Chien, Shang-Hao Liu, Hsuan-Han Chiang

Department of Electrical Engineering, Southern Taiwan University

Tainan, TAIWAN


The figure below shows the mounting of this ECG module on the left arm.


The device is oriented with the active electrodes, LA and RA, at the top and applied on the arm so that the active electrodes come as close as possible to the shoulder joint.  This is necessary to minimize the effect of EMG signals generated by brain signals controlling the arm and hand muscles.



13. Receiver App Running on an Android Smart Phone


The receiver can be a smart phone or a tablet with built-in SIM card slot and 3-G cell phone support.  There are various tablets like this available on the market.  The software program that reads the received SMS text message, post-processes the information, and displays the health information.


The health information displayed will contain: hear rate, body temperature, level of Oxygen in blood, respiratory rate, real time graphical representation of the electrocardiogram (ECG) waveform, and post impact neurological assessment through real-time electroencephalogram (EEG) waveform and computed body movement balance (left versus right side expressed in percentage).  The picture below shows a picture of the App running on my smart phone.


In case of a health/impact alarm, the Android app displays the alarm information: head impact on x-axis, y-axis, and z-axis, and magnitude and direction of the impact force against the head.  Additionally, the app displays body posture and movement information: standing / laying down on ground, and moving / not moving information.


The entire information is displayed on one single screen view for easy capture with available screen capture (snap shot) apps.  The captured image can be stored for records or sent to doctors or other persons for advice.



14. Data Encoding for Cell Phone Audio Channel

In order to be able to send the measured data and the real-time EEG and ECG through a cell phone audio connection I had to restrain my bandwidth to less than 4kHz.  This comes with the trade-off of transmission speed and a little of accuracy.  So I have chosen a customized digital/analog audio frequency modulation with bandwidth up to 3.5kHz to keep some margin from 4kHz.


The diagram below summarizes the data encoding:


So a 1kHz burst marks the beginning of data transmission, and each character or analog value is preceded by a 3kHz burst.  After all digital and analog values have been transmitted the EEG or EKG real-time waveform (FM modulated within 1.8kHz and 2.8kHz boundaries) is continuously transmitted for about 30 seconds.



15. Cost of the Product


The cost of this system will be low since it does not involve any expensive components, materials, or software platforms.  I estimate the cost of low volume production to be around $135 and the cost of a large volume production to drop down to around $50-$70.  Here is a table with my estimates for low volume production:



16. Demonstration Videos


16.1 Introduction to the Sudden Impact and Health Monitor


16.2 Remote monitoring the health information




16.3 Head Impact Detection




16.4 Person falling down Detection





Appendix1 – Code for Arduino Nano V3.0 Module (Arduino 1.0.6 or above Free Version)






Appendix2 – Code for Android App (Android Studio Free Version)






Link to direct download the Android App file "app-release.apk" :




(I have also uploaded it on Google Play but I have some account settings issues that I need to fix, and after that the app can be searched and downloaded for free - who is interested search for "HealthMonitor" posted by "apphobby")


Who is interested in more details about this project or design files and source code feel free to contact me.

All my best wishes to all!