Close
0%
0%

Fall Detector Wearable for Elderly and Clinics

Combining a 3-axis accelerometer with an Arduino to create a networked fall-detection device and alert system for individuals at risk.

Similar projects worth following
This project arose from the need to more accurately and more efficiently detect and document falls in clinical settings. Many physicians have voiced their concerns regarding the ability of managed care spaces to detect and provide care after a fall in a timely manner.

-1/3 of people over the age of 65 fall annually and 50% of these falls go undetected

-The leading cause of death in people over the age of 79 is from falls.

-Despite the use of alert bracelets and even with the closest monitoring in nursing homes, an elderly person who falls often lays unable to move or use alert mechanisms for hours. Sometimes, by the time they are found they are incredibly ill, or even dead. As an Emergency Physician I see at least one patient every shift that was found in a nursing home room after lying there for 6-8 hours.

Note: we are self-taught makers/tinkerers/programmers and we are doing our best to create an open solution for a need we see. Please feel free to help/contribute!

The aim of this project is to create an easily-replicable, low-cost, connected wearable device with a fall-detection algorithm using a 3-axis accelerometer. Detection of statistically significant acceleration along 2 or more axis will be used to determine a fall state. The use of 2+ axis will allow for more accurate detection and decreased number of false positives.

Additionally, we would like to incorporate temperature sensing in order to determine when the accelerometer is being worn by an individual and has not been removed. This will be employed by only allowing fall detection to trigger within a set range of temperatures.

A positive activation for a fall will alert others with any or all of the following (though not limited to these alerts) 1) Blinking LED 2) Audio Alert 3) Bluetooth/Wifi push alert to website, server, phone, pager, etc...

We plan to build this device using off-the-shelf components with cost and size in mind so that it can be easily recreated and deployed by individuals to provide safety for their loved ones.

Our ultimate goal is to create a device that can scale to a managed care facility, reducing emergency room visits, long-term hospitalizations, and potentially saving thousands of lives. Ideally, this device would have a central management system i.e. web interface, computer program, ios/android app, etc... that would allow for easy deployment and tracking of a large number of units.

If viable, we will leverage the open-source nature of Arduino hardware to design and produce large quantities of our device at a reasonable price point for actual use in clinical settings, while keeping everything as open-source as possible so that others can easily build their own devices for relatives and loved ones.

*EDIT*

Below is the revised list of components we are currently using (may be updated with additional components i.e. battery)

So, for under $30, we have all the components necessary to get this thing working (minus power and 3D printed housing)! This is MUCH cheaper than what we were initially planning to use, which is great! With Particle.io, it's also possible to adapt the code to easily work with the Particle Electron, allowing the freedom for complete wireless over 2G/3G networks!

  • IoT Demo Video!

    _henry08/12/2016 at 22:30 0 comments

    Here's a video demonstrating the Fall Detector Wearable (Particle Core, Spark Core) connected over wifi and transmitting data to various services. You can see a simulated dashboard we created titled "Patient Fall Activity Monitor," as well as my Gmail account running in an Android Emulator (Genymotion+Virtualbox).

    You can see a fall reflected in all the logs when I pull the pin (As requested by a commenter, we are adding a button that can be activated in addition to autonomous fall detection). Particle's dashboard detects it and pushes this out to the Thingspeak dashboard, while also sending an alert to IFTTT which sends me an email to notify of the fall, along with some variables measured i.e. Fall Device ID, Accelerometer Trigger Value, etc...

    Hope you guys enjoy it! Now that the basic code is implemented and everything is talking to eachother, we'll be tweaking the code for accuracy, doing real world testing, and developing the 3D-printed case.

    If anyone can help us with any of these tasks, please feel free to comment/message us!

    I pull the pin to to activate a Fall Alert at 1:20 in the video.

  • Fall Detector is talking to web services! (IFTTT, Thingspeak)

    _henry08/01/2016 at 18:08 0 comments

    So I've settled on building the prototype with my Photon Core from Particle.io. It has built in wifi and good support documentation, so I don't need to worry about connectivity. I have connected the 3-axis accelerometer outputs to the A1, A2, and A3 pinouts on the board (white, orange, and yellow wires). The black wire is a ground and is connected to the GND pin on the same side. I did not need to apply voltage to the accelerometer, and the Photon Core would actually blink and shut-off when I tried. I've also connected a green LED just to show it's own. The push-button to the top right will be incorporated later as an alternative alerting mechanism.

    In the picture above, you can see the log from Particle.io, as well as the raw accelerometer data (accsum) being plotted on the "Patient Fall Activity Monitor" via Thingspeak. You can also see that email alerts were received within seconds of the detected fall on my Android phone!

    Now that the basic code is in place to to talk to the online services, I'm going to focus on tweaking the code for fall detection. Currently, I'm just combining the raw values of the 3-accelerometers into a single variable. When that variable crosses a threshold, it activates and alerts to a potential fall.

    I will be incorporating a smoothing algorithm for the accelerometer as well adding some code to self-calibrate the accelerometer intermittently.

    Again, I'm self taught, so I'm learning along the way and most likely doing a few things inefficiently. Please let me know if you have suggestions or can help with any of this project!

    Next steps:

    1) calibration code

    2) smoothing algorithm of data

    3) fall detector testing

    3.1) Test out some ideas for fall detection i.e. stock trading equations

    4) design 3-d printed enclosure for board, accelerometer, and battery.

    I'll clean up my code for the above and post that as an update soon! Very excited that it's starting to come together! :)

  • Finalizing Hardware (Again!)

    _henry07/18/2016 at 18:22 0 comments

    So after some trial and error, as well as a lot of deliberation among the great choices of hardware available to us, we have decided to move forward using a particle board and a well-supported ADXL355. These are both affordable and easy to manage maintain in high quantity.

    Our ultimate goal is to be able to produce a final end-product that 1) Easily replicable for personal use by lay people 2) Easily administered, installed, and scaled at any clinic, hospital, or care facility.

    Using Particle, we can share code in the cloud and anybody can buy a Particle board and ADXL355 accelerometer and simply flash our code.

    If we have 1 or 100 patients to manage, we can easily add more devices as needed.

    The small form-factor, cloud-ide, and robust support were deciding factors in our decision.

    We are happy to have finalized the hardware and we'll be posting build pictures and code in the coming days and weeks!

    *I'll be using a Particle Core since I picked this up years ago when they were first released as Spark Core at Makerfaire. It should be trivial to implement on the newer Particle Photons, and we even have the option of using Particle Electrons for a completely remote monitoring solution using 2g/3g with minimal code changes.

  • 4/21/2016 Finalizing Hardware for First Prototype!

    _henry04/21/2016 at 22:51 0 comments

    So after some research, I've decided that going with an actual Arduino component (MKR1000) vs a variation (Tinyduino) will be a better solution, even if the form factor is a little larger (this is the first prototype!). The reason for this is cost and support. Going forward, we may need some help from the community to optimize code for the components (we are both self-taught programmers...) so it will be best to use the most popular parts we can.

    We'll start out with just the bare minimum - 3-axis accelerometer and Arduino MKR1000 - with the following initial milestones in mind:

    1. Get the Arduino and the accelerometer talking and read the values over USB
    2. Get the data online over wifi as a precursor to a remote "fall alert."
    3. Refine the method of detecting an actual fall. For now, we are planning to begin fall detection by comparing magnitudes of acceleration vectors. We plan to initially test a trigger by using 2 threshold acceleration vectors that must both be activated simultaneously during one reading. Of the 3-axis (X,Y,Z) data, any combination of sufficient acceleration will be used to trigger a "potential fall."
    AxisXYZ
    XXXXYXZ
    YXYYYZY
    ZXZYZZZ

    Given the possible permutations above, the resulting relevant combinations of fall detection will include simultaneous threshold acceleration triggers along XY, XZ, or YZ. Thresholds for activation will be 2 different values - The larger magnitude will represent a fall along the main axis, while a secondary magnitude will be smaller to represent any torsional/rotational acceleration.

    Alternatively, we may combine values from all 3 of the accelerometer axix (X+Y+Z) and then use that single value as a threshold level for a fall. We'll have to do a lot of IRL testing to figure out the best way to interpret the data.

    ARDUINO MKR1000

    ADXL335 - 5V ready triple-axis accelerometer (+-3g analog out)

    Lithium Ion Polymer Battery - 3.7v 1200mAh

  • A Viable Alternative for hardware? ARDUINO AND GENUINO MKR1000 NOW AVAILABLE IN OUR STORES

    _henry04/20/2016 at 06:38 0 comments

    While our initial idea was to use Tinyduino components, the recent announcement of the MKR1000 presents an interesting alternative. We'll now start looking into how easily we can integrate an accelerometer/thermometer component into the MKR1000 as an alternative. We will also need to assess the wifi range in order to make sure the connection is stable enough. It will be necessary to include an indicator to determine whether the device is connected properly to the network as this is paramount to alerting others. ARDUINO AND GENUINO MKR1000 NOW AVAILABLE IN OUR STORES

  • 4/19/2016

    _henry04/20/2016 at 04:53 0 comments

    Project submitted to to Hackaday Prize 2016!

View all 6 project logs

Enjoy this project?

Share

Discussions

uidee.dev wrote 05/30/2024 at 10:29 point

Hi, could you pls share the code? Email me at uidee.dev@mail.com

I will appreciate it

  Are you sure? yes | no

Samay Raina wrote 11/14/2021 at 07:40 point

Hi there, i have been working on similar project using Arduino hardware, Can you please help me out with the code part or mail me the links from where you referred the algorithm and code.please do revert me back at samaynoob@gmail.com

  Are you sure? yes | no

yoges nsamy wrote 08/20/2019 at 03:32 point

Hello, great stuff. I've just recently started working with a particle internet button that the elderly can use to alert their loved ones of an emergency and fall detection is certainly something that I have in mind to be incorporated into the internet button. Wondering about the status of this project. I'm been selected to join a government linked boot-camp accelerator program next month with my idea. I'd love to chat with you for a possible collaboration. Thanks.

  Are you sure? yes | no

Christopher Chew wrote 03/08/2019 at 05:12 point

Hi, can you share me the source code ? I'm interested to improve the projects sensors and GSM reading. Thanks

  Are you sure? yes | no

dryleaf96 wrote 09/13/2018 at 13:50 point

HI...can you share your arduino code to me? I'm very interest on this project. Thank You... My email is dryleaf96@gmail.com 

  Are you sure? yes | no

james wrote 02/01/2018 at 17:25 point

HI can you please  share your  code. I wanted to try this. Thanks. My email is steffin1995@gmail.com

  Are you sure? yes | no

chikenwibor wrote 07/04/2017 at 14:46 point

HI henry please could you share your arduino code.. thanks chikenwibor@gmail.com

  Are you sure? yes | no

gm11 wrote 07/17/2017 at 15:55 point

could you please also share with gcmeyer11@gmail.com

thank you!!

  Are you sure? yes | no

_henry wrote 09/01/2017 at 22:21 point

Hi, I'll try to pull it up and get it posted here in a few days! 

  Are you sure? yes | no

_henry wrote 09/01/2017 at 22:21 point

I'll try to post it here in a few days!

  Are you sure? yes | no

james wrote 02/01/2018 at 17:26 point

same here @ steffin1995@gmail.com

Much appreciated!!

  Are you sure? yes | no

AphexIce wrote 11/16/2016 at 22:57 point

Did you consider using something even smaller like maybe a ATTiny65 or the newer ESP8266 from what i understand it would drastically reduce the footprint and include builtin wifi for transmitting the data

  Are you sure? yes | no

Bil Herd wrote 08/28/2016 at 17:04 point

I like this project and the human and safety concept.  Having done  a few thousand ambulance runs I would suggest  that a second criteria for a fall or incapacitating event would be a lack of motion or change of location for a certain period of time.  If you could discount places where someone naps (or push the button for nap mode) then you may be able to detect additional events based in part by lack of locomotion.

1) Maybe a medium fall that might be considered to be  a false positive, but when coupled with lack of motion afterwards may elevate the importance of the event.

2) If a lack of motion is detected then have the device queried for "Are you okay" by emitting a beep (or similar).  The user pushes the button if they are fine and just sitting or they don't respond if they can't.  

3) Noting that the device must have been taken off for too long for example to take a bath.  Strange as it sounds I have pulled a dozen people out of bathtubs or worse, they get stuck between the toilet and the tub. (also found several MI patients here)

You may have addressed these further and I missed them. :)

Keep up the good work!













  Are you sure? yes | no

_henry wrote 08/29/2016 at 20:40 point

Thanks for the idea, Bill!  I definitely think the input is useful, especially idea 2 in order to allow the user to cancel an alert!  I'll work on implementing that!

  Are you sure? yes | no

Ikrash wrote 08/24/2016 at 11:50 point

 Hello Guys (Mind's Forge , Dean ,_Henry and kim)
i working on same project , i want to detect human fall correctly and send alert message to android smart mobile. my app is completed bcoz i am good at java. i am new to arduino coding. so i really someone who can help me coding please!! about hardware i am using is this project are:  (Accelerometer, Ardunio Nano, Bluetooth module HC 05) . ? 

  Are you sure? yes | no

_henry wrote 08/25/2016 at 17:38 point

Hi Ikrash, it should be a lot easier (imo) to implement with an arduino.  We chose to use separate hardware instead of making an app bc elderly people may or may not want to have a fancy android or ios device on them at all time.  We are developing this as an open-source project, and a lot of the code was repurposed from other projects online.  

  Are you sure? yes | no

Kim Salmi wrote 07/21/2016 at 19:56 point

I like the simplicity and valuable outcome of this project! One minor (and cheap) improvement could be an emergency button that triggers the same alarm that the accelerometer triggers. It could be useful if the granny suffers from a "slower fall" or gets some sort o a seizure while sitting.

-Kim

  Are you sure? yes | no

_henry wrote 07/21/2016 at 23:02 point

Thank you for the kind words.  I just thought about adding a button last night.  It will trigger the same alert, but with the additional info that the button was pressed. 

  Are you sure? yes | no

Trey German wrote 05/23/2016 at 21:41 point

I dig the project!

This is actually an application I'm very interested in.  I'm developing a motion tracking wearable without fixed function and already have custom hardware developed.  Would you be interested in collaborating?  I think this would free you from worrying about hardware development and allow you to focus more on the application.

Check out my project here:

https://hackaday.io/project/11191-polymorphic-hardware

  Are you sure? yes | no

_henry wrote 08/01/2016 at 18:41 point

Sorry to respond back so late to your comment!  Your project looks really cool, and I can think of some good applications for it in the medical space!  We should definitely try to collaborate on something!

  Are you sure? yes | no

Mind's Forge wrote 04/29/2016 at 05:39 point

I'm down to help, I've worked on some similar projects:

http://www.instructables.com/id/MSP430-Accelerometer-microSD-Datalogger/

It would be interesting to try and make a analog/discrete circuit for the fall detection (like in the video, with extra parts).  Or a low cost ESP8266 version, I don't know how easy it would be to program or add a module that does SMS (never messed with that before).

Anyway, I signed up and hope to keep an eye on this project or help if I can.

Peace, Chris Toledo

  Are you sure? yes | no

_henry wrote 04/30/2016 at 18:11 point

Hey Chris, Thanks a lot!  The way I'm planning to do wireless alerts is through IFTTT.  I'm thinking that I can log a potential fall to a Google Sheet (Time and Alert).  This way, it's possible to easily share access to the alerts realtime and we can also use IFTTT to simultaneously send an email/sms/etc...

Do you think we could get an ESP8266 working with an accelerometer accurately enough? 

We're open to try any ways that we can.  We have hospital/clinic affiliations (deemo is a practicing ER doc) and a good end product can potentially do a lot of good in a real world setting!

-Henry 

  Are you sure? yes | no

Mind's Forge wrote 05/08/2016 at 18:37 point

I think we can get good enough data from an ESP8266 adc: 

I'll let you know if I try anything, there's an arduino addon for the ESP8266 that I haven't tried yet, but it seems like it would be worth checking out for this project: https://learn.sparkfun.com/tutorials/esp8266-thing-hookup-guide/installing-the-esp8266-arduino-addon

Cheers, Chris

  Are you sure? yes | no

_henry wrote 07/21/2016 at 23:03 point

Hey Chris, are you using an ADXL335?  I've got it working with that currently, but wondering if I should go with a digital accelerometer. 

  Are you sure? yes | no

DIGI wrote 04/25/2016 at 00:14 point

so how does it know if it fell over or is taken off or they simply laid down for a nap?

  Are you sure? yes | no

_henry wrote 04/25/2016 at 22:02 point

Hi Dean, 

We are going to be using the magnitude of acceleration values to determine a fall.  Basically, "how fast is the movement?"  If the acceleration is beyond a certain threshold velocity along 2 axis for a certain period of time, then we will log that as a potential fall.  In order to get the proper values, we will do real-world testing and simulated fall scenarios to collect data with the device.  The more data we collect, the more accurate we will able to detect a potential fall.  Lying down on a bed or walking are relatively slow movements compared to a sudden fall, and we think we can program the device to differentiate between these movements. 

Also, to address whether or not the device is being worn - The accelerometer has an integrated thermometer.  We will be polling that and the device will alert if the temperature is not within an appropriate range and it may or may not alert a fall when the temperature is not within a certain range (we'll figure which is better when we test it).  We will not be keeping the "wearing temperature" at tight range of internal body temperature, but rather we will experiment with a wider range of values that would be higher than expected in a clinical setting i.e. 80 F to 110 F.
We'd appreciate any feedback or ideas!
Thanks for the interest and questions!
-Henry

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates